PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 2 RP6 sollen miteinander Kommunizieren



KTM-Driv3r
07.04.2012, 12:53
Hey
Ich bin neu hier und habe noch 0 erfahrung mit dem Rp6
Beispielprogramme usw kann ich alles hochladen das klappt.
jetzt will ich ein Vorhandens Programm ändern.

Was ich im großen und ganzen vor habe ist:
2 Roboter fahren umher, der eine Sendet ein Infrarot signal aus und der andere sucht es.

wie ich dir IR's ansteuer sollte ich noch hinbekommen aber wie schaffe ich es das er etwas bestimmtes Sendet und der andere Roboter dieses auch erkennt??


Danke schonmal

Mfg

radbruch
07.04.2012, 14:30
Hallo

Willkommen im RN-Forum. :)

Serielle IR-Kommunikation mit Bordmitteln:
https://www.roboternetz.de/community/threads/29313-gel%C3%B6st-Einfache-IR-Kommunikation-f%C3%BCr-den-RP6
(Bitte auch die Warnhinweise beachten.)

Viel Spaß mit dem RP6.

Gruß

mic

KTM-Driv3r
16.04.2012, 10:24
Hey
soweit versteh ich deinen Ansatz einigermaßen. Danke
Aber da ich vom Rechner aus keinen IR-Adapter habe kann ich wenn ich dein Progamm auf meinen RP6 laden würde ja nicht viel damit anfangen.

Der RP6 auf den ich dein Programm laden würde, würde ja dauerhaft senden, er muss ja aber auch teilweise zuhören.
den 2. RP6 müsste ich dann so programmieren, das er empfängt und bei einem bestimmten signal selbst etwas sendet.

SlyD
16.04.2012, 12:27
Hallo,

die RP6Lib hat für das IR COMM schon fertige und funktionierende Routinen wo man nichts weiter umändern oder beachten muss.
Da kann man einfach RC5 Codes (IR Fernbedienung) senden und empfangen - das stört so auch insbesondere das ACS nicht.

Wie das geht steht in der Anleitung. Zum Empfang der Daten gibts ein Beispielprogramm (TV REMOTE).
Senden ist ja recht einfach.

Zitat aus der RP6Lib:



/**
* This function initiates a RC5 transmission with the IRCOMM.
* You need to call the "task_ACS()" function (s. below) frequently
* out of the main loop - otherwise it will not work! (this is required
* because it needs to be synchronized with the ACS...)
* The transmission itself is interrupt based and takes about 20ms.
* Warning: The IRCOMM_sendRC5 function blocks ACS operation until
* transmission is finished!
*
* The address byte contains the device address and the togglebit.
* Address is 5 bit + 1 toggle bit, data is 6 bit.
* You can use some of the address bits for data if you need 8 bit
* data!
*
* Example:
* IRCOMM_sendRC5(10 | TOGGLEBIT, 40);
* // This transmits 40 to the device with address 10.
* // The togglebit is set.
*
* IRCOMM_sendRC5(10, 40);
* // This is nearly the same but the Togglebit is NOT set.
*
* IRCOMM_sendRC5(30, 60);
* // This is another transmission with device address 30 and 60 as data
* // with togglebit NOT set.
*
*/
void IRCOMM_sendRC5(uint8_t adr, uint8_t data)



Mit einer Übetragung sendest du da also 12 Bit. Wenn die 6 Bit Daten nicht reichen kannst
Du die Bits ein bisschen >> hin und her << shiften um die da passend in Adressbits und Daten rein zu zwängen ;)


MfG,
SlyD

PS:
Achja etwas vorsicht mit den Adressbits, sonst schaltest Du evtl. versehentlich irgendwelche TV / Radio Geräte an/aus ;)

KTM-Driv3r
16.04.2012, 14:14
Hey
Danke

die RP6-Lib für die IR comm kann ich mit dem AVR-Studio einfügen oder?

Das Beichspielprogramm kenn ich, habe da auch schon etwas rumgespielt

schon mal danke, ich werde mich mal daran versuchen

MfG,

SlyD
16.04.2012, 14:30
Kannst Du in jede IDE einfügen.

Oder Du nimmst das fertige Makefile was mit dabei ist und einen beliebigen Text Editor wie PN2 - wird bei WinAVR mitinstalliert.