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

 

 

 



 



5 コメント

コメント日が  古い順  |   新しい順
Unknown (hajime)
2019-05-25 11:48:24
完成動画ではわからないご苦労があるのですね。
タミヤの昔のモーターライズのリモコン戦車しか知らない私ですが、これからの記事も楽しみにしております。
返信する
Unknown (Ganpon)
2019-05-25 15:13:45
hajimeさん、こんにちは。
簡単に組みあがるのも良いのですが、いろいろ改善点が出てくるのも、また楽しいものです。
その都度、いろいろ試して、解決できた時は、より充実感が有ります。
模型製作でも、同じですよね。
返信する
Unknown (パンク)
2019-05-30 12:40:46
始めて書き込みさせていただきます。
可動戦車を作るに当たってとても参考になる記事をいつもありがとうございます。
アルディーノのメモリ不足対策てすが、既に対応されたようですがもっと簡単にIRRmoteで使っていないデコード乃処理を削ることでいくらか容量確保できますよ。
コンパイルスイッチで切り消えできます。
既にごぞんじでしたらご容赦ください。
返信する
メモリ不足対策 (Ganpon)
2019-05-30 17:33:22
パンクさん、こんにちは。
アドバイス、有難うございます。
その方法は、以前にやってみたことが有りますが、46バイト程度しか軽減できませんでした。
1000バイト以上軽減できると良いのですが、私のやり方が上手くなかったのかもしれません。
今後も良い方法が有れば、教えてください。
返信する
追伸: (Ganpon)
2019-05-31 01:32:03
パンクさん、こんばんは。
IRremote.hのバージョンはいろいろありますが、
私は下記のものを使っています。
Version 0.1 July, 2009
Copyright 2009 Ken Shirriff

こちらのものは、サイスが大きいので使っていません。
Version 2.0.1 June, 2015
Copyright 2009 Ken Shirriff

返信する

コメントを投稿