2017年02月06日
みんなの意見でのブザー回路
こんいちは、ハロです
またブザーの話です
先日の富士見で、いろいろな意見を聞きまして
ちょっと改良してみました
良くしてるのか?改良なのか
さてさて
今回は、電源のスイッチを本来の使い方で使ってみて
ループで動くところは、ちょっと変えてみようと
スイッチ付き可変抵抗器が電源になっていて
そこからは、いつもと同じで
振り切って、右に回すと、ループって感じ
まずは、例のごとくの回路図
わかりにくいと思ったので、arduinoを外した状態でのも
スイッチの部分にLEDがありますが
スイッチにLEDが入っているタイプなんで気にしないでください
あとは、実物のを
こんな感じです
スイッチの部分わかります?
ちなみにアノードが左側です
はんだ付けをなるべく少なくして、スイッチ付き可変抵抗器だけ
ピンヘッダを6ピンつけてみました
それ以外は、電源部のところが2か所だけかな
なるべく少なく
あと、箱にしまうのは今回はやめました
いい箱が見つからないってことで
あとは、各自 箱を見つけてくださいってことで
あ・・・あと、ブレッドボードの下の部分
こんな感じで切っちゃいました
スイッチ付き可変抵抗器の邪魔なんでね
もともととれる場所なんで両面テープのところを切れば外れます
以下にプログラム
int sw0 = 6; //タクトスイッチの信号を読み込む
int sw1 = 0; //タクトスイッチの信号をしまう場所
int sw2 = 0; //監視用
int val = A5; //ボリュームを読み込むピン
int val1; //ボリュームの信号をしまう場所
int buza = 4; //ブザーの出力(2番)
int swled = 9; //スイッチのLED出力
void setup() {
pinMode(sw0, INPUT);
pinMode(val, INPUT);
pinMode(buza, OUTPUT);
pinMode(swled, OUTPUT);
Serial.begin(9600);
}
void loop() {
sw1 = digitalRead(sw0); //スイッチの信号を入れる
val1 = analogRead(val); //ボリュームの変化量を入れる
val1 = val1 * 6; //val1にしまった数値を6倍する(ここの倍数は変えていい)
Serial.println(val1);//シリアル通信でval1の数値を確認できる
if (val1>=6000) {//6000を超えてたら
delay(2000); //2秒待つ
buza1(); //buza1を呼び出す
}
else if (sw1 == HIGH) {//スイッチが押されたら
analogWrite(swled, 64); //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);
}
またブザーの話です
先日の富士見で、いろいろな意見を聞きまして
ちょっと改良してみました
良くしてるのか?改良なのか
さてさて
今回は、電源のスイッチを本来の使い方で使ってみて
ループで動くところは、ちょっと変えてみようと
スイッチ付き可変抵抗器が電源になっていて
そこからは、いつもと同じで
振り切って、右に回すと、ループって感じ
まずは、例のごとくの回路図
わかりにくいと思ったので、arduinoを外した状態でのも
スイッチの部分にLEDがありますが
スイッチにLEDが入っているタイプなんで気にしないでください
あとは、実物のを
こんな感じです
スイッチの部分わかります?
ちなみにアノードが左側です
はんだ付けをなるべく少なくして、スイッチ付き可変抵抗器だけ
ピンヘッダを6ピンつけてみました
それ以外は、電源部のところが2か所だけかな
なるべく少なく
あと、箱にしまうのは今回はやめました
いい箱が見つからないってことで
あとは、各自 箱を見つけてくださいってことで
あ・・・あと、ブレッドボードの下の部分
こんな感じで切っちゃいました
スイッチ付き可変抵抗器の邪魔なんでね
もともととれる場所なんで両面テープのところを切れば外れます
以下にプログラム
int sw0 = 6; //タクトスイッチの信号を読み込む
int sw1 = 0; //タクトスイッチの信号をしまう場所
int sw2 = 0; //監視用
int val = A5; //ボリュームを読み込むピン
int val1; //ボリュームの信号をしまう場所
int buza = 4; //ブザーの出力(2番)
int swled = 9; //スイッチのLED出力
void setup() {
pinMode(sw0, INPUT);
pinMode(val, INPUT);
pinMode(buza, OUTPUT);
pinMode(swled, OUTPUT);
Serial.begin(9600);
}
void loop() {
sw1 = digitalRead(sw0); //スイッチの信号を入れる
val1 = analogRead(val); //ボリュームの変化量を入れる
val1 = val1 * 6; //val1にしまった数値を6倍する(ここの倍数は変えていい)
Serial.println(val1);//シリアル通信でval1の数値を確認できる
if (val1>=6000) {//6000を超えてたら
delay(2000); //2秒待つ
buza1(); //buza1を呼び出す
}
else if (sw1 == HIGH) {//スイッチが押されたら
analogWrite(swled, 64); //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);
}
わかりにくいところあったら教えてください
白と紫が重なっている部分があるんで
実物の写真を参照してください
この部分をどうにかしたかったな
見よう見まねで作ってみたのですが
ブザーからかすかに音が聞こえる程度です。配線は間違いないと思うのですが…。
原因は何だと思われますか?
実物の写真を見るとわかるとも運ですが
トランジスタの向きが逆なんです
なんで、エミッタとベースが逆に・・
たぶんそこを直すとなると思います
返事遅くなってしまって申し訳ありません