PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Asuro mit Fernsteuerung (TV)bedienen



Problem
21.11.2010, 08:43
Hallo

Ich möchte gerne meinen Asuro mit der Fernsteuerung vom Fernseher bedienen

So habe ich gedacht

wenn ich hyper terminal einschalte und auf der steuerung lauter oder leiser drücke kommt ein Zeichen (JËÎÎÎþ), wenn ich dieses ins Programm gebe müste er eigentlich etwas machen aber er bleibt ganz gelassen stehen


Kann mir da jemand helfen


lg

Hubert.G
21.11.2010, 09:30
Was du hier siehst sind zufällige Zeichen.
Deine Fernbedienung gibt ein bestimmtes Protokoll aus, siehe hier:
http://www.sbprojects.com/knowledge/ir//ir.htm
Das müsstest du dekodieren. Dann kannst du es vernünftig verwenden.

Problem
21.11.2010, 09:44
Kennst du dich damit ein bischen aus?

Habe da keine Ahnung einglisch ist nicht so meins

lg

Hubert.G
21.11.2010, 10:00
Du müsstest wissen welches Protokoll deine Fernbedienung hat.
Allerdings kenne ich nur RC5, dafür gibt es hier etwas:
http://www.rn-wissen.de/index.php/RC5-Decoder_f%C3%BCr_ATMega
Eine Anpassung für NEC habe ich mal geschrieben.
Ob du das in den ASURO bringst kann ich nicht sagen.

Problem
21.11.2010, 10:20
strong 6500 fernbedienung

so heißt die Fernbedienung
Habe schon bischen geschaut finde aber nichts
Ich habe mal wo gehört das ich zum steuern eine alte Philips bedienung brauch aber das wirst du auch nicht wissenoder?

Hubert.G
21.11.2010, 14:14
RC5 ist das alte Philips Protokoll, dazu könntest du dann das Programm aus RN-Wissen verwenden.

radbruch
21.11.2010, 15:11
Hallo

RC5 ist einfach und weit verbreitet, wird aber bei Multimediageräten heutzutage kaum mehr verwendet. Mit dem asuro und der orginalen CD-Library (72kHz) kann man es zum Beispiel so umsetzen:


#include "asuro.h" // für die CD-LIB mit 72kHz-Timer

#define pow1 150 // Langsame Geschwindigkeit
#define pow2 200 // Schnelle Geschwindigkeit
#define taste (!(PINC & (1<<PC4))) // Tastenabfrage
#define keine_taste (PINC & (1<<PC4))

unsigned int count, temp; // Zaehler, IR-Kommando
unsigned char daten[14], ir_status; // IR-Datenspeicher, IR-Eingangspegel

int main(void) {

Init();
do{
temp=0;
while (PIND & (1 << PD0)) //warten auf die Flanke des Startbits
{if keine_taste StatusLED(GREEN); else StatusLED(RED); // Tastenspielerei
if taste BackLED(ON,ON); else BackLED(OFF,OFF);}
StatusLED(RED); // Alarmstufe ROT: ein Zeichen ist im Anflug

for (count=0; count<14; count++) { // im Gesamten warten wir auf 14 Bits
/*
lt. Spettel-Diagramm betraegt die Bitlaenge 1,778 ms. Bei 36 Takten pro Millisekunde ergibt das 36*1,778 = 64
*/
Sleep(96); // Information einlesen nach 3/4 der Bitlaenge (96 bei CD-LIB!)
ir_status=(PIND & (1 << PD0)); // Pegel Speichern
if (ir_status) daten[count]='1'; else daten[count]='0'; // und merken
if (ir_status) temp |= (1 << (13-count)); // das MSB(=mostsuefikantbit) zuerst
while (ir_status == (PIND & (1 << PD0))); // Bit gelesen, warten auf naechste Flanke
}
temp=temp/2 & 0xf; // Die Info steht in den Bits 1-4
StatusLED(YELLOW); // Daten gelesen

/* asuro steuern.
Mit dem 10er-Block der Fernbedienung kann der asuro nun gesteuert werden:
Alle anderen Tasten stoppen den asuro
*/

switch (temp) {
case 1: MotorDir(FWD,FWD); MotorSpeed(pow1,pow2); break;
case 2: MotorDir(FWD,FWD); MotorSpeed(pow2,pow2); break;
case 3: MotorDir(FWD,FWD); MotorSpeed(pow2,pow1); break;
case 4: MotorDir(BREAK,FWD); MotorSpeed(0,pow1); break;
case 5: MotorDir(BREAK,BREAK); MotorSpeed(0,0); break;
case 6: MotorDir(FWD,BREAK); MotorSpeed(pow1,0); break;
case 7: MotorDir(RWD,BREAK); MotorSpeed(pow1,0); break;
case 8: MotorDir(RWD,RWD); MotorSpeed(pow1,pow1); break;
case 9: MotorDir(BREAK,RWD); MotorSpeed(0,pow1); break;
default: MotorDir(BREAK,BREAK); MotorSpeed(0,0); break;
}
StatusLED(GREEN); //endlos

}while (1);
return 0;
}

Die Beschreibung des Programms, mehr Infos zu RC5 und allgemein zum Programmieren in C gibts hier:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=55832

Noch mehr RC5 gibts im asuro-Wiki:
http://www.asurowiki.de/pmwiki/pmwiki.php/Main/RC5DemoC

Gruß

mic