Serien Senden seltsame Daten
Frage
Also habe ich eine Skizze mache, die eine zweistellige Zahl aus dem USB-Port nimmt, überprüft den Zustand des Stiftes, der die Anzahl übereinstimmt, dann den Stift schaltet ein / aus.
Werfen Sie einen Blick auf die Quelle
Aus irgendeinem Grund, wenn ich 13 über den Arduino serielle Monitor senden, erhalte ich diese Meldung zurück:
Pin number is greater than 14, details:
490
51
541
Was bedeutet, dass die IDE seltsame Zahlen sendet, oder die Arduino verarbeitet sie falsch. Hat jemand von euch sehen ein Problem, warum dies nicht funktioniert oder?
Lösung
Wenn Sie die ASCII eingeben Zeichen "1", dann "3", dann wird Serial.read()
zurückkehren 49 und 51. Dies liegt daran, in der ASCII Zeichentabelle "1" und „3“ sind durch die Zahlen 49 bzw. 51. Wenn Sie möchten, um die Nummer zu finden, die der Benutzer getippt Sie konvertieren, um es von ASCII .
Ich bin nicht sehr vertraut mit der Arduino Sprache, aber vorausgesetzt, es ist ähnlich wie C Sie können die Änderungen finden benötigt Hier .
schrieb ich das Programm in einer anderen Art und Weise, die können klarer href="http://pastebin.com/m441a2fdb" zum Lesen .
Die in der Quelle verwendet '0' ist einfach eine andere Art zu sagen, "die Zahl verwendet, um die Zeichen darzustellen '0'", so ist 48. In C-ähnliche Sprachen '0' == 48
, '1' == 49
, etc, etc.