Archiv verlassen und diese Seite im Standarddesign anzeigen : Asuro mit Fernsteuerung (TV)bedienen
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.
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.
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
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.