Go Down

Topic: Zwei Arduinos Seriell verbinden (Read 1 time) previous topic - next topic

jurs


Massen sind verbunden!


Sehr merkwürdig. Schaltung mit verbundenen Massen und passende Sketche, das sollte eigentlich funktionieren.

Testest Du schon mit 40m Leitung dazwischen?
Wenn ja, was für eine Leitung?
Oder testest Du erstmal mit einer kürzeren Leitungslänge?

Haben beide Boards einen 16 MHz Quarz drauf?
Oder sind das Board-Designs, die ihre Frequenz nur über Resonatoren stabil halten?

Ändert sich etwas, wenn Du auf der Empfangsseite die serielle Schnittstelle mal mit einer knapp neben der Soll-Baudrate liegenden Baudrate initialisierst, also z.B. statt
Serial1.begin(9600);
mal versuchen zu empfangen mit:
Serial1.begin(9500);
oder
Serial1.begin(9400);
oder
Serial1.begin(9700);
oder
Serial1.begin(9800);

Wird dann noch etwas empfangen?
Wird es besser/richtiger oder noch schlechter?

Arduinoianer

#6
Mar 24, 2013, 01:10 pm Last Edit: Mar 24, 2013, 01:15 pm by Arduinoianer Reason: 1
Hallo,

beide haben 16MHz Quarz
Kabellänge ca 10cm


der gibt das hier:

Code: [Select]

110010
110001
110011


immer als Block auf einmal aus.... das wundert mich halt!

jurs

#7
Mar 24, 2013, 01:33 pm Last Edit: Mar 24, 2013, 02:05 pm by jurs Reason: 1

der gibt das hier:

Code: [Select]

110010
110001
110011


immer als Block auf einmal aus.... das wundert mich halt!


Verstehe, alles klar soweit, ist nur ein kleiner Fehler beim Sender drin.

Du empfängst den ASCII-String "213".

Das ist die binäre Zahl 0b11010101 umgewandelt als Dezimalzahl in einen String. Sowas macht "print", also der Sender. Der sendet dann die drei Zeichen "213" hintereinander weg statt nur der Zahl in einem Byte binär codiert.

Wenn Du die Zahl als Binärcode senden möchtest, müßte es beim Sender heißen:
Serial.write(0b11010101);
Dann geht bei jedem Senden nur ein Byte über die Leitung.
(Sorry, mein Fehler in meinem ersten Posting für den Sender "print" statt "write" zu schreiben.)

Arduinoianer

Hallo Jurs,

genau so funktionierts jetzt.

Hier poste ich nochmal den Kompletten Quellcode


Sender (Arduino UNO)

Code: [Select]
void setup()
{
 Serial.begin(9600);
}

void loop()
{
 // send data
 Serial.write(0b11111111);
 delay(1000);
}


und der Empfänger Arduino Mega

Code: [Select]
byte val;

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

void loop()
{
if (Serial1.available())
{
  val = Serial1.read();
  Serial.println(val,BIN);
}
}


Danke!

Go Up