Hallo, ich bin absolouter Neuling bei Arduino und ich scheitere momentan an folgendem Code.
Es soll über den seriellen Monitor mein Befehl "ein" bzw "aus" eingelesen werden und dementsprechend soll die Led reagieren.
Jedoch tut sich nichts und ich finden einfach den Fehler nicht.
Würde mich freuen, wenn mir jemand da helfen könnte.
Hallo,
das hängt damit zusammen das in command mehr drin steht als Du denkst. z.B das Enter ist auch drin.
Du könntest nur auf die ersten 3 Zeichen abfragen , oder mach es einfacher und gib nur ein Zeichen ein "e" oder "a" dann kannst Du nur ein Zeichen einlesen. Beispiele dazu findest Du in der IDE
Denn:
In dem String steht nicht das drin, was ihr darin erwartet.
Eine der Möglichkeiten, dem zu begegnen, wäre String::trim()
Die andere, bessere, wäre einen eigenen Parser bauen.
Stream::readString() ist eher nicht so gut geeignet, da es recht schlecht mit dem Bediener synchronisiert.
Du weisst, dass ich ja sonst auch ein Verfechter dessen bin und das auch mal schnell in die Tasten klöppel, aber keiner kennt die Voraussetzungen, warum da String verarbeitet wird.
Ich muß ja niemandem etwas aufzwingen, was er nicht will, oder überhaupt danach gefragt hat.
Wird mir ja sonst immer vorgeworfen - nu mach ichs nicht, ist es auch nicht richtig.
Weil ein Zeichen mehr im String ist als du glaubst.
Darum ist auch trim() in diesem Fall genau die richtige Maßnahme.
trim() ist genau für solche Fälle erfunden worden.
Das Endezeichen macht das, was der Name sagt: es kennzeichnet das Ende der Eingabe.
Welches das wiederum ist, hängt halt vom Gerät/der Einstellung oder sonstwas ab.
Oder auch nicht, je nach Einstellung im SerialMonitor.
Die Enter-Taste ist dafür da, dass überhaupt was gesendet wird.
Welches Ende-Zeichen dann angehängt wird, ist dann Einstellungssache.
Das war auch die Erklärung, warum es woanders funktioniert hat.
"Alte Version" war falsch geraten.
Der Solution-Haken bei #8 sitzt also nicht für alle an der richtigen Stelle.