2017年01月14日
ブザーの回路図とプログラム補正
おはようございます
ハロです
先日挙げた回路図なんですが
ちょっとわかりずらいところがあったようなので
補間します
例のピンクの部分ですね
ブレッドボードは座標みたいに、端にアルファベットと数字があります
なんで、E15とE18を接続してください
前回挙げた回路にも、よく見ると数字が10刻みぐらいで書いてあるので
参考にしてください
実際に作った物の写真を挙げますね



電源部分のスイッチをブレッドボードに刺しておきました
あとは適当に箱にしまうだけですね
あと・・・・実際に作ってみてプログラムのミスがありました><
なんで、修正verを載せておきます
int sw0 = 4; //タクトスイッチの信号を読み込む
int sw1 = 0; //タクトスイッチの信号をしまう場所
int sw2 = 0; //監視用
int val = A7; //ボリュームを読み込むピン
int val1; //ボリュームの信号をしまう場所
int valsw = 9; //ボリュームのスイッチの信号
int valsw1; //ボリュームのスイッチの信号をしまう場所
int buza = 2; //ブザーの出力(2番)
int swled = 6; //スイッチのLED出力
void setup() {
pinMode(sw0, INPUT);
pinMode(val, INPUT);
pinMode(valsw1, INPUT);
pinMode(buza, OUTPUT);
pinMode(swled, OUTPUT);
Serial.begin(9600);
}
void loop() {
sw1 = digitalRead(sw0); //スイッチの信号を入れる
valsw1 = digitalRead(valsw); //ボリュームの信号を入れる
val1 = analogRead(val); //ボリュームの変化量を入れる
val1=val1*6;//val1にしまった数値を6倍する(ここの倍数は変えていい)
Serial.println(val1);//シリアル通信でval1の数値を確認できる
if (sw1 == LOW && valsw1 == LOW) {//スイッチなしでボリュームのスイッチが入ったら
delay(2000); //2秒待つ
buza1(); //buza1を呼び出す
}
else if (sw1 == HIGH && valsw1 == HIGH) {//スイッチが押されたら
analogWrite(swled, 128); //swledを128の出力・・大体1.2vぐらい
sw2 = 1; //sw2の中に1を入れる
}
else if (sw1 == LOW && sw2 == 1) { //スイッチが離されて、sw2が1だったら
delay(val1); //スイッチからの待つ時間指定
buza1(); //buza1を呼び出す
digitalWrite(swled, LOW); //swledを消す
sw2 = 0;
}
}
void buza1() { //buzaの中身これを上で呼び出す
digitalWrite(buza, HIGH);
delay(1000);
digitalWrite(buza, LOW);
delay(2000);
digitalWrite(buza, HIGH);
delay(1000);
digitalWrite(buza, LOW);
}
変更点は、通常使用時のdelayが入ってなくて
遅れて起動するってのができてませんでした
あと、電圧確認はやっぱ電力の無駄なのでつけませんでした
LED付スイッチは、左上のLEDのところを繋げれば大丈夫です
では、参考になれば!!
ハロです
先日挙げた回路図なんですが
ちょっとわかりずらいところがあったようなので
補間します
例のピンクの部分ですね
ブレッドボードは座標みたいに、端にアルファベットと数字があります
なんで、E15とE18を接続してください
前回挙げた回路にも、よく見ると数字が10刻みぐらいで書いてあるので
参考にしてください
実際に作った物の写真を挙げますね
電源部分のスイッチをブレッドボードに刺しておきました
あとは適当に箱にしまうだけですね
あと・・・・実際に作ってみてプログラムのミスがありました><
なんで、修正verを載せておきます
int sw0 = 4; //タクトスイッチの信号を読み込む
int sw1 = 0; //タクトスイッチの信号をしまう場所
int sw2 = 0; //監視用
int val = A7; //ボリュームを読み込むピン
int val1; //ボリュームの信号をしまう場所
int valsw = 9; //ボリュームのスイッチの信号
int valsw1; //ボリュームのスイッチの信号をしまう場所
int buza = 2; //ブザーの出力(2番)
int swled = 6; //スイッチのLED出力
void setup() {
pinMode(sw0, INPUT);
pinMode(val, INPUT);
pinMode(valsw1, INPUT);
pinMode(buza, OUTPUT);
pinMode(swled, OUTPUT);
Serial.begin(9600);
}
void loop() {
sw1 = digitalRead(sw0); //スイッチの信号を入れる
valsw1 = digitalRead(valsw); //ボリュームの信号を入れる
val1 = analogRead(val); //ボリュームの変化量を入れる
val1=val1*6;//val1にしまった数値を6倍する(ここの倍数は変えていい)
Serial.println(val1);//シリアル通信でval1の数値を確認できる
if (sw1 == LOW && valsw1 == LOW) {//スイッチなしでボリュームのスイッチが入ったら
delay(2000); //2秒待つ
buza1(); //buza1を呼び出す
}
else if (sw1 == HIGH && valsw1 == HIGH) {//スイッチが押されたら
analogWrite(swled, 128); //swledを128の出力・・大体1.2vぐらい
sw2 = 1; //sw2の中に1を入れる
}
else if (sw1 == LOW && sw2 == 1) { //スイッチが離されて、sw2が1だったら
delay(val1); //スイッチからの待つ時間指定
buza1(); //buza1を呼び出す
digitalWrite(swled, LOW); //swledを消す
sw2 = 0;
}
}
void buza1() { //buzaの中身これを上で呼び出す
digitalWrite(buza, HIGH);
delay(1000);
digitalWrite(buza, LOW);
delay(2000);
digitalWrite(buza, HIGH);
delay(1000);
digitalWrite(buza, LOW);
}
変更点は、通常使用時のdelayが入ってなくて
遅れて起動するってのができてませんでした
あと、電圧確認はやっぱ電力の無駄なのでつけませんでした
LED付スイッチは、左上のLEDのところを繋げれば大丈夫です
では、参考になれば!!
ありがとうございました!
ピンクの部分良くわかりました。
同じ電圧のところは色同じにしてます
明日箱買ってきます