https://blog.with2.net/link/?1965529

ESP-WROOM-02 障害物回避スケッチ問題をほぼ解決

https://blog.with2.net/link/?1965529

前記事で紹介したスケッチで問題になっていましたループ文から抜け出せない件ですが、Facebookの「Arduinoファン」の皆さんからの助言でなんとか抜け出せました。特に同クラブのK氏からの助言が有益でしたあらためて御礼申し上げます。

さてどうしたかというと、boolean Auto;で定義をしておいて前記事の//Autoのところを以下のようにしました。

// Auto
server.on(“/Auto”, [](){
Serial.println(“auto”);
server.send(200, “text/html”, html);Auto=true;});

そしてvoid loop以下を次のようにしました。

void loop(void){
server.handleClient();
distance_from_object();
if ( distance > 10 && Auto){
distance_from_object();
digitalWrite(14,LOW);
digitalWrite(5,HIGH); // Set Dir High → 回転方向をセット
digitalWrite(13,HIGH); // Set Dir High → 回転方向をセット
analogWrite(4,125);
analogWrite(12,125);
delay(100);
}
if(distance <10 && Auto){
avoidance();
delay(100);
}
}

回避運動のavoidance()は以下のようにしています。

void avoidance(){
digitalWrite(14,LOW);
digitalWrite(5,HIGH); // Set Dir High → 回転方向をセット
digitalWrite(13,LOW); // Set Dir High → 回転方向をセット
for(x = 0; x < 2000; x++)
{
analogWrite(4,125);
analogWrite(12,125);
}
delay(500);
}

試験結果です。

AUTOモードからの抜け出しもうまく動作しています。ただAUTOモードから戻ったあとに例えばSTOPボタンの操作で一旦停止しますが、しばらくすると前進となってしまいます。左右旋回も同じ様子です。ただ前進ボタンはもともと前進なので気が付かないだけです。まあ問題はありますが以前にくらべると格段の使いやすさなのでこれでスケッチ開発は終了とします。

お世話になった方々に再度御礼申し上げます。

それにしても手こずった

シェアする

フォローする