こんばんは!
今回は圧電スピーカーを使っていこうと思います。
概要
圧電スピーカーでドレミファソラシドを鳴らす。
音を上手く組み合わせて某コンビニのあの音を鳴らす
使用するもの
・Arduinoメインボード(https://amzn.to/2vkPIUH)
・USBケーブル(https://amzn.to/2UHhntl)
・ブレッドボード(https://amzn.to/38eNi8u)
・ジャンパワイヤ (https://amzn.to/39uBU8T)
・圧電スピーカー(https://amzn.to/2Fnfuv0)
圧電スピーカーについて
電極に信号電圧を加えることにより圧電体が歪み、その振動を音(空気の振動)として聞くものである。小型で消費電力が少ないことから、電子ブザーなどの電子機器に多用されている。周波数特性はあまり良くなく、出力は小さい。
出展:Wikipedia
とあります。
簡単にいうと電圧の振動を空気の振動に変えるから音が鳴るというものです。
電圧の振動を変えることにより(電圧を変えることにより)、空気の振動数が変わり、高い音や低い音など、音の違いが生まれます。
今回使用する圧電スピーカーは赤と黒の2本の足があります。
黒はGND、赤はデジタルピンと接続します。
手順
まず、ハード側からやっていきます。
図のように圧電スピーカーとArduinoを接続します。
Arduino | 圧電スピーカー |
GND | 黒線 |
D11 | 赤線 |
これでハード側は終わりです。
次にプログラムを書いていきます。
Arduino IDEを開いて次のコードを書き込んでいきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #define BEATTIME 300 #define PIN 11 #define DO 262 #define RE 294 #define MI 330 #define FA 349 #define SO 392 #define RA 440 #define SI 494 #define HDO 523 void setup() { } void loop() { tone(PIN,DO,BEATTIME) ; // ド delay(BEATTIME) ; tone(PIN,RE,BEATTIME) ; // レ delay(BEATTIME) ; tone(PIN,MI,BEATTIME) ; // ミ delay(BEATTIME) ; tone(PIN,FA,BEATTIME) ; // ファ delay(BEATTIME) ; tone(PIN,SO,BEATTIME) ; // ソ delay(BEATTIME) ; tone(PIN,RA,BEATTIME) ; // ラ delay(BEATTIME) ; tone(PIN,SI,BEATTIME) ; // シ delay(BEATTIME) ; tone(PIN,HDO,BEATTIME) ; // ド delay(BEATTIME) ; } |
プログラムの説明をしていきます。
まず、音階と周波数[Hz]の対応表で
ドは261.626≒262[Hz]…という風に、ドレミファソラシドの音階と周波数を調べます。
それをDefine文で
#define DO 262
のように定義します。
今回はtone関数というものを使って音を鳴らしています。
tone関数は
tone(ピン番号,出力する周波数、出力時間)のように記述します。
周波数を順番に変えていくことにより、ドレミファソラシドの音を鳴らしています。
では、実際にマイコンボードに書き込んで聞いてみてください。
ちなみにtone関数は和音を出すことができないため、delay(BEATTIME)を記述しています。
delay(BEATTIME)を記述しないと意図しない音が出ると思います。試しにやってみてください。
と、ここで「ドレミファソラシドが全て出せるのなら何かメロディを流せるのでは?」と思い、1つだけ作ってみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | #define BEATTIME 310 #define PIN 11 #define LA 880 #define FA 740 #define MI 659 #define RE 587 #define DLA 440 void setup() { } void loop() { //ファ#レラレミララミファ#ミラレ tone(PIN,FA,BEATTIME) ; // ファ# delay(BEATTIME) ; tone(PIN,RE,BEATTIME) ; // レ delay(BEATTIME) ; tone(PIN,DLA,BEATTIME) ; // dラ delay(BEATTIME) ; tone(PIN,RE,BEATTIME) ; // レ delay(BEATTIME) ; tone(PIN,MI,BEATTIME) ; // ミ delay(BEATTIME) ; tone(PIN,LA,BEATTIME) ; // ラ delay(BEATTIME*2) ; tone(PIN,DLA,BEATTIME) ; // dラ delay(BEATTIME) ; tone(PIN,MI,BEATTIME) ; // ミ delay(BEATTIME) ; tone(PIN,FA,BEATTIME) ; // ファ# delay(BEATTIME) ; tone(PIN,MI,BEATTIME) ; // ミ delay(BEATTIME) ; tone(PIN,DLA,BEATTIME) ; // dラ delay(BEATTIME) ; tone(PIN,RE,BEATTIME) ; // レ delay(5000); } |
コピー&ペーストしてマイコンボードに書き込んでみてください。
あの曲が聞こえると思います。
まとめ
今回は圧電スピーカーを使ってみました。
様々な利用用途があるとは思いませんが、手軽に扱えて、圧電スピーカーは安価なので一度やってみると面白いと思います。
ではまた!