2017-11-19 3 views
2

Ich habe ein grundlegendes Problem mit meinem Arduino Uno.
Mein Beispielcode erhält eine Nummer über die serielle Schnittstelle und sollte sie zurück drucken.Warum gibt mir meine serielle Schnittstelle Arduino Semi-Random-Nummern?

int incomingByte = 0; 

void setup() { 
    Serial.begin(9600); 
    Serial.println("Hello World"); 
} 

void loop() { 
    if (Serial.available() > 0) { 

    // read the incoming byte: 
    incomingByte = Serial.read(); 

    // say what you got: 
    Serial.print("I received: "); 
    Serial.println(incomingByte, DEC); 
    } 
} 

Wenn ich 0 senden, erhalte ich 48.

0->48 
1->49 
2->50 
3->51 

a->97 
b->98 
A->65 

Also, warum es die gleichen Zahlen nicht zu mir zurückschicken?

Antwort

5

In Ihrem Programm ist der Ausgang ASCII equivalent des Eingangs, den der Arduino empfängt. Das ASCII-Äquivalent von 0 ist 48, 1 ist 49, a ist 97, A ist 65 und so weiter.

Der Grund ist Sie Ihre Eingabe incomingByte Variable Speichern (incomingByte = Serial.read();), aber Sie erklären incomingByte Variable als int. Wenn ein Zeichen einer Integer-Variablen zugewiesen wird, wird der entsprechende ASCII-Wert in integer variable gespeichert. Wenn Sie ein Zeichen drucken möchten, das Sie an das Arduino senden, möchten Sie int incomingByte = 0; zu char incomingByte; ändern.