Ganponブログ

趣味の模型作り、ドライブ、旅行など
since Mar.2017

RC可動戦車 【番外編】 Arduinoメモリ不足対策

2019-05-21 10:40:29 | Arduino

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の方が使用するメモリサイズが大きいが、今回はゆとりが出来たので採用。