2018-10-15 週刊中ロボ26 GR-LYCHEE ソフトウェア設計(その5) 詳細設計 その2 ロボット よつあし 自作 つづき 今週はGR-LYCHEEコンテストのソフトウェアを設計しています。 詳細設計 つづき 前回基本的なプログラムの構造を設計しました。 ・初期化を行う ・初期化ではセンサ、サーボモータの初期化を行う。 ・起動時にLEDとジングルを鳴らす。 ・制御ループは10Hzとする。 ・異常がない限り、制御ループからは抜けなくて良い。 ・制御ループの中ではセンサ入力、サーボモータ駆動を行う。 これは、実は Arduino では、何もしなくてもそうなるようになっています。 Arduino IDEを開いて、新規ファイルを押すと setup() と loop()二つの関数が自動的に挿入されています。 void setup() { // put your setup code here, to run once: } setup は 日本語でいえば”初期化”となり、 起動時に一回のみ実行される機能で、コメントをGoogle翻訳してみると、”セットアップコードをここに入れて、一度実行してください” となりました。 ちょっと直してみると、「初期化のためのコードを、ここにおいて下さい。一回実行されます。」でしょうか。 void loop() { // put your main code here, to run repeatedly: } loopは日本語でいえば”繰り返し”でしようか。 同様に”メインコードをここに入れ、繰り返し実行する” と翻訳されました。 これも少し直してみると、「メインのコードをここにおいて下さい。繰り返し実行されます。」でしょうか。 そこに、前回設計した機能を割当て行きもうすこし詳細化します。 setup() 初期化を行う ・初期化ではセンサ、サーボモータの初期化を行う。 ・センサの初期化 ・ROHMセンサー用のI2Cを初期化する。 ・サーボモータの初期化 ・起動時にLEDとジングルを鳴らす。 ・LEDを点ける ・ジングルを鳴らす。 loop() 制御ループ ・異常がない限り、制御ループからは抜けなくて良い。 ・制御ループの中ではセンサ入力、サーボモータ駆動を行う。 ・センサから入力を行う ・カメラ画像を入力する ・加速度センサーから入力する ・磁気センサーから入力する ・センサの入力に応じて「処理」を行う。 (なにか後で考える) ・サーボモータを駆動する ・足のサーボモータを動かして歩く ・手のサーボモータを動かす ・制御ループは10Hzとする。 ・10Hzになるように時間を調整する。 (または、10Hzのタイマー割り込みを使う) つづく 次回は詳細設計の「処理」のつづきについて記述して行きます。