Problem mit serieller Datenübertragung

Hallo Kollegen,

ich möchte zwischen zwei NANOs serielle Daten übertragen.

Beide Boards sind über TX & RX verbunden.

Das Senderboard soll Zahlen übertragen, in dem Beispiel 0, 17 & 18 (nur ein Beispiel).

Beispiel Code Sender:

void setup() {
Serial.begin(9600);
}
void loop() {
Serial.write(0); Serial.println(0);
delay(5000);
Serial.write(17); Serial.println(17);
delay(5000);
Serial.write(18); Serial.println(18);
delay(5000);
}

Beispiel Code Empfänger:

int incomingByte;
void setup() {
  Serial.begin(9600);
}

void loop() {
  if (Serial.available() > 0) {
    incomingByte = Serial.read();
    Serial.print("I received: ");
    Serial.println(incomingByte);
  }
}

Und das kommt beim Empfänger an:

I received: 0
I received: 48
I received: 13
I received: 10

I received: 17
I received: 49
I received: 55
I received: 13
I received: 10

I received: 18
I received: 49
I received: 56
I received: 13
I received: 10

Was mache ich falsch?
Könnt Ihr mir bitte ene Richtung weisen?

Vielen Dank,

3D-Gurke

Nichts. Du empfängst, was Du sendest.
Google mal nach ASCII-Code.

Gruß Tommy

Hi,

danke,

wie bekomme ich aus dem ASCII wieder eine Dezimalzahl?

Vielen Dank,

3D-Gurke

Das kommt darauf an, wie groß die ist und ob du mit print oder write schreibst.
Das Thema wurde hier im Forum schon oft beantwortet. Nutze die Suche.

Gruß Tommy

I received: 0
I received: 48
I received: 13
I received: 10

0 ist die Zahl "0"
48 ist der ascii Wert vom Zeichen "0"
13 ist Carriage Return (kommt von Server.println(), Neue Zeile)
10 ist Line Feed

I received: 17
I received: 49
I received: 55
I received: 13
I received: 10

17 ist die Zahl "17"
49 ist der ashii Wert vom Zeichen "1"
55 ist der ashii Wert vom Zeichen "7"
13 ist Carriage Return
10 ist Line Feed

I received: 18
I received: 49
I received: 56
I received: 13
I received: 10

18 ist die Zahl "18"
49 ist der ashii Wert vom Zeichen "1"
56 ist der ashii Wert vom Zeichen "8"
13 ist Carriage Return
10 ist Line Feed

Serial.write(x); überträgt den numerischen Wert von x.
Du kannst immer nur 1 bit übertragen. Darum mußt Du ein int in 2 Byte Zahlen zerlegen, long und float in 4 Byte. siehe Float in Byte umwandeln - Deutsch - Arduino Forum

Grüße Uwe