Pages: 1 [2]   Go Down
Author Topic: Kommunikation zwischen 2 "Arduinos"  (Read 2802 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 1
Posts: 209
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok, das mit der Synchronisation wäre eine Überlegung Wert, ich halte dieses Vorgehen allerdings nicht für sehr gut,
da ich vom PC an Arduino1 und von Arduino1 an Arduino2 mittels Serial die Daten sende und das deshalb lieber so machen möchte, dass er immer den gesamten Frame sendet.

Edit: Ich habe die Strings genommen, um die durch Serial.read erhaltenen Werte aneinanderzuhängen, also z.B. 2 5 5 zu 255.
Wie soll ich das ganze mit einem byte-Array für die Pixelfarben und der Übertragung in bytes machen?

Komisch ist ja auch, dass mit 9600-baud alles klappt (2FPS) und wenn ich die baud-Rate erhöhe, es nicht mehr funktioniert.
« Last Edit: October 12, 2012, 04:22:49 pm by Nathax » Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 209
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Außerdem, wie soll ich die Kommunikation ohne Kommata durchführen?
Wenn ich die z.B. 0, 50, 0 habe, woher soll der Arduino wissen, dass 0500 dieser Farbe entspricht?
Andersrum: Wie könnte ich das machen um das so zu senden: 000050000?
Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 108
Posts: 5145
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Ok, das mit der Synchronisation wäre eine Überlegung Wert, ich halte dieses Vorgehen allerdings nicht für sehr gut, da ich vom PC an Arduino1 und von Arduino1 an Arduino2 mittels Serial die Daten sende und das deshalb lieber so machen möchte, dass er immer den gesamten Frame sendet.

Es geht ja gerade darum, immer den gesamten Frame zu senden, eine Synchronisation ist trotzdem notwendig.

Quote
Wie soll ich das ganze mit einem byte-Array für die Pixelfarben und der Übertragung in bytes machen?

Jedes Byte ist eine Pixel-Grundfarbe, 3 Bytes sind also ein ganzes Pixel.

Quote
Komisch ist ja auch, dass mit 9600-baud alles klappt (2FPS) und wenn ich die baud-Rate erhöhe, es nicht mehr funktioniert.

Solange Du SoftwareSerial verwendest, wundert mich das nicht.

Quote
Außerdem, wie soll ich die Kommunikation ohne Kommata durchführen?

Hast Du Dir den Code von mir angeschaut? Dort wird jeweils ein Byte pro Pixel und Farbe gesendet und Du hast überhaupt keinen Trennbedarf.
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 209
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich verwende kein Softserial und trotzdem klappt es nur bei 9600baud.
Bei deinem wird doch ein zusätzlicher Pin benutzt, für die Synchronisation, oder?
Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 108
Posts: 5145
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Bei deinem wird doch ein zusätzlicher Pin benutzt, für die Synchronisation, oder?

Das war eine Anmerkung, falls Du eine Synchronisation brauchst. Wenn Du sicherstellen kannst, dass die Arduinos immer in der richtigen Reihenfolge gestartet werden und jedes Byte wirklich über die serielle Schnittstelle geht, kannst Du Dir das auch sparen. Falls Du eine Synchronisation willst/brauchst, habe ich Dir eine rein softwaremässige Möglichkeit auch aufgezeigt. Liest Du meine Posts überhaupt?
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 209
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ja, sicherlich lese ich deine Posts, und die haben mir ja auch schon weitergeholfen.
In dem Punkt mit der Synchronisation haben wir uns einfach falsch verstanden.  smiley
Ich werd deinen Sketch sobald wie möglich nochmal ausprobieren.
Ich muss das ganze dann aber umschreiben für PC-Arduino.
« Last Edit: October 15, 2012, 09:49:00 am by Nathax » Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 108
Posts: 5145
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Ich muss das ganze dann aber umschreiben für PC-Arduino.

Was ist PC-Arduino?

Quote
Ich verwende kein Softserial und trotzdem klappt es nur bei 9600baud.

Wie verhält es sich denn, wenn es nicht klappt? Werden falsche Werte angezeigt oder bleibt das Ganze einfach stehen?
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 209
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich muss zunächst eine stabile Verbindung zwischen PC und Arduino herstellen, später kümmer ich mich dann auch um Arduino<->Arduino.

Wenn ich die baud-Rate erhöhe wird manchmal der falsche RGB-Wert eingetragen oder das erste Pixel nicht ausgefüllt.
Logged

Heilbronn
Offline Offline
Full Member
***
Karma: 4
Posts: 149
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

bei serieller Übertragung bin ich immer für einen CRC-Check. Evtl. solltest Du diesen noch mit einbauen. Oft reicht zur Fehlererkennung ein einfaches XOR über alle Daten.

Grüße,
Jürgen
Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 108
Posts: 5145
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Wenn ich die baud-Rate erhöhe wird manchmal der falsche RGB-Wert eingetragen oder das erste Pixel nicht ausgefüllt.

Das wäre dann eben die fehlende Synchronisation. Der Arduino muss ja wissen, wo angefangen wird. Klar kannst Du einfach definieren, dass der Arduino warten muss und wenn der PC dann beginnt, Daten zu schicken, dann muss er einfach immer schön im Takt bleiben, aber solche ideale Zustände hast Du in der Praxis häufig nicht. Das ist genau der Grund, wieso ich den Trick mit den reservierten 255-Werten (0xFF) verwendet hätte. Den kannst Du schon vom PC aus verwenden.

Du solltest wahrscheinlich Deinen ganzen Code posten, damit wir ihn mal durchsehen können. Die grundsätzliche Kommunikation mit dem PC sollte auch bei hohen Baudraten zu keinen Problemen führen, bis 57600 hatte ich nie Probleme. Deshalb vermute ich ein Problem in Deinem Sketch.
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 209
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich hab momentan nicht viel Zeit.
Ich werde aber sobald wie möglich den Sketch posten, das könnte allerdings noch etwas länger dauern.
Logged

Pages: 1 [2]   Go Up
Jump to: