Am Arduino MEGA mehrere Serialports nutzen

Vorweg, ich bin ziemlich neu in der Arduinowelt, also ja...
aber folgendes:

Ich habe 3 Arduino Nanos an denen ein Taster und eine LED hängt, nun will ich dass die Nanos den Status des Tasters (also zu oder auf) an einen Arduino Mega übermitteln und dieser Stellt dies auf einem Display dar, welcher Taster zu ist und welcher nicht.
Kann man da einfach die 3 RX / TX Ports am MEGA nutzen, und wie geht das überhaupt (ein bestimmten von den dreien ansprechen, weil es soll auch noch was zurück an die Nanos geschickt werden)
Oder könnte man das auch mit einem UNO lösen, oder bin ich da ganz falsch?

Danke schonmal für Antworten

Schau mal bei Serial, da steht was dazu.

Hi

Wie weit sind die Arduinos von einander entfernt?
Was macht der Mega noch?
Also: Brauchst Du den Mega, oder kam Der nur in die engere Wahl, weil Der mehrere serielle Schnittstellen hat?

Mein Weg wäre, bei entsprechend kleiner Entfernung, I²C.

MfG

Also die Arduinos sind so unter 3m auseinander.
Im Prinzip ist der Mega egal, dachte das halt nur wegen den 3 Ports..., wäre auch mit dem UNO zum Beispiel OK.
An dem Hängt nur das Display und eins zwei Schalter.
Ich wollte es so günstig und einfach wie möglich halten, ist nämlich für ein Schulprojekt.
Was ist den I2C? Ist das teuer und was braucht man dafür?

MFG

aviation_lg:
Also die Arduinos sind so unter 3m auseinander.

Dann fällt I2C leider aus oder Du nimmst zusätzliche Hardware.

agmue:
Dann fällt I2C leider aus oder Du nimmst zusätzliche Hardware.

Und die Port-Extender sind ja nun auch nicht so aufwändig und teuer.

Im übrigen ist I2C ein Datenbus, der Hardwaremäßig im Controller integriert ist, also da schonmal nix extra kostet.

Ok, heißt dass ich muss einen Extender kaufen/bauen (hat jmd evtl einen Link) wenn ich mehr als einen weiteren Arduino kommunizieren lassen will, oder? Also im Prinzip dann nur einen Extender an den Master und alle Slaves da angekabelt

Und wie programmiert man das dann? Und geht das in beide Richtungen?

HotSystems:
Und die Port-Extender sind ja nun auch nicht so aufwändig und teuer.

Im übrigen ist I2C ein Datenbus, der Hardwaremäßig im Controller integriert ist, also da schonmal nix extra kostet.

Aber 3x 3m sind für den I2C Bus zu lang. Da braucht es I2C expander als zusätzliche Hardware.

Grüße Uwe

Ok, wenn das so ist, geht das dann erstmal nur zum testen, und um das einfach zu halten, wenigstens nicht erstmal mit den 3 RX/TX Ports, an z.B an nem MEGA, das kommunizieren zu lassen oder ist das unmöglich?
Oder gibt es noch ne ganz andere Lösung?

also du kannst imho:

a) jeden UNO mit einem eigenen seriellen Port des Megas Bidirektional sprechen lassen. Bei 3 Meter würde ich auf alle Fälle mindestens RS232 vorsehen. TTL-RS232 Wandler git es für kleines Geld, wenn man nicht selber löten will.

b) wenn du am MEGA nur einen Port belegen willst, wäre RS485 eine Möglichkeit. Auch dazu gibt es TTL-RS485 Wandler für kleines Geld

c) Aber eigentlich gefällt mir mittlerweile auch CAN Bus ganz gut. Die billigen Module laufen meist über SPI und du brauchst daher je Uno/Mega 4 Freie Pins (außer du verwendest schon SPI, dann halt nur ein Zusätzlicher CS).

alle 3 Möglichkeiten wären für "3 Meter" geeignet.

aviation_lg:
Ok, heißt dass ich muss einen Extender kaufen/bauen (hat jmd evtl einen Link)

Je Arduino benötigst Du einen Extender. I2C-Extender Testplatine mit P82B715

Lesestoff: Tutorial: Arduino and the I2C bus und Part Two

aviation_lg:
Und wie programmiert man das dann? Und geht das in beide Richtungen?

Der Extender verändert nur das elektrische Signal, das Programm weiß nichts davon. Du kannst also zunächst ohne Extender probieren, ob Dir der I2C-Bus gefällt.

I2C ist ein Bus, also geht es in beide Richtungen.

aviation_lg:
Oder gibt es noch ne ganz andere Lösung?

CAN-Bus wurde schon erwähnt, wird in manchen Autos verwendet. Ich habe gerade mit diesen Boards probiert.

Also, erstmal vielen Dank für eure Antworten! ;D

Ich werde jetzt mal überlegen wie ich das am besten mache, melde mich dann nochmal