Drei Arduinos miteinander verbinden

Hallo,

mal wieder habe ich kleines Problem:
Ich möchte gern zwei Arduinos mit einem zentralen dritten verbinden. Der Arduino in der Mitte ist jeweils über TX0 (Pin 1) und TX3 (Pin 14) mit einem anderen verbunden. Massen sind ebenfalls verbunden. Allerdings scheint der Master nur über den TX0-Pin Daten zu senden - bei TX3 funktioniert es nicht. Die beiden anderen Arduinos sind richtig programmiert, denn es funktioniert wenn ich TX0 mit TX3 vertausche.

Du hast mein volles Mitgefühl!

Na dann bin ich ja beruhigt... Wenigstens einer, der mich verstehen kann!

Techniker89: mal wieder habe ich kleines Problem: ...

Was für Arduinos sind da im Spiel? Wie sieht der Sketch aus, mit dem es nicht funktioniert?

Gruß

Gregor

Hallo,

ich habe drei Mega 2560.

für den Master:

void setup(){

Serial.begin(9600);}

void loop(){

if(B23 == LOW) Serial.print('A');
}

jeweils für die anderen beiden:

void setup(){

Serial.begin(9600);}

void loop(){
if(Serial.available())  {
  i = Serial.read();
}
if(i=='A')  B23 = LOW;
if(B23 == LOW)  digitalWrite(rot23, LOW);

Techniker89: Na dann bin ich ja beruhigt... Wenigstens einer, der mich verstehen kann!

Ja, ich kann das auch nicht leiden, wenn meine Arduinos mir nicht gehorchen wollen!

Meistens findet sich das Problem dann, im OSI Schichtenmodell, auf Ebene 8.

für den Master:

jeweils für die anderen beiden:

Serial ist mit dem 16U2 verbunden, darf also nicht verwendet werden.

Serial ist mit dem 16U2 verbunden, darf also nicht verwendet werden.

Das würde ich nicht so krass formulieren. Aber bei Megas mit so vielen Seriellen Schnittstellen wäre es blöd.

Warum verwendest du im Master nur Serial, wenn du behauptest, du wolltest mit 2 Slave-Arduinos kommunizieren? Warum verwendest du Serial, wenn du auf TX3 senden willst?

Das würde ich nicht so krass formulieren.

Klar, kann man den 16U2 im Reset halten, aber dann ist USB auch tot. Will man das? KA! (ist da überhaupt ein 16U2 drauf?)

Nee.. Ich glaube, man sollte das erstmal "flach" angehen, also Serial ignorieren. Und wenn dann alle anderen Seriellen "verbraucht" sind, kann man ja nochmal nachdenken...

Warum verwendest du im Master nur Serial, wenn du behauptest, du wolltest mit 2 Slave-Arduinos kommunizieren? Warum verwendest du Serial, wenn du auf TX3 senden willst?

Ich glaube, du sollst ihm das Programm schreiben! :o :o :o

Ein Blick in den Schaltplan kann ja so informativ sein ;D

combie:
(ist da überhaupt ein 16U2 drauf?)

Ja, ATMEGA16U2-MU.

@Techniker89: Die serielle Schnittstelle ist im Unterschied zu I2C nicht busfähig. Der Mega 2560 hat aber drei freie, nicht durch USB verwendete serielle Schnittstellen, die mittels Serial1, Serial2 und Serial3 angesprochen werden können. Siehe “Input and Output” und Serial. So kannst Du sternförmig verdrahten und kommunizieren.

Ja, ATMEGA16U2-MU.

Jain...

Und der alte, hat einen 8U2 drauf.... (Aber, das tut hier nichts zur Sache)

combie: Und der alte, hat einen 8U2 drauf....

Mir war nicht klar, daß es den alten noch zu kaufen gibt. Also meine Aussage gilt für R3.

noch zu kaufen gibt

Das weiß ich auch nicht!

Selbst wenn ein 16U2, 8U2 oder auch CH340 dran ist, könnte man direkt an TX0 und GND was anschliessen. (Wenn man es müsste) Aber, wie schon mehrfach erwähnt, muss man ja nicht.

Wenn es wirklich nur drum ginge, vom Master beiden Empfängern das gleiche zu senden und nichts zu lesen, könnte man sternförmig TX3 mit beiden RX1 verbinden. Und bräuchte   Serial3.println("Hallo Ihr beiden");  nur einmal zu senden.

combie: Das weiß ich auch nicht!

Dein Link sagt "Mehr als 10 verfügbar" in Berlin. Wenn der Anbieter zählen kann, sollte es ihn zu kaufen geben. Oder?

Leider gibt der TO nur spärliche Informationen, daher halte ich mich mit "nimm doch I2C, das ist ein Bus für viele Teilnehmer" zurück. Will er möglicherweise auch garnicht lesen.

Dein Link sagt "Mehr als 10 verfügbar" in Berlin

Der Link sagt auch klar, dass es gar kein Arduino Mega ist, weder mit 16U2 noch mit 8U2. Aber die 3 bis 4 HardwareSerials sollten, wenn "Kompatibel" schon auf Pins rausgeführt sein.

Mal was anderes nebenbei.

@Techniker89 Läuft denn mittlerweile deine Relaissteuerung, mit der du Probleme hast ? Eine Rückmeldung ist hier schon angebracht, da ja einige dir geholfen haben.

Das gehört schon zum guten Ton dieses Forums.

Aber die 3 bis 4 HardwareSerials sollten, wenn "Kompatibel" schon auf Pins rausgeführt sein.

Richtig! Das Pinout eines Mega R3. Also ja.

Nur eben keinen Atmel als USB Dingen.

Beim CH340 weiß ich nicht, ob er den Seriellen Pin blockiert, wenn er nicht an USB steckt.

Bei den ATMega 16U1/8U2, weiß ich, dass man sie tot schalten kann und darf. Spart auch Strom wg. der Batterie, wenn denn nötig.

Hallo,

danke für eure Antworten! Ich hab es jetzt so verstanden:

Serial3.print('A');

Läuft aber leider nicht.

@HotSystems: Da kümmer ich mich wahrscheinlich morgen wieder drum. Mal schauen. Laufen tut's ja erstmal.

Läuft aber leider nicht.

Doch! Tut es wohl!

Sender:

void setup() {
Serial.begin(9600);
}
void loop(){
if(B23 == LOW) Serial3.print('A');
else Serial3.print('B');
}

Empfänger:

char i;
void setup() {
Serial.begin(9600);
}
void loop(){
if(Serial3.available())  {
  i = Serial3.read();
}
if(i=='A')  B23 = LOW;
if(i=='B')  B23 = HIGH;
}

Beide Arduinos sind über GND und TX3 bzw. RX3 miteinander verbunden. Ich weiß nicht mehr weiter...