私は最初に無限ループを追加しました。 Dugmeはループの変数です。しかし、私はループを壊すことができませんでした。だから、私がループに入ると、私は終了できません。Arduinoがwhileループを壊している理由をデバッグするには?
void otoac()
{
long duration, distance;
while(dugme==1)
{
int distanceR = 0;
int distanceL = 0;
delay(40);
if(distance<=24)
{
moveStop();
delay(100);
moveBackward();
delay(300);
moveStop();
delay(200);
distanceR = lookRight();
delay(200);
distanceL = lookLeft();
delay(200);
if(distanceR>=distanceL)
{
turnRight();
moveStop();
}
else
{
turnLeft();
moveStop();
}
}
else
{
moveForward();
}
distance = readPing();
}
}
「X」をクリックすると自動モード(アプリケーション)になるというコードがあります。私はここで 'X'をクリックすると 'x'(小さなx)をクリックすると停止する必要がありますが、停止しません。これは 'x'のコードです。私は、コマンドにwhileループを追加
だけでなく、コマンド、意味に矛盾、車がどうなるアクション:YouTubeで
void otokapa() { dugme=0 motor1.setSpeed(0); motor2.run(RELEASE); //turn motor1 off motor2.setSpeed(0); motor2.run(RELEASE); //turn motor2 off }
誰かが私だけこの答えを与えました三角形は押されておらず、何もありません。
もっとコード:
void loop(){
if(Serial.available() > 0){
command = Serial.read();
Stop();
switch(command){
case 'F':
forward();
break;
case 'B':
back();
break;
case 'L':
left();
break;
case 'R':
right();
break;
case 'G':
onsol();
break;
case 'I':
onsag();
break;
case 'H':
arkasag();
break;
case 'J':
arkasol();
break;
case 'W':
onac();
break;
case 'w':
onkapa();
break;
case 'X':
otoac();
break;
case 'x':
otokapa();
break;
}
}
}
とdugme:本質的には、このすべてのコードint dugme=1;
とdugmeの上
のみ無効otokapaにし、otoac while(dugme==1)
C!= C++。実際に使用している言語のタグを付けます。 – tambre
そして 'otokapa'関数はどこで呼びますか? Arduinoは 'otacapa'を' ootac'から(直接的または間接的に他の関数を通して)呼び出さない限り、 'dugme'は決して' 0'に設定されません(あなたが別の場所で行うのでない限り)。 –
さらに、長時間走っているループは本当にあなたがArduinoでやるべきことではありません。 'loop'グローバル関数はループ内で呼び出されます。好ましくは、* one *を実行し、' loop'関数が再び呼び出されるようにします。 –