2019-05-21
これまで製作したRC可動戦車のArduinoのスケッチ(プログラム)がメモリー容量ギリギリで不安定動作をすることが有り、対応策を検討しています。
今回のブログはArduino初心者の開発の覚書であり、あまり参考にはならないかもしれません。
対策1. スケッチサイズをコンパクトにする。
工夫してみましたが、私の知識ではこれ以上のダウンサイジングは難しいです。
対策2. メモリ容量の大きいArduinoを使う。
1/35スケールの戦車に内蔵する前提で対策2ができるArduinoは知りません。
Arduino Mega 2560では形状サイズが大きすぎます。
対策3. 作業を分割する。
Arduinoを2台使い、シリアル通信で相互データをやり取りして、作業分割を実施する。
通信方法はいろいろありそうですが、簡単な方法で試してみます。
概略:
メインユニット:PS3コントローラの命令を受信して、モータ、LEDを動作させる。
サブユニット :赤外線発光LED、受光素子にてIRバトルの発光、受光をする。
MP3プレーヤーで効果音発生をする。
ArduinoのRX、TXピンで両者間の通信をシリアルで実施。
当然ですが、双方のデータ転送速度は揃えておきます。(9600bpsにしました)
手持ちのArduinoの都合から、5Vと3.3VのPro Miniを使用するため、電圧レベル整合が必要です。
通常はレベル変換モジュールなどを介入させるのでしょうが、簡略的に2KΩの抵抗を入れて接続しました。
これはDFplayerとの通信ラインに1kΩを挿入する方法で実績が有ります。
追加仕様:エンジン始動音、アイドリング音を発生。
走行時のエンジン音などは、音源を取得出来ていないので見送り。
今回、アイドリング音発生のためにリピート再生をさせるのでDFplayerのライブラリーを変更。
DFPlayer_Mini_Mp3.hでは上手くリピート再生できなかったので、DFRobotDFPlayerMini.hに変更。
DFRobotDFPlayerMini.hの方が使用するメモリサイズが大きいが、今回はゆとりが出来たので採用。