Arduinoでマイクロマウス Arduinoの開発環境でマイクロマウスを動かす教材を考え中. 基板の外形も以前作ったH8バージョンの寸法と同じで自作できるように片面で設計中. Arduinoのピン数が少ないのでDIP-SWもLEDも減らし,OPAMPも無くしたのに, なぜか片面で収めることがかなり厳しいです.H8バージョンは結構試行錯誤したから, 今度も同じ位時間がかかるかも...−追記− 片面,ジャンパー3本でなんとかできました.幅がちょっと厳しいところがありますが. 来週再確認して基板を自作して組み立ててみます.
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− 基板作製 エッチング,穴あけまでは上手くできたのですが,友人にレジスト塗った方が良いって 言われたの思い出して,初めて塗ってみました. 塗る前↓
塗った後に電極部分を削ったもの↓
グリーンレジストは普通の塗料と違ってなかなか綺麗に塗れません. また,はがすのも結構大変です.カリカリと削る感じじゃなくて,薄くてやわらかい皮膜を そぎ落とす感じです.結構根気のいる作業でした. 穴あけは最後のほうがいいみたいです.でないと穴あけの際のバリが邪魔になってレジストを はがすのが結構大変になります. ハンダがブリッジしない点はいいんでしょうが作業は大変.部品実装終わった後に保護皮膜 として塗るのがいいかも. −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− 昨日作った基板に部品を集めてはんだ付け.
ボディに乗せてこんな感じになる予定.
USB-シリアル変換を使って書き込みます.こんな感じで書き込み動作まで確認.
USB-シリアル変換はスイッチサイエンスさんから購入したものです. 5V動作Arduino Pro/Pro Mini向け小型USB-シリアルアダプタ http://www.switch-science.com/products/detail.php?product_id=342 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− ハード完成 Arduinoマイクロマウス,ハードが完成しました. 使ってるマイコンATmega328PにArduinoのブートローダーが乗ってますので, Arduinoの開発環境が使用できます. 斜めから↓
上から↓
センサの値を読むには,シリアル通信でPCに値を表示させます.
赤はリセット, 黄色いスイッチを使ってモード切替をして, 緑でスタート. (信号機を意識した配色) Arduinoマイクロマウス,右90度ターンの動画 後は,センサやステップ数やしきい値の調整をして,H8から移植したプログラムのバグ取り をしたら完成. −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− ソフトが完成しました. 最初は,原因不明の暴走が起こり,どうやら割込みを使ったモータの回転時の空ループ などでArduinoのコンパイラが勝手に最適化して動作不具合が生じてことが分かり, delay(1)を空ループ内に入れたら以前のH8版とほとんど同じで動きました. 主な変更点は, 上記の通り,空ループにdelay(1)を追加, 初期設定をsetup()に移動, main()内のループを,loop()に移動, H8のTimerA割込みをMStimer2()に変更, 入出力をArduinoに合わせて書き換え,アナログ入力が簡単に書けました. 壁との距離の調整がもう少しですが,3×3迷路の探索と最短の動画をあげます. Arduinoマイクロマウスの動画. −追記− 以下のURLで書かれてることからも,Arduinoのコンパイラの最適化オプションを何とか しようとするより,delay(1)を入れることで問題解決したので,これでよしとします. http://d.hatena.ne.jp/studio_k/20100306/1267865563 - 追記2 - 検索したら既知の問題のようで,割込み内で使う変数をvolatileで定義しておけば 良いことが分かりませいた. volatileで定義しないして,delay(1)は消して,本当に完成! −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− 広告↓
電脳Arduinoでちょっと未来を作る
Arduinoをはじめよう
サンハヤト【GR-S304】ハンダマスキング剤グリーンレジスト 290ml