Ich schrieb ein wenig Code für meine Arduino Nano 3.0 und ich möchte eine LED blinken lassen, wenn ich eine 1
über den USB-Hub senden. Es funktioniert, aber ich verstehe die aus dem Nano gemachten Ergebnisse nicht und hoffe, dass mir jemand das erklären kann.Arduino Fernbedienung - seltsame serielle Ausgabe
Hier ist mein Code:
#define LEDPIN 2
#include <SPI.h>
int Go = 0;
void setup() {
Serial.begin(9600);
pinMode(LEDPIN, OUTPUT);
digitalWrite(LEDPIN, LOW);
delay(1000);
digitalWrite(LEDPIN, HIGH);
delay(1000);
digitalWrite(LEDPIN, LOW);
while (Go != 1){
Go = Serial.read();
Serial.println(Go); //a 1 will print 49, a 0 should print 48
Go = (Go - '0');
Serial.println(Go);
}
}
void loop() {
if (Serial.available() > 0){
if (Go == 1)
{
delay(1000);
digitalWrite(LEDPIN, HIGH);
delay(1000);
digitalWrite(LEDPIN, LOW);
}
else {}
}
else
{
digitalWrite(LEDPIN, LOW);
}
}
Und dies ist die Ausgabe:
-1 //this should be a 0
-49
.
.
.
49 //this is because of ASCII
1 // here is my 1 but the programm won't do the stuff in loop()
// instead I have to send another 1 to get LED fun
Bereits zu Beginn des Programms ich ein -1
empfangen ??? Liegt das an der USB-Verbindung oder mache ich etwas falsch?
1) wir sind leider kein Debugging-Service, 2) -1 von 'Serial.read()' bedeutet, dass keine Daten verfügbar sind, sollten Sie 'Serial.available()' verwenden Um zu überprüfen, ob Daten verfügbar sind, siehe https://www.arduino.cc/en/Serial/Read – Gizmo
In der 'setup' Funktion lesen Sie die serielle Leitung, ohne dass Sie auf die Datenverfügbarkeit warten (' Serial.available() '). –
Ich habe versucht 'Serial.available()', aber in diesem Fall wird es einfach nicht funktionieren. Es würde nicht einmal das erste 'Go' drucken – Tim