中野島ロボット

小さなロボットの自作記事を書いています。

週刊中ロボ26 GR-LYCHEE ソフトウェア設計(その5) 詳細設計 その2

つづき

今週はGR-LYCHEEコンテストのソフトウェアを設計しています。

f:id:nakarobo:20180912124159j:plain

 

詳細設計 つづき

前回基本的なプログラムの構造を設計しました。

・初期化を行う

・初期化ではセンサ、サーボモータの初期化を行う。

・起動時にLEDとジングルを鳴らす。

・制御ループは10Hzとする。

・異常がない限り、制御ループからは抜けなくて良い。

・制御ループの中ではセンサ入力、サーボモータ駆動を行う。

 

これは、実は Arduino では、何もしなくてもそうなるようになっています。

Arduino IDEを開いて、新規ファイルを押すと setup() と loop()二つの関数が自動的に挿入されています。

 

f:id:nakarobo:20181014094257j:plain

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のタイマー割り込みを使う)

 

 つづく

次回は詳細設計の「処理」のつづきについて記述して行きます。