처음으로 무한 루프를 추가했습니다. 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는 'otac'에서 'otacapa'를 (다른 함수를 통해 직접 또는 간접적으로) 'otokapa'라고 부르지 않는 한 병렬로 실행하지 않습니다. 그러면 'dugme'이 절대 0으로 설정되지 않습니다 (다른 곳에서하지 않는 한). –
게다가 장기 실행 루프는 Arduino에서 어떻게해야하는지가 아닙니다. 'loop' 전역 함수는 루프 안에서 호출 될 것이고, 당신은 * one * 안에있는 것을 처리해야하고,'loop' 함수가 다시 호출되도록 리턴해야합니다. –