ソース部分作成2 (1-8.ソース:loop関数) [ロボット制作(tankun-mk1)]
おはようぼざいます。
今回はloop関数について説明していきます。
全体の動作としては以下です。
1)開始スイッチが押されたかをチェックする
2)押されたらwhile(1)回り以下を検出するまで進む
2-1)停止スイッチが押されたか
2-2)前方に障害物を発見したか
3)前方に障害物を発見したら以下を行う
4)モータを止めて右と左に障害物があるかチェック
5)障害物がない方向に進む
6)左右両方に障害物がある場合は少し下がる
ただし「距離を求める」「サーボを回転させる」などの
各動作はサブ関数化しており次回紹介します。
(なるべく早く更新するようにします)
こんな感じです。
では、次回はサブ関数を紹介して具体的な動作を見ていきまーす
今回はloop関数について説明していきます。
全体の動作としては以下です。
1)開始スイッチが押されたかをチェックする
2)押されたらwhile(1)回り以下を検出するまで進む
2-1)停止スイッチが押されたか
2-2)前方に障害物を発見したか
3)前方に障害物を発見したら以下を行う
4)モータを止めて右と左に障害物があるかチェック
5)障害物がない方向に進む
6)左右両方に障害物がある場合は少し下がる
ただし「距離を求める」「サーボを回転させる」などの
各動作はサブ関数化しており次回紹介します。
(なるべく早く更新するようにします)
void loop() { int Dst_Check=0; // 開始スイッチが押されたら動作を開始する // 開始スイッチが押されたかチェック sw_start = digitalRead(PIN_SW_START); sw_stop = digitalRead(PIN_SW_STOP); if ( sw_start == 1 ) { Serial.println("susumi;ma'-su"); delay(1500); // サーボモータを正面に exec_sensor_servo_ungle(SERVO_UNGLE_FRONT); motor_move(MTR_SET_MODE_GO); // 停止スイッチが押されるまで回る while(1) { Dst_Check=check_sonic_sensor_dst(SENSOR_FRONT_ERROR_DST, 0); if ( Dst_Check == 1 ) { delay(1000); set_next_away(); } // 停止スイッチが押されたかチェック sw_stop = digitalRead(PIN_SW_STOP); if ( sw_stop == 1 ) { // モータを止める motor_move(MTR_SET_MODE_STOP); delay(100); Serial.println("tomari';ma-su"); delay(2000); break; } delay(1000); } } sw_start = 0; sw_stop = 0; delay(1000); }
こんな感じです。
では、次回はサブ関数を紹介して具体的な動作を見ていきまーす
コメント 0