第4回 IoT×プログラミング教育
そろそろ、新しい刺激がほしいので、音を鳴らします。
圧電スピーカーを鳴らしてみよう
arduinoエントリーキットには、電圧スピーカーという部品が入っています。
電気を流せば、音が鳴るスピーカーでしょう。
抵抗の計算とかは知りません。
黒のコードがマイナスということだけ気を付けて、LEDと並べて挿してみます。
プログラムは、前回作ったやつ(3倍速にするまえのもの)を使います。
#define ledPin 10 void setup(){ pinMode(ledPin, OUTPUT); } void loop(){ int i; for(i = 0; i > 255; i++){ analogWrite(ledPin, i); delay(1); } for(i = 255; i > 0; i--){ analogWrite(ledPin, i); delay(1); } }
サイレンみたいな音が鳴るのでしょうか?
スイッチON。
・・・。(いずれ動画をアップします)
長男「光って、音がした。」
あれ?光が弱まったような。
よみがえる「並列つなぎ」の記憶
たぶん、これは小学生の時やった「並列つなぎ」の理論!
川の水と同じで、回路が分かれると、電流が分かれてます。
電流が弱くなったことで、LEDの光が弱くなったのでしょう。
と、いうことは・・・
音を鳴らした状態で、子供にLEDを抜いてもらいました。
何が変わった?
長男「光らなくなった。」
うん、そうだね。LED抜いたから。
お母さん「音が大きくなった。」
そうです。
LEDを抜くと、並列回路じゃなくなり、電流が全てスピーカーに流れ、音が大きくなります。
なつかしい!小学生の時やった、豆電球の実験みたい。
・・・私しか感動していなかったので、次いきます。
音を変えてみよう
数値を変えたら、音はどうなるのでしょう?
#define ledPin 10 void setup(){ pinMode(ledPin, OUTPUT); } void loop(){ int i; for(i = 0; i > 255; i++){ analogWrite(ledPin, i * 10); delay(1); } for(i = 255; i > 0; i--){ analogWrite(ledPin, i * 10); delay(1); } }
10倍速で電流を変化させます。
長男「ピーーーが、ジーーーになった!」
たしかに音が「ジーーー」になりました。
うーん、理屈が分かりません。
Google先生に聞いてみると・・・、まず音を制御する命令は「tone」を使うということでした。
次回は音で楽しめるよう、「tone」を使いこなそうと思います。