PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Asuro mit IR Fernbedienung eines DVD Players/Beamers steuern



Stebsi
14.10.2005, 08:40
Hallo!

Ich habe jetzt eine Steuerung programmiert die es mir ermöglicht den Asuro über den Ziffernblock bei der Tastatur fahren zulassen / zu steuern.



//////////////////////////////////////////////////////////////////////
// //
// Programmiert von: Stefan Bösing //
// Funktion des Programmes: Robotersteuerung über Ziffernblock //
// Copyright 2005 //
// http://www.stebsi.com/asuro //
// //
//////////////////////////////////////////////////////////////////////



#include "asuro.h"

int main(void)
{

Init();
unsigned int i;
unsigned char j;
unsigned int speed;
char daten[] = "0";

SerWrite("\rBin bereit zum Starten!\r",25);
anfang:
StatusLED(GREEN);
SerRead(&daten[0],1,0); // DATEN EMPFANGEN
if(daten[0] == '8') // Wenn 8 vorwärts
{
MotorDir(FWD,FWD);
MotorSpeed(0xFF,0xFF);
SerWrite("\rVorwärts!\n\r",10);
BackLED(OFF,OFF);
FrontLED(ON);
goto anfang;
}
if(daten[0] == '7') // Wenn 7 linkskurve
{
MotorDir(FWD,FWD);
MotorSpeed(100,0xFF);
SerWrite("\rVorwärts links!\n\r",16);
BackLED(ON,OFF);
FrontLED(ON);
goto anfang;
}
if(daten[0] == '9') // Wenn 9 rechtskurve
{
MotorDir(FWD,FWD);
MotorSpeed(0xFF,100);
SerWrite("\rVorwärts rechts!\n\r",17);
BackLED(OFF,ON);
FrontLED(ON);
goto anfang;
}
if(daten[0] == '2') // Wenn 2 rückwärts
{
MotorDir(RWD,RWD);
MotorSpeed(0xFF,0xFF);
SerWrite("\rRückwärts!\n\r",11);
FrontLED(OFF);
BackLED(ON,ON);
goto anfang;
}
if(daten[0] == '1') // Wenn 1 rückwärtslinks
{
MotorDir(RWD,RWD);
MotorSpeed(100,0xFF);
SerWrite("\rRückwärts links!\n\r",17);
FrontLED(OFF);
BackLED(ON,OFF);
goto anfang;
}
if(daten[0] == '3') // Wenn 3 rückwärtsrechts
{
MotorDir(RWD,RWD);
MotorSpeed(0xFF,100);
SerWrite("\rRückwärts rechts!\n\r",18);
FrontLED(OFF);
BackLED(OFF,ON);
goto anfang;
}
if(daten[0] == '4') // Wenn 4 nach links drehen
{
MotorDir(RWD,FWD);
MotorSpeed(125,125);
SerWrite("\rDrehen links!\n\r",13);
FrontLED(OFF);
BackLED(ON,OFF);
goto anfang;
}
if(daten[0] == '6') // Wenn 6 nach rechts drehen
{
MotorDir(FWD,RWD);
MotorSpeed(125,125);
SerWrite("\rDrehen rechts!\n\r",15);
FrontLED(OFF);
BackLED(OFF,ON);
goto anfang;
}
if(daten[0] == '5') // Wenn 5 stop
{
MotorDir(FWD,FWD);
MotorSpeed(0,0);
SerWrite("\rStop!\n\r",6);
FrontLED(OFF);
BackLED(OFF,OFF);
goto anfang;
}
if(daten[0] == '-') // Wenn - langsamer
{
FrontLED(OFF);
BackLED(ON,ON);
SerWrite("\rBremsen!\n\r",9);
for (speed = 0xFF; speed > 0; speed --) {
for (i = 0; i < 0x1FFF; i++)
for (j = 0; j < 0x1F; j++);
MotorSpeed(speed,speed);
}

goto anfang;
}
if(daten[0] == '+') // Wenn + schneller
{
FrontLED(ON);
BackLED(OFF,OFF);
SerWrite("Beschleunige!\n\r",14);
for (speed = 0; speed < 0xFF; speed ++) {
for (i = 0; i < 0x1FFF; i++)
for (j = 0; j < 0x1F; j++);
MotorSpeed(speed,speed);
}

goto anfang;
}
return 0;
}


