2017-10-05 3 views
0

루프를 끝내기 위해 지연을 무시할 수 있습니까? 내가 원하는 것은 단추를 눌러 루프를 끝내는 것입니다. 그러나 next() 메서드를 실행하기 전에 루프를 끝내는 것처럼 보였습니다.지연 및 루프 무시

void blink1() { 
    loop_flag = true; 
    while (loop_flag) { 
    // Loop for Lights 
    for (int x = 0; x < LED_IN; x++) { 
     btn_press = digitalRead(btn_1); 
     if (!btn_press) { 
     digitalWrite(LED_BUILTIN, HIGH); 
     next(); //loop_flag = false; is stored 
     } else { 
     digitalWrite(LED_BUILTIN, LOW); 
     digitalWrite(led[x], HIGH); 
     delay(1000); 
     digitalWrite(led[x], LOW); 
     } 
    } 
    } 
} 

void next() { 

    Serial.write("pressed next \n"); 
    flag = getFlag(flag); // Sets new Flag 
    loop_flag = false; //ends the loop flag 
    delay(100); //delay for button friendly 

} 
+0

'for' 루프에도'loop_flag'가'false'인지 확인해 주시겠습니까? 예 : 'x

+0

왜 지연을 제거하지 않습니까? 그것은 완전히 불필요한 것 같습니다. 루프가 끝나고'loop_flag'가 설정된 후에 함수가 리턴됩니다. – Damon

+0

그러면 깜박이지 않습니다. 지연은 LED가 켜져있을 시간을 설정하는 데 사용됩니다. –

답변

0

버튼을 눌러도 for 루프가 완료됩니다. next()에 대한 호출이 끝나면 for 루프로 바로 돌아옵니다. 휴식 추가;