Serial

Hallo, meine Frage ist ein Anfängerfrage aus dem Bereich Serial.
Das Programm soll im Moment einfach die Zahl die eingegeben wird, wieder zurück geben. (Das Beispiel ist sogar von der Arduino-Seite) allerdings werden immer andere Zahlen zurückgegeben (um 48 zu hoch). Der Arduino ist mit meinem Laptop verbunden.
Kann mir jemand sagen wieso das so ist?

Prorammcode:

byte incomingByte=0;
void setup() {
  Serial.begin(9600);
}
//Serial.println("Zahl eigeben:");
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);
        }
}

Rückgabe in Putty (die Zahlen von 0 bis 9 wurden eigegeben):

I received: 48
I received: 49
I received: 50
I received: 51
I received: 52
I received: 53
I received: 54
I received: 55
I received: 56
I received: 57

Weil das so seim muss. Du gibst z.B. das Zeichen 1 zum Arduino. Das hat die Codierung 49 dezimal und die gibst Du halt wieder zurück.

Schau Dir mal eine ASCII-Tabelle an.

Gruß Tommy

Woody_99: allerdings werden immer andere Zahlen zurückgegeben (um 48 zu hoch).

Die Zahlen werden als ASCII-Zeichen übertragen und die Null ist ASCII-Zeichen Nr. 48 uns so weiter. Wenn die "richtigen" Zahlen angezeigt werden sollen, dann kannst du zum Beispiel bei jedem Zeichen 48 abziehen. Und natürlich gibt es auch noch andere Möglichkeiten :)

Edit: ach, zu langsam :) aber immerhin gleich 2 Links zu ASCII-Tabellen :)

mach mal statt

Serial.println(incomingByte, DEC);

Das hier

Serial.println(incomingByte);

ElEspanol: mach mal statt

Serial.println(incomingByte, DEC);

Das hier

Serial.println(incomingByte);

Eher:

Serial.write(incomingByte);
Serial.println();