私は、小中学生にプログラミングなどを教えるボランティアグループのメンバーになっているのですが、このグループでは今年度、小中学生に電子回路とマイクロビットプログラミングを教える、通年制のワークショップを実施しています。
このワークショップでは、参加者に自由に作品をつくってもらっているのですが、ネタを思いつかない子供のために、講師からも作例をいくつか紹介しています。
その中に「マイクロビットロボカー」があります。
ふたつのモーターで動く車です。マイクロビットでモーターを制御することで、前進、後進、右折、左折など、自由に動かすことができます(記事は こちら)。
今回、このロボカーで作品をつくっている子供から、「ロボカーから音をならしたい」という要望がありました。
ワークショップでマイクロビットを使う際には「MI:電源ボード」を取り付けていたので、電源ボードに搭載されたスピーカーで音をならすことができていました。
ただ、マイクロビットをロボカーに取り付ける時には電源ボードを外し、「マイクロビットブレイクアウトボードキット」に差し込んで使うことになるため、電源ボード搭載のスピーカーは使えません。
また、マイクロビットv2にはスピーカーが搭載されていますが、今回使用しているマイクロビットはv1.5のため、スピーカーはありません。
そのため、以下のような「圧電スピーカー」をブレイクアウトボードに取り付けることにしました。
簡単にするため、できれば余計な配線などは使わず、圧電スピーカーをブレイクアウトボードのソケットに直接差し込みたいと思います。
ブレイクアウトボードのソケットのピン配列はこのようになっています。
スピーカーのふたつの端子は、マイクロビットの「信号端子」と「GND」につなぎますが、信号端子のうち「P20」「P19」はGNDのすぐ近くにあり、スピーカーを直接差し込みやすそうです。
ただ、MakeCodeエディタで音声出力端子を変更しようとしたところ、「P20」や「P19」は表示されず、これらの端子を音声出力用として指定することはできませんでした。
その次に「GND」から近い「P16」〜「P13」は現状、モータードライバとの接続に使われており、これらを音声出力用として使うことはできません。
結局、GNDから最も近くて使用可能な信号端子は「P12」になりますが、「GND」と「P12」はそこそこ離れており、スピーカーの端子を直接差し込むのは少々やりにくそうです。
そのため、スピーカーのふたつの端子を両方とも信号端子につなぎ、一方は常時「0V」を出力することにしました。
スピーカーの端子をブレイクアウトボードの「P8」と「P12」に差し込みます。
プログラムでは、「最初だけ」で「音をならす端子を P12 にする」「デジタルで出力する 端子 P8 値 0」とします。
これで、マイクロビットロボカーから音をならすことができるようになりました。
なお、見た目が少し不恰好にはなりますが、「MI:電源ボード」からボタン電池を取り外し、「電源ボードの GND」と「ブレイクアウトボードの GND」、「電源ボードの 0」と「ブレイクアウトボードの 0」をワニ口クリップなどでつなぐことで、電源ボード搭載のスピーカーから音をならすこともできます。
この場合は、音声出力端子を変更したりする必要はなく、これまでと同様のプログラムで音をならすことができます。