--------------------------------------------------------------------- #define THRESHOLD 420 // 振動センサー信号の入力閾値約2.0V #define NOUSESIGNAL 55 // この値以下の信号は利用しない(ノイズ対策) #define BEAT 200 // 音を鳴らす長さ #define PINNO 13 // 音出力用スピーカを接続したピン番号 void setup() { } void loop() { int val ; val = analogRead(5) ; // アナログ5番ピンから振動値を読取る val = abs(val- THRESHOLD) ; // ソフト整流 if (val <= NOUSESIGNAL) noTone(PINNO) ; // 小さい振動値は音を鳴らさない else { val = map(val,NOUSESIGNAL,1023,31,4978) ; // 振動値を音の周波数値に変換 tone(PINNO,val,BEAT) ; // 音の出力 delay(BEAT) ; // この分だけ音を鳴らす } } ---------------------------------------------------------------------CIDEツールバーの赤枠部分「Upload」ボタンをクリックしてコンパイルとarduinoボードに書込みを行います。
D調整が終わっていれば、ブレッドボードや圧電スピーカに触れるだけで色々な音が鳴ると思います。
val = map(val,NOUSESIGNAL,1023,31,4978) ; // 振動値を音の周波数値に変換 if (digitalRead(5) == HIGH) val = map(val,NOUSESIGNAL,1023,31,131) ; // 低音 if (digitalRead(6) == HIGH) val = map(val,NOUSESIGNAL,1023,131,1047) ; // 中音 if (digitalRead(7) == HIGH) val = map(val,NOUSESIGNAL,1023,1047,4978) ; // 高音みたいにスイッチAを押しながら振動有れば低音域の周波数利用で、Bなら中音域、Cなら高音域 とするやり方もありでしょう。
--------------------------------------------------------------------- #define THRESHOLD 420 // 振動センサー信号の入力閾値約2.0V #define NOUSESIGNAL 60 // この値以下の信号は利用しない(ノイズ対策) void setup() { } void loop() { int val , H ; int R , G , B ; val = analogRead(5) ; // アナログ5番ピンから振動値を読取る val = abs(val- THRESHOLD) ; // ソフト整流 if (val > NOUSESIGNAL) { // 振動有りなら点灯させる H = map(val,THRESHOLD,450,0,360) ; // HSVのH値(0-360)にスケール変換を行う /* HSVのH値を各LEDのアナログ出力値(0-255)に変換する処理 */ if (H <= 120) { /* H値(0-120) 赤-黄-緑 */ R = map(H,0,120,255,0) ; // 赤LED R←→G G = map(H,0,120,0,255) ; // 緑LED G←→R } else if (H <= 240) { /* H値(120-240) 緑-水色-青 */ G = map(H,120,240,255,0) ; // 緑LED G←→B B = map(H,120,240,0,255) ; // 青LED B←→G } else { /* H値(240-360) 青-紫-赤 */ B = map(H,240,360,255,0) ; // 青LED B←→R R = map(H,240,360,0,255) ; // 青LED R←→B } /* RGBLEDを点灯させる */ analogWrite(9,R) ; // 9番ピンから赤LEDの出力 analogWrite(11,G) ; // 11番ピンから緑LEDの出力 analogWrite(10,B) ; // 10番ピンから青LEDの出力 delay(200) ; // 200msだけ点灯させる } else { /* RGBLEDを消灯させる */ analogWrite(9,0) ; // 9番ピンから赤LEDの出力 analogWrite(11,0) ; // 11番ピンから緑LEDの出力 analogWrite(10,0) ; // 10番ピンから青LEDの出力 } } ---------------------------------------------------------------------振動の大きさによりRGBLEDがいろいろな色で点灯します。
実験風景
回路図の追加(*1) 2014/02/06
【きむ茶工房ガレージハウス】
Copyright (C) 2006-2014 Shigehiro Kimura All Rights Reserved.