Arduinoを使用し行き止まりが近づくと左右に距離を測り左右どちらに進むべきかをブザーで知らせ、前に一定距離以上の空間が開くと左右の距離の測定をやめるというのを繰り返すプログラム(一本道を障害物に当たらずに音のガイドで人が進むことが目的です)を作りたいのですが、下記のプログラムだと前の距離センサのみが動き、左右の距離はシリアルモニタにずっと0,00で表示されます。プログラムでどこかおかしいところはありますでしょうか?教えて下さると幸いです。(距離センサとして超音波モジュールを用いています。)
#define trigF 8 #define echoR 9 #define trigR 10 #define echoL 13 #define trigL 12 #define buza 7 double DurF=0; double DisF=0; double DurR=0; double DisR=0; double DurL=0; double DisL=0; void setup() { Serial.begin(9600); pinMode(echoF,INPUT); pinMode(trigF,OUTPUT); pinMode(echoR,INPUT); pinMode(trigR,OUTPUT); pinMode(echoL,INPUT); pinMode(trigL,OUTPUT); pinMode(buza,OUTPUT); } void DistanceForword(){ digitalWrite(trigF,LOW); delayMicroseconds(2); digitalWrite(trigF,HIGH); delayMicroseconds(10); digitalWrite(trigF,LOW); DurF=pulseIn(echoF,HIGH); if(DurF>0){ DurF=DurF/2; DisF=DurF*340*100/1000000; } Serial.print("DisF:"); Serial.println(DisF); delay(20); } void DistanceRight(){ digitalWrite(trigR,LOW); delayMicroseconds(2); digitalWrite(trigR,HIGH); delayMicroseconds(10); digitalWrite(trigR,LOW); DurF=pulseIn(echoR,HIGH); if(DurR>0){ DurR=DurR/2; DisR=DurR*340*100/1000000; } Serial.print("DisR:"); Serial.println(DisR); delay(20); } void DistanceLeft(){ digitalWrite(trigL,LOW); delayMicroseconds(2); digitalWrite(trigL,HIGH); delayMicroseconds(10); digitalWrite(trigL,LOW); DurF=pulseIn(echoL,HIGH); if(DurL>0){ DurL=DurL/2; DisL=DurL*340*100/1000000; } Serial.print("DisL:"); Serial.println(DisL); delay(20); } void TurnRight(){ tone(buza,262,200); delay(200); } void TurnLeft(){ tone(buza,262,200); delay(100); tone(buza,262,200); delay(100); tone(buza,262,200); delay(200); } void loop() { DistanceForword(); if(DisF<10){ digitalWrite(trigF,LOW); DistanceLeft(); DistanceRight(); while(DisF>10){ if(DisR>20){ TurnRight(); } else if(DisL>20){ TurnLeft(); } else if((DisR<20)&&(DisL<20)){ digitalWrite(trigF,HIGH); digitalWrite(trigR,LOW); digitalWrite(trigL,LOW); DistanceForword(); } } } }
intをvoidの代わりに用いても動きませんでした。距離センサの不具合でもないです。単体ならきちんと作動するので。
このままではコードが読みづらいので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください