「簡易お掃除ロボットEZ5」の自動走行プログラム。今更ながら、フローチャートをアップしておきます | 「藍染 迅(超時空伝説研究所改め)」の部屋

「藍染 迅(超時空伝説研究所改め)」の部屋

小説家ワナビーの「藍染 迅(あいぞめ じん)」です。

書籍化・商業化を目指し、各種コンテストに挑戦しながら、カクヨム、小説家になろう、エブリスタ、アルファポリスなどに作品を投稿しています。

代表作は異世界ファンタジー「「飯屋のせがれ、魔術師になる。」。

Arduino用のスケッチ作成の際に、フローチャートを作成していたのであった。
せっかくなので?、フリーのEXCELマクロで、自動的にフローを描画してくれるものを利用させていただいた。

なのであるが、EXCEL上の図形なので、どうやってブログに貼り付けたらよいのかわからずにいた。

結局、

1. 図形の範囲をコピーする。
2. Windowsのペイント・プログラムに貼り付ける。
3. トリミングして、JPEGファイルに保存する。

という方法で作成した画像ファイルを、読み込めばよいということがわかった。

やってみた。

まずは、メインのLoopに当たる「メイン・プログラム」


イメージ 1

条件式の部分は、タイマーを使って起動後10分で自動終了しようという設定。

delay(1)は、動作上特に意味はないが、ループ処理の隙間を作って、制御をシステムに渡すと良いことがあるかなあと、突っ込んでみたもの。
(昔、Windows CE上でマルチタスク環境のプログラムを組んでいた時には、効果があったが...)

で、お次は「ランダム走行」のルーチン。


イメージ 2

表示はないが、条件式ではまっすぐ下に降りる線が「Yes」。右への分岐が「No」の処理線である。

次は、「直進」。


イメージ 3

500ms、まっすぐ進み続ける。
この間に障害物を検知したら、右旋回で回避する。
(正確に言うと、最終的には「後退して、右旋回」させるようにしたので、上のフローチャートから若干改変している)

障害物がなかったら、「移動量チェック」を行う設計をしていた。
これは、廃品マウスの光学センサを組み込んで、「移動量」を把握し、移動量が一定以下の場合=何かにぶつかったり、乗り上げてしまっている場合に、直進を中止するつもりであった。
(結局、マウスの組み込みに失敗し、本機能は未実装)

次は、「右旋回」。


イメージ 4

「右折」。


イメージ 5

「左折」。


イメージ 6

「後退」。


イメージ 7

最後に、「移動量チェック」。実現していないが。


イメージ 8

非常に、単純なもんである。
次回は、これに基づいて作成したArduino Sketchをアップしておこうと思う。