音を出してみる ~ Arduino LV8 ~
圧電スピーカー(または圧電サウンダーとも呼ぶ)を使って音を出してみる。
ArduinoのどれかのデジタルピンとGNDの間に圧電スピーカーを接続するだけの簡単な回路。
ピーと音が鳴るだけだが、圧電スピーカーを使用すると簡単に音を出せる。
GNDと9番ピンの間に圧電スピーカーを配置するだけ。
【 必要な部品 】
- 圧電スピーカー
- ジャンパワイヤー 2本
- Arduino Uno
【 スケッチ 】
#define PIEZO 9 // 遅延時間 #define DELAY_TIME 1 void setup() { pinMode(PIEZO, OUTPUT); } void loop() { digitalWrite(PIEZO, HIGH); delay(DELAY_TIME); digitalWrite(PIEZO, LOW); delay(DELAY_TIME); }
音=振動 なのですばやくON、OFFを繰り返すと圧電スピーカーを使って振動を作り出すことが出来るのだ。
1Loop中にdelay(1)が2回繰り返されているので、波形は以下のようになっている。
2ミリ秒の周期の波形だ。これを周波数に直すと以下になる。f=1/T (f:周波数、T:周期)
f = 1 / 0.002 = 500(HZ)
delay()による時間はあまり正確ではないので、このスケッチだと約500HZの音が出ている事になる。(delay(2)にすると半分の250HZになる)
先の例では、delay()を使っていたため、いちばん高い周波数でも500HZまでしか作れなかった。より高い周波数を出すには、delayMicrosecondsを使えば良い。
先のスケッチの数値を少し変更&delay()をdelayMicrosecondsにしただけだ。
#define PIEZO 9 // 遅延時間 #define DELAY_TIME 500 void setup() { pinMode(PIEZO, OUTPUT); } void loop() { digitalWrite(PIEZO, HIGH); delayMicroseconds(DELAY_TIME); digitalWrite(PIEZO, LOW); delayMicroseconds(DELAY_TIME); }
1Loop中にdelayMicroseconds(500)が2回繰り返されている。計算方法は、f=1/T (f:周波数、T:周期) なので以下のようになる。
f = 1 / 0.001 = 1000(HZ)
1000HZ = 1KHZ の周波数を出している事になる。
ちょっと工夫してみる。
ループ処理で何回か処理を繰り返し音を変えてみる。
#define PIEZO 9 // 遅延時間 #define DELAY_TIME1 400 #define DELAY_TIME2 500 void setup() { pinMode(PIEZO, OUTPUT); } void loop() { int i; for (i=0; i<400; i++) { digitalWrite(PIEZO, HIGH); delayMicroseconds(DELAY_TIME1); digitalWrite(PIEZO, LOW); delayMicroseconds(DELAY_TIME1); } for (i=0; i<200; i++) { digitalWrite(PIEZO, HIGH); delayMicroseconds(DELAY_TIME2); digitalWrite(PIEZO, LOW); delayMicroseconds(DELAY_TIME2); } }
Leave a comment