Hallo Leute, ich möchte eine RC Fernsteuerung für einen Panzer bauen, das ganze auf Arduino Basis. Ich verwende zwei Mega 2560 Boards und 2 2,4GHz Xbee Module. Über diese möchte ich eine normale Serielle Kommunikation der beiden Arduinos herstellen. Dies funktioniert einwandfrei, ich konnte bereits eine Verbindung herstellen und die Kommunikation war vorhanden. Als Test habe ich die xbees durch kabel ersetzt, dies funktionierte ebenfalls. Im Prinzip soll jeder Eingang ausgelesen werden, der Wert übertragen werden und wieder ausgegeben werden. Nun meine Fragen: 1. Wie kann ich (welche(r) Befehl(e)?) mehr als eine Variable übertragen, bzw. wir kann ich die Werte codieren. 2. Sollte ich das Programm (z.B. wenn 2 Inputs an, dann mach am Empfänger Output x an oder so)besser auf den Empfänger oder Sender schreiben oder aufteilen? 3. Kann ich auch die Analogen Signale übertragen und als PWM ausgeben, z.B. für die ansteuerung von Motoren? Vielen Dank im Vorraus, Steffen_N
Was du überträgst, bleibt ganz alleine dir überlassen. Denk dir halt zb eine Kommando-Sprache aus. Zum Beispiel nach dem Muster
1 | <Schlüsselbuchstabe> <Wert> <Zeilenvorschub> |
zum Beispiel sendet der Sender
1 | L 128 |
2 | R 128 |
3 | T 20 |
4 | S 0 |
5 | B 0 |
6 | L 127 |
7 | R 128 |
8 | ... |
und das bedeutet:
'L' wie 'Geschwindigkeit der linken Kette'
'R' wie 'Geschwindigkeit der rechten Kette'
'T' wie 'Neigung des Geschützrohres im Turm'
'S' wie 'Helligkeit des SCheinwerfers'
'B' wie 'Helligkeit des Bremslichtes
also hat der Sender gerade zum Empfänger übertragen:
Linke Kette mit der Geschwindigkeitsstufe 128 fahren lassen. Und zwar
vorwärts (rückwärts wären dann zb negative Werte)
Rechte Kette ebenfalls mit 128 vorwärts fahren lassen
Geschützrohr soll einigermassen waagrecht sein
Licht ist aus, Bremslicht ist auch aus.
Der Empfänger holt sich das Zeile für Zeile in einen String und wenn er
eine Zeile beisammen hat, sieht er sich den ersten Buchstaben der Zeile
an, der Aufschluss darüber gibt, was mit dem nachfolgenden Wert
geschehen soll.
Du bist der Programmierer. An dieser Stelle bist du Gott. Du definierst
Kraft deines Amtes, wie die Dinge funktionieren sollen.
> 3. Kann ich auch die Analogen Signale übertragen und als PWM ausgeben,
Wer sollte dich daran hindern? Was die Zahlen ausdrücken und was der
Empfänger damit macht, programmierst ja schliesslich du. Wenn der Sender
eine SPannung misst und die sich daraus ergebende Zahl vom ADC zusammen
mit dem richtigen Schlüsselbuchstaben auf der Kommunikationsstrecke
ausgibt und der Empfänger mit dieser Zahl dann eine PWM füttert, dann
ist das eben so. Im Endeffekt kannst du dann im Sender durch drehen
eines Potis die Helligkeit der Scheinwerfer einstellen. Das da
zwischendurch aus der Potistellung eine Spannung wurde, aus der Spannung
ein Zahlenwert, aus dem Zahlenwert ein Text der auf die Reise ging, beim
Empfänger wieder in eine Zahl umgewandelt und auf die Scheinwerfer-PWM
gelegt wurde, muss dich ja als Fahrer nicht interessieren. Der dreht nur
um Poti und die Scheinwerfer werden heller oder dunkler.
:
Bearbeitet durch User
Danke schon mal für deine Antwort, das hat mir schon sehr geholfen. Wie lautet den der Befehl zum auslesen? Serial.read(???); und wie kann ich die verschiedenen Kanäle voneinander trennen? Gruß, Steffen
Es gib nur eine serielle Schnittstelle. Alles andere muss durch dein Protokoll getrennt werden.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.