#019 【49歳から始めるArduino -黒帯を目指す】黄帯編6 音を出すぞ

#019 【49歳から始めるArduino -黒帯を目指す】黄帯編6 音を出すぞ


 p86の圧電スピーカーを利用です。ここではdelayからdelayMicrosecondsを利用して、さらに高い音を出します。p88のスケッチではdelayは1ですね。これを0.1に変更すると、以前とトーンが変わりました。なんとなく先ほどより高音のような気がしますが、微妙にスピーカーが接触不良が原因ようなビビっているような感じがあります。0.01に変えても同じ音でした。

 利用するスピーカーはこのようになっています。足についている紙を剥がすのに結構気を使いました。引っ張ると足が抜けてしまいそうな気がします。慎重に行きましょう。
p88_Arduino.jpg


おまけ: delay 1とdelayMicroseconds 1000は同じです。そして同じ音でした。
delay 0.1 とdelayMicroseconds 100は同じです。が音は一緒ではありませんでした。となるとdelayでは1が最小有効数値のようです。delay 1とdelay 0は同じ音でした。delay 0 とdelayMicroseconds 0は同じ音ではありませんでしたので、一体どうなっているのでしょうか。

 これは手元にあった、18年前の音が出る誕生日カードに入っていたものです。たまたま見つけました。機械式スイッチでなるようになっています。今はCdsですよね。抵抗値を測ってみると7.5Ωありました。ちなみにキットの物は抵抗値が計測出来ず。なぜか絶縁状態です。
  
p89_arduino.jpg


p91のスケッチ3では音を出しています。これだけでは面白くないので、ドレミを出して見ましょう。ネットを探せば、スターウォーズの行進曲が見つかります。確かIDEのサンプルコードにあった気がしたのですが、見つかりませんでした。ドレミの周波数はここを参照するといいでしょう。自分ためのメモを書いておくと、


Hz
Delay Time
32.703
15277
36.708
13621
41.203
12135
ファ
43.654
11454
48.999
10204
55.000
9090
61.735
8099
65.406
7645

スケッチは最初の#defineのところだけ写しておきます。

#define PIEZO 13
#define DELAY_TIME_DO 1527
#define DELAY_TIME_RE 1362
#define DELAY_TIME_MI 1213
#define DELAY_TIME_FA 1145
#define DELAY_TIME_SO 1020
#define DELAY_TIME_RA 909
#define DELAY_TIME_SI 810
#define DELAY_TIME_DOO 765
#define LOOP_TIME 400

 数値を色々試して見ましたが、これよりも桁が多い(例えばドを15277)と上手に再生出来ませんでした。スピーカーの仕様かもしれません。考えてみると小さいなスピーカーですので、高音しか再生できないとしてもおかしくありませんね。最後のLOOP_TIMEはforでiをカウントさせる分の変数です。教科書では200とありましたが、再生を繰り返しながら、設定すると良いと思います。それとこのドレミファですが、なんとなくSIが違うような気がします。本当の階調にするには調整が必要です。

#020 【49歳から始めるArduino -黒帯を目指す】黄帯編7 アナログ入力の挙動を学び光センサーを理解する



  • 参考にしている本ははこちら: arudinoで電子工作を始めよう
  • 高橋隆雄先生のブログはこちら: 高橋隆雄の何やかんや
  • 利用しているキットはこちら:Arduino エントリーキット(Uno版)- Physical Computing Lab と Arduino拡張キット- Physical Computing Lab
  • コメント