Arduinoの落とし穴
Arduinoによるヤマトの電飾音源置き換えの作業が一段落ついた。
回路はコントロールボックスの中に入れることにしたのでスペースには大分余裕がある。手抜きでブレッドボードで作ってそのまま入れてしまうことにした。
配線はこれだけ。うーん、簡単。
それを箱に入れて線を引き回して出来上がり。
せっかくArduinoから直接コントロールできるプレイヤーが繋がっているのだから、もっと色々な音を出したい。
そう思ったのだが、ボックスのボタンを際限なく増やすこともしたくない。
ということで、これまでの波動砲(赤)とエンジン(青)の2つの他に白のボタンを増設して、
1回押しなら艦内警報、
2回押しなら被弾、
長押しならBGM(短く編集した10曲ほどが順番にかかる)
という形にした。
これがまた結構楽しい。
ところで工作を進めるうちにArduinoもどこまでも楽とは言えないなあと思わされた。
この1回押し・2回押し・長押しの判定のコードは自分で書くと大変なのだが、検索すると複数の人がサンプルコードを公開してくれている。
Arduinoさすがだよ、自分で考えなくて良すぎてこれじゃ勉強にならなくてやばいよ・・・と思いながらも、ありがたくコピーさせてもらった。
ところがなぜかうまく動かない。色々いじっているうちに変数のデータ型の問題だったとようやくわかった。
コードを書いた人にとっては、型に何を指定すべきかは当たり前のことすぎて説明がなかったのだろう。
しかしこれは少なくとも公式リファレンスをよく読みながらコードを一行一行追えば解決できることなのでだまだなんとかなる。
問題は、そうした公式リファレンスを読むだけでは片付かないトラブルに見舞われることだ。急にプログラムの書き込みができなくなったり、文法的に間違っていないはずのステートメントがコンパイルできないと弾き返されたり、A6,A7でプルアップが効かなかったり。あれえ、なんでだ?と苦労をするうちに、Arduinoの正体がちらりと見えてきた気がした。
前にも書いた通り、PICに比べればArduinoは大分楽だ。目的地に辿り着くためにPICという道を選べば、謎の言語で書かれた地図だけを頼りに複雑に入り組んだ見通しの悪い道を辿らなくてはならない。
それにくらべればArduinoの道はすべてまっすぐ平らに舗装されていて、手渡される地図もスマホナビ並みに親切だ。ところが意気揚々と歩きだすと、いくらも行かないうちににスポッ、ズボッと落とし穴にはまってええっ!?と面食らう。
PICの地図は難しくて分かりにくいかわりに全てがそこに書かれているのに対し、Arduinoの地図は、分かりやすいかわりに細かいところが書かれていない、そんな感じだ。
それでもArduinoのありがたいところは、必ず自分の前に同じ穴にハマった人がいて、ググると穴の脱出方法がほぼ間違いなく見つかるということだ。
今回私がはまった穴もググって脱出してきた。そのうち慣れると無意識に穴を避けて歩けるようにもなるのだろう・・・が、しばらくやらないでいたら、またたちまち忘れてまんまとはまり、あっそうだったとか思うんだろうなあ。
それはそれとして、このBGMがかかるやつ、楽しいです。
いずれは無線化してスマホからの操作とかもやってみたい。