2 Arduinos über uart kommunizieren lassen...

Hallo
Ich verzweifel an einer vermeintlich simplen Aufgabe...
2 Arduinos über die TX/RX Pins kommunizieren zu lassen...
Ich habe hier einen Uno und einen Micro.
Der Uno so programmiert dass er jede Sekunde eine Zahl sendet mit

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

}
String st="";
void loop() {

st="255";
st+='\n';  
Serial.print(st);
delay(1000);
st="0";
st+='\n';  
Serial.print(st);
delay(1000);
}

Am Laptop kann ich die Zahl empfangen.
Der Micro soll diese empfangen, die Pin 13 LED kurz flashen lassen wenn Daten zum Lesen da sind und eine LED entsprechen der Zahl dimmen...

byte Value;
void setup() {

Serial.begin(9600);
Serial.setTimeout(5);
pinMode(9,OUTPUT);
pinMode(13,OUTPUT);
pinMode(0,INPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
 if (Serial.available())
{
  digitalWrite(13,HIGH);
  string = Serial.readStringUntil('\n');
  Value = string.toInt();
 analogWrite(9,Value);
}
digitalWrite(13,LOW);
}

Sende ich ihm das vom Laptop aus klappt das Prima.
Versorge ich die beiden mit einem 5V Netzteil, und verbinde den Tx des Uno mit dem Rx des Micro und die Massen passiert.........Garnichts......
Habe sogar am Tx des Uno eine LED dran die auch Flackert wenn er sendet und wenn er nicht sendet dauerhaft an ist.

Wo liegt mein Denkfehler...

Vermutlich im Sketch.
Warum zeigst du uns den nicht.
Wo hast du die Verbindung angeschlossen ?

Poste den Sketch in Code-Tags.

HotSystems:
Vermutlich im Sketch.
Warum zeigst du uns den nicht.
Wo hast du die Verbindung angeschlossen ?

Poste den Sketch in Code-Tags.

Hab ich schon aktualisiert.
habe selbst erst zu spät daran gedacht dass ihr den Sketch braucht...

Der Uno hat Probleme wenn du D0 und D1 (RX und TX) verwendest, da hier auch der USB-Serialwandler angeschlossen ist.
Das solltest du ändern und evtl. SoftwareSerial verwenden.

Davon habe ich schonmal gehört, daher hatte ich die beiden Arduinos nicht über USB versorgt. Würde das ganze mit z.B. 2 Micros so funktionieren wie ich mir das vorstelle?

Ich hatte gehofft dass ganze ohne softwareserial zu lösen, da das eigentliche projekt dass ich damit realisieren will mit einigen Servos und Schrittmotoren im Modellbaubereich meiner Meinung nach recht Rechenintensiv ist und ich vermeiden möchte dass durch softwarekommunikation sichtebare Einschränkungen in den flüssigen Bewegungen der Schrittmotoren auftreten.

Aber probieren werde ich es auf jeden fall.

Ich würde erstmal den String Kram rausschmeißen. Readuntil blockiert und den ganzen String Funktionen traue ich sowieso nicht übern Weg.
Wenn ich mit seriell rumspiele, nehme ich zum testen immer Megas

knautschkissen:
Davon habe ich schonmal gehört, daher hatte ich die beiden Arduinos nicht über USB versorgt. Würde das ganze mit z.B. 2 Micros so funktionieren wie ich mir das vorstelle?

Das hat mit der Spannungsversorgung nichts zu tun.
Da kommt dir einfach der Baustein (IC) in die Quere, der onBoard die Wandlung vornimmt.

Und ja, mit den Micros sollte das funktionieren.
Da ist die UART getrennt herausgeführt.

P.S.
Ich habe schon größere Projekte mit der SoftwareSerial gelöst und konnte keine Probleme feststellen.

Beim Arduino MICRO sind die Pins TX und RX die Schnittstelle Serial1 (Serial EINS). Die USB Schnittstelle ist Serial (Serial ohne Zahl).

https://www.arduino.cc/en/Reference/Serial:
The Arduino Leonardo board uses Serial1 to communicate via TTL (5V) serial on pins 0 (RX) and 1 (TX). Serial is reserved for USB CDC communication. For more information, refer to the Leonardo getting started page and hardware page.

Grüße Uwe

HotSystems:
Der Uno hat Probleme wenn du D0 und D1 (RX und TX) verwendest, da hier auch der USB-Serialwandler angeschlossen ist.
Das solltest du ändern und evtl. SoftwareSerial verwenden.

Zwischen ATmega und USB-Serial Wandler (auf viele Arudinos außer solchen mit ATmega32U4 und SAM) sind auf den RX und TX Leitung 500 Ohm Widerstände verbaut. Darum kann eine Serielle Schnittstelle eines anderen Gerätes an TX und RX direkt angeschlossen werden und bekommt "Vorfahrt". Das blockiert die Komunikation zwischen dem ATmega und dem USB-serial wandler und damit dem PC. Wenn die Verbindung zum PC nicht notwendig ist funktioniert das. Zum Upladen eines Sketches über USB muß das Gerät an TX/RX entfernt werden.

Grüße Uwe

uwefed:
Zwischen ATmega und USB-Serial Wandler (auf viele Arudinos außer solchen mit ATmega32U4 und SAM) sind auf den RX und TX Leitung 500 Ohm Widerstände verbaut. Darum kann eine Serielle Schnittstelle eines anderen Gerätes an TX und RX direkt angeschlossen werden und bekommt "Vorfahrt".

Ok, wenn das dann funktioniert.
Wir wissen aber nicht, welchen der TO einsetzt.

HotSystems:
Wir wissen aber nicht, welchen der TO einsetzt.

laut ersten Beitrag einen UNO als Sender und einen MICRO als Empfänger.
Grüße Uwe

uwefed:
laut ersten Beitrag einen UNO als Sender und einen MICRO als Empfänger.
Grüße Uwe

Ja, stimmt natürlich. Hatte ich mal eben verdrängt. :wink:

Ich verzweifel an einer vermeintlich simplen Aufgabe...
2 Arduinos über die TX/RX Pins kommunizieren zu lassen...

Vielleicht ist ja I2C die bessere Wahl?

combie:
Vielleicht ist ja I2C die bessere Wahl?

Nein man muß am MIKRO nur die richtige serielle Schnitstelle nehmen, der hat nämlich 2 ( UART und USB).
Grüße Uwe