音を鳴らしてみよう

第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」を使いこなそうと思います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)