2017-12-24 5 views
0

Ich bin ein Anfänger zum Codieren mit C++ und ich habe versucht, den LED-Pin blinken über Eingabe von seriellen, aber wenn ich sage, es auszuschalten, es blinkt weiter. Ich denke, das Problem liegt am Ende des Codes.Arduino-Funktion hält Schleife nach dem Aufruf anderer Funktion

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(); 
} 

Antwort

0

diesen Code Versuchen

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); 

} 
Verwandte Themen