2017-12-24 4 views
0

저는 C++로 코딩하는 초보자이며 직렬 핀을 통해 입력 핀을 깜빡이게하려고 노력하고 있습니다.하지만 꺼지라고 말하면 깜박 거립니다. 문제는 코드의 맨 아래에 있다고 생각합니다.Arduino 함수는 다른 함수를 호출 한 후 루핑을 계속합니다.

int ledPin = 13; 
String readString; 

void setup() { 
    Serial.begin(115200); 
    pinMode(ledPin, OUTPUT); 
    Serial.println("Serial Blinker (Input 'on' to blink and 'off' to stop blinking)"); 
} 
void loop() { 
    readString = ""; 
    while (Serial.available()) { 
    delay(3); 
    char c = Serial.read(); 
    readString += c; 
    } 
    readString.trim(); 
    if (readString.length() > 0) { 
    if (readString == "on") { 
     Serial.println("switching on"); 
     next(); 
    } 
    } 
} 
void next() { 
    digitalWrite(ledPin, HIGH); 
    delay(500); 
    digitalWrite(ledPin, LOW); 
    delay(500); 
    digitalWrite(ledPin, HIGH); 
    delay(500); 
    digitalWrite(ledPin, LOW); 
    delay(500); 
    readString = ""; 
    while (Serial.available()) { 
    delay(3); 
    char c = Serial.read(); 
    readString += c; 
    } 
    readString.trim(); 
    if (readString.length() > 0) { 
    if (readString == "off") { 
     Serial.println("switching off"); 
     digitalWrite(ledPin, LOW); 
    } 
    } 
    next(); 
} 

답변

0

이 코드

int ledPin = 13; 
String readString; 

void setup() { 
    Serial.begin(115200); 
    pinMode(ledPin, OUTPUT); 
    Serial.println("Serial Blinker (Input 'on' to blink and 'off' to stop blinking)"); 
} 
void loop() { 
    readString = ""; 
    while (Serial.available()) { 
    delay(3); 
    char c = Serial.read(); 
    readString += c; 
    } 
    readString.trim(); 
    if (readString.length() > 0) { 
    if (readString == "on") { 
     Serial.println("switching on"); 
     next(); 
    } 
    else if(readString == "off"){ 
     digitalWrite(ledPin, LOW); 
    } 
    } 
} 
void next() { 
    digitalWrite(ledPin, HIGH); 
    delay(500); 
    digitalWrite(ledPin, LOW); 
    delay(500); 
    digitalWrite(ledPin, HIGH); 
    delay(500); 
    digitalWrite(ledPin, LOW); 
    delay(500); 
    readString = ""; 
    while (Serial.available()) { 
    delay(3); 
    char c = Serial.read(); 
    readString += c; 
    } 
    readString.trim(); 

    if (readString == "off") { 
     Serial.print("off"); 
     digitalWrite(ledPin, LOW); 
     off(); 
    } 
    else { 
      next(); 
    } 

} 

void off(){ 
    Serial.print("in off"); 
    digitalWrite(ledPin, LOW); 

} 
시도