Go Down

Topic: Drei Arduinos miteinander verbinden (Read 6916 times) previous topic - next topic

HotSystems

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.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

combie

#16
Feb 01, 2017, 11:52 pm Last Edit: Feb 01, 2017, 11:55 pm by combie
Quote
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.
Alle sagen: Das geht nicht!
Einer wusste das nicht und probierte es aus.
Und: Es ging nicht.

Techniker89

Hallo,

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

Code: [Select]
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.

combie

Quote
Läuft aber leider nicht.
Doch!
Tut es wohl!
Alle sagen: Das geht nicht!
Einer wusste das nicht und probierte es aus.
Und: Es ging nicht.

Techniker89

Sender:
Code: [Select]

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


Empfänger:
Code: [Select]

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...

agmue

Wenn Du Serial3.print verwendest, brauchst Du auch Serial3.begin(9600); für die Initialisierung.
Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

Techniker89

Danke, das hatte ich vergessen.
Wie kann ich denn jetzt Zeichenketten aus mehreren Buchstaben übergeben? Mit "ABC" funktioniert es nämlich nicht.

combie

Alle sagen: Das geht nicht!
Einer wusste das nicht und probierte es aus.
Und: Es ging nicht.

Techniker89

Wenn ich es auf dem Seriellen Monitor eingebe, funktioniert es genauso wenig, wie wenn ich es von Arduino zu Arduino übertrage. Was ist denn die maximale Zeichenanzahl für ein char?

Tommy56

Was ist denn die maximale Zeichenanzahl für ein char?
Na 1 char, was denn sonst.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

combie

Quote
Beide Arduinos sind über GND und TX3 bzw. RX3 miteinander verbunden.
Dir ist schon klar, dass du die Leitungen kreuzen musst?
Also jeweils Tx mit Rx verbinden.
Alle sagen: Das geht nicht!
Einer wusste das nicht und probierte es aus.
Und: Es ging nicht.

Techniker89

#26
Feb 04, 2017, 07:12 am Last Edit: Feb 04, 2017, 07:48 am by Techniker89
Na 1 char, was denn sonst.
Also ein Zeichen, oder wie? Also kann ich gar kein "ABC" in einer char-Variable speichern? Wie soll ich es dann auch übertragen können?

Dir ist schon klar, dass du die Leitungen kreuzen musst?
Logisch, so doof bin ich nun auch wieder nicht. Allerdings in meinem Fall nur in eine Richtung.
Wie gesagt: Über den seriellen Monitor funktioniert es ja auch nicht.

combie

#27
Feb 04, 2017, 09:13 am Last Edit: Feb 04, 2017, 10:06 am by combie
Quote
Also kann ich gar kein "ABC" in einer char-Variable speichern?
Du könntest dir ein char Array basteln...(mit einer Null hinten dran)
Sowas nennt man dann auch schon mal C-String...
Und sowas kann man dann natürlich auch versenden.
Alle sagen: Das geht nicht!
Einer wusste das nicht und probierte es aus.
Und: Es ging nicht.

agmue

#28
Feb 04, 2017, 10:43 am Last Edit: Feb 04, 2017, 12:27 pm by agmue
Dir ist schon klar, dass du die Leitungen kreuzen musst?
Logisch, so doof bin ich nun auch wieder nicht.
Mir hat so ein Hinweis mal geholfen, mit doof hat das nichts zu tun. Bei I2C mußt Du SCL mit SCL und SDA mit SDA verbinden, weil es ein Bus ist. Bei RS232 verbindest Du RX des Computers mit RX des Akustikkopplers, ebenso TX mit TX. Computer und Akustikkoppler auf der anderen Seite der Telefonleitung machen es genauso. Entfällt nun die Telefonleitung einschließlich Akustikkoppler, benötigst Du ein Nullmodemkabel mit RX und TX gekreuzt.

Schwierig wird es beispielsweise bei Druckern, da sie sich als auf der anderen Seite der Telefonleitung befindlich wähnen können (Nullmodemkabel) oder als Modem angeschlossen werden möchten (RX-RX, TX-TX).

Schnee von gestern? Durchaus nicht, da beispielsweise MOSI und MISO auf Perepherieboards mal so beschriftet sind, wie sie mit dem Arduino verbunden werden wollen (MOSI-MOSI, MISO-MISO) oder wie die Funktionalität es vorgibt (MOSI-MISO, MISI-MOSI). Auch bei Netzwerkkabeln gibt es welche mit und ohne Kreuzung. Siehe Patchkabel und Crosskabel.

Korrektur: MOSI und MISO sind auch ein Bus (SPI), also MOSI mit MOSI und MISO mit MISO verbinden.
Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

combie

Quote
oder wie die Funktionalität es vorgibt (MOSI-MISO, MISI-MOSI).
Nein!
Das raucht.
Da darf nichts gekreuzt werden.

Mosi -- Master Out, Slave In
Miso -- Master In, Slave Out

Alle sagen: Das geht nicht!
Einer wusste das nicht und probierte es aus.
Und: Es ging nicht.

Go Up