Serielle Kommunikation funktioniert nicht?!

Hallo allerseits,

ich wollte heute etwas mit der Seriellen Kommunikation probieren, aber es geht überhaupt nix.

Die Kommunikation soll zwischen einem Arduino Mega und einem Nano ablaufen, wobei ich vom Nano eine Zahl verschicke, die im Seriellen Monitor auf dem Mega angezeigt werden sollte.

Beide sind über GND verbunden, und der TX vom Mega ist am RX vom Nano, und der TX vom Nano am RX vom Mega.

Als Code habe ich folgendes:

Für den Nano (SENDER):

int world=5;

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

void loop() {
  Serial.write(world); 
  delay(1000);
}

Für den Mega (EMPFÄNGER):

int hello=0;

void setup() {
  
  Serial.begin(9600);
  Serial1.begin(9600);
}

void loop() {
  hello = Serial1.read(); 
  Serial.println(hello); 
  delay(1000);
}

Und als Seriellen Monitor beim Mega bekomme ich gar nichts, oder das:

-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1

usw...

Ich verstehe schon gar nicht wo "-1" herkommt...

Ich hoffe ihr könnt mir weiterhelfen.

Der Tx und der RX vom Mega?
Der Mega hat vier Sätze davon.

aviation_lg:
Ich verstehe schon gar nicht wo "-1" herkommt...

Serial.read()

Arduino Mega only:

Serial1.read()
Serial2.read()
Serial3.read()
Parameters

Nothing
Returns

The first byte of incoming serial data available (or -1 if no data is available) - int.

Dokumentation von Serial.read()

OK erst mal danke für die Antwort.
Damit ist schon mal geklärt wo "-1" herkommt.

Beim Mega habe ich die Kabel in TX1 und RX1 eingesteckt, weil ich die ja auch mit "Serial1.read();" angesprochen habe.

aviation_lg:
OK erst mal danke für die Antwort.
Damit ist schon mal geklärt wo "-1" herkommt.

Der Rest sollte auch geklärt sein du hast ja einen Link von Whandall bekommen, wo du nachlesen kannst, wie die serielle Schnittstelle ausgelesen wird.

Danke nochmals, es klappt nun tatsächlich ;D

aviation_lg:
Danke nochmals, es klappt nun tatsächlich ;D

Gerne...und schön wäre, wenn du für alle mit ähnlichem Problem den geänderten Sketch postest.

Hier ist der geänderte, funktionsfähige Code:

Vom Mega:

int bytereceived = 0;

void setup() {
Serial.begin(9600);
Serial2.begin(9600);
}

void loop() {

if (Serial.available() >0) { 
bytereceived = Serial2.read();
  

  Serial.print("Ich habe bekommen: ");
  Serial.println(bytereceived);
}
 

}

vom Nano:

int hello = 27;
void setup() {

  Serial.begin(9600);

}

void loop() {
  
Serial.write(hello);

}

Die Ausgabe auf dem Seriellen Monitor, vom Mega, entspricht nun der des Nanos.

Eine Frage hätte ich aber noch: und zwar folgendes:

Der Serielle Monitor zeigt im Normalfall die Zahl die ich am Nano losgeschickt habe.
Wenn man aber das Kabel, über das die beiden verbunden sind, rauszieht und wieder reinmacht, kommen manchmal komische Werte. auf dem Seriellen Monitor.
Meistens 163 oder 180.
Warum??!
Die gehen ja auch nicht weg oder so, sondern verschwinden erst wieder wenn man die Kabel erneut raus und wieder einsteckt.
Manchmal muss man das sogar mehrmals wiederholen, damit wieder der normale Wert wieder kommt.

Woran kann das liegen, weil man will ja schon eine zuverlässige Übertragung...

aviation_lg:
Hier ist der geänderte, funktionsfähige Code:

Vom Mega:

int bytereceived = 0;

void setup() {
  Serial.begin(9600);
  Serial2.begin(9600);
}
void loop() {
  bytereceived = Serial2.read();
  Serial.print("Ich habe bekommen: ");
  Serial.println(bytereceived);
}

Der Mega Sketch, den du da eingestellt hast, ist der alte mit -1 Fehler.

Sollte nun behoben sein

Strg-T in der IDE benutzt du aus welchen Gründen nicht?