Nun möchte ich den Roboter gerne mit einer Fernbedienung (eines DVD-Players oder eines Beamers oder ähnliches) steuern.

Wenn ich auf der einen Fernbedienung die Taste für oben drücke gibt mir Hyperterminal folgendes aus:


€]UUUUÕuUUÝ]Wu

Ich möchte das der Asuro jetzt nach vorne fährt.

versuche mit:



SerRead(&daten[0],14,0); // DATEN EMPFANGEN
if(daten[0] == '€]UUUUÕuUUÝ]Wu') // Wenn €]UUUUÕuUUÝ]Wu (oben) dann vorwärts
{
MotorDir(FWD,FWD);
MotorSpeed(0xFF,0xFF);
SerWrite("\rVorwärts!\n\r",10);
BackLED(OFF,OFF);
FrontLED(ON);
goto anfang;
}


sind gescheitert.

In anderen Themen zur ASURO Fernbedienung habe ich gelesen das man da einen umsetzer benötigt. Nur bin ich daraus nicht wirklich schlau geworden was gemeint ist.

Dann habe ich noch was gelesen mit der RC5 Daten, aber was ich da machen muss weiß ich auch nicht.

Viele Grüße
Stefan

xyphrox
14.10.2005, 09:40
da hast du dir ja gut was vorgenommen.

ich bin mir aber nicht sicher ob man das so über die fernbedienung regeln kann....
eventuell ist das signal zu schwach.

aber ich überleg nochmal...

Winne
14.10.2005, 11:20
Hallo Stebsi,

der IR-Code von Deiner Fernbedienung muss noch angepasst werden. Wenn Du die Tasten auf der DVD Bedienung betätigst (mehrmals am besten) wird der HEX Wert auf dem HT ausgegeben. Der Wert ist dann in der IRDemo.c
unter

#define DIARWD 0xB44B
#define DIAFWD 0xB54A
#define DIALEFT 0xF40B
#define DIARIGHT 0xF708
#define DIASTOP 0xB649

anzupassen. Grund des scheiterns die Daten werden anders gelesen als gedacht. Stichwort Toggelbits!!

Gruss Winne

