J'ai d'abord ajouté une boucle infinie. Dugme est une variable pour la boucle. Mais je ne pouvais pas casser la boucle. C'est pourquoi, quand j'entre dans la boucle, je ne peux pas sortir.Comment déboguer pourquoi Arduino casse une boucle 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();
}
}
J'ai un code que lorsque je clique sur case: 'X' ça passe en mode automatique (application). J'ai ici le code pour quand je clique sur 'X' c'est 'x' (petit x) il doit s'arrêter mais ça ne s'arrête pas. C'est le code pour le 'x'.
void otokapa()
{
dugme=0
motor1.setSpeed(0);
motor2.run(RELEASE); //turn motor1 off
motor2.setSpeed(0);
motor2.run(RELEASE); //turn motor2 off
}
Quelqu'un sur YouTube ne m'a donné cette réponse:
J'ai ajouté une boucle while à la commande, ainsi que d'une contradiction avec la commande, ce qui signifie, l'action que la voiture fera quand le triangle n'est pas pressé, ce qui n'est rien.
Plus code:
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;
}
}
}
et dugme:
au-dessus de tout le code int dugme=1;
et dugme est seulement dans otokapa vide et otoac while(dugme==1)
C! = C++. Tag avec la langue que vous utilisez réellement. – tambre
Et où appelez-vous la fonction 'otokapa'? Arduino ne fonctionne pas en parallèle, sauf si vous appelez 'otokapa' de' oatac' (directement ou indirectement via une autre fonction) alors 'dugme' ne sera jamais défini sur' 0' (sauf si vous le faites ailleurs). –
En outre, les boucles de longue durée ne sont vraiment pas comment vous devriez faire des choses sur Arduino. La fonction globale 'loop' sera appelée dans une boucle, vous devriez de préférence faire * une * chose dedans, et laisser la fonction' loop' revenir pour être appelée à nouveau. –