Stebsi
14.10.2005, 11:58
Die Fernbedienung kann ich nicht anpassen.
Die ist fertig von Panasonic =) Da kann ich nichts ändern. :(

Das Einzige was ich da ausgegeben kriege sind andere Zeichenfolgen:
z.B. auch noch "ÛûÛû" und ähnliches.

Winne
14.10.2005, 12:02
Sorry, wenn ich mich nicht klar ausgedrückt habe. Ich meinte eingentlich das der Code im IRDemo.c angepasst werden soll.

Stebsi
14.10.2005, 14:50
Nicht schlimm, ok

muss da dieses "ÛûÛû" rein???

Winne
14.10.2005, 15:35
nein, es wird z.B. der Wert B44B angezeigt im Hyperterminal ausgegeben. Das ist dann einzutragen. ( #define DIARWD 0xB44B )
Übertrage mal meine main.hex Datei in den Asuro und bentzte mal eine andere Fernbedienung, weil das nicht mit jeder funktioniert.
Die Trägerfrequenz des Signals muss 36KHz betragen--> Sonst Müll. Der Code muss immer wieder der gleiche sein.

Gruss Winne

Achill
19.12.2005, 18:14
Diese Sache hat mich auch interesiert,
Da gibt es jemand in Holland der solche sachen produziert hat. Aber die Website mit den downloads gibt's nicht mehr. (kann sie nicht finden) nur im Google cache sind noch spuren.
Suche nach 'Henk van Winkoop Asuro'
Das Program 13 wäre es. In einem anderen Forum wird ein Programm von ihm erwäht, das mittels der Motoren musik machen kann! (Prog 20)

RoboterStef
19.12.2005, 20:21
könnt ihr auch son Programm für den RobbyRP5 entwerfen?(sowohl dieses 1. Steuerding, alsauch dieses Ir-"Rausfindprogramm") wär sehr net...ich bin etwas faul, krieg ne totale kriese, wenn etwas nicht so funst, wie ich es mir vorstelle ^^

MFG
Stefan

Dirk
19.12.2005, 20:58
Hallo Stefan,


könnt ihr auch son Programm für den RobbyRP5 entwerfen?(sowohl dieses 1. Steuerding ...
Gibt's schon: 9_EINFÜHRUNG_REMOTE_CONTROL2.bas


... als auch dieses Ir-"Rausfindprogramm")
Gibt's schon: 2_ERWEITERUNG_LCD.bas

Das erste Prog wird mit dem RP5 geliefert, das 2. gehört zu den Demos für die Basiserweiterung und braucht das LCD.

Gruß Dirk

RoboterStef
19.12.2005, 21:01
ah danke, wust ich nicht, die CD habe ich auch irgendwie verschlampt, in meinem Roboterfreiem Jahr (ja, gekauft ausprobiert, in ner kiste im Zimmer "rumfliegen" gelassen.. nach einem Jahr wieder zum leben erweckt...Basiserweiterung und LCD gekauft, ....)^^

Edit: ich bekomme jetzt (je nach Fehrnbedinung) die Werte 32, 63 bzw. 59 Angezeigt(egal auf welcher Taste (ist das richtig so?)), was muss ich dann wie am Fernbedienungscode ändern?


Edit: Achja, die CD habe ich inzwischen wiedergefunden, aber noch net draufgeguckt...

izaseba
19.12.2005, 21:49
.ich bin etwas faul, krieg ne totale kriese, wenn etwas nicht so funst, wie ich es mir vorstelle ^^

*lol*

RoboterStef
20.12.2005, 06:21
.ich bin etwas faul, krieg ne totale kriese, wenn etwas nicht so funst, wie ich es mir vorstelle ^^

*lol*

ja, da kanste lachen, ist aber halt so...

m.a.r.v.i.n
21.12.2005, 11:57
@Achill

die Seite mit den ASURO Beispielen von Arexx-Henk ist hier zu finden:
http://www.arexx.com/downloads/Asuro_Henk/AsuroIdx.htm

Gruß Peter

Elle
01.02.2006, 20:42
hi ich ahb mal ein programm verbessert und das sieht jetzt so aus damit müsstest du dein asuro steuern können.
tasten der Fernbedienung: Kanal hoch = vorwärts
kanal runter = rückwerts
Volume- = Links
Volume+ = rechts


probiere aber mal verschiedene fernbedienungen aus.

Viel Glück



MFG

Elle

RoboterStef
02.02.2006, 06:44
Wo muss man denn nun den IR Code im Prgramm eingeben, der beimersten Prog (diesem Antzeigeprogrammm) angezeigt wird?

Elle
11.02.2006, 17:39
Hi deine codes der ferbedienung die du auf dem computer empfangen hast musst du nirgents reinschreiben.Sonder nur die commant bits.
Die codes die du empfangen hast sind bei jeder fernbedienung unterschiedlich die commant bits aber gleich.
Lad dir mal das programm aus dem 2. Link runter.
Oben im programm findest du "#define CH_DOWN 0x21
das 0x21 sind die comant bits die zahl for dem x ist das gerät was du ansprechen möchtest (siehe im 3. Link) die zahl(21) danach der befehl z.b 20 für kanal runter(CH_DOWN) (siehe im 3. Link);

viel spaß



https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=16543&highlight=asuro

https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=132533#132533

http://home.arcor.de/parabol60/index.htm?rc5.htm