Das übersteigt leider auch meine Kenntnisse ;(
Ich bin erst seit ~2 Monaten aktiv am Asuro
Wie kann ich das Prüfen?Der asuro müßte also nach erfolgreichem Empfang eines RC5-Signals den Wert in cmd zum Terminal senden (hexadezimal). Kommt da was an?
Ich habe mich noch nicht so sehr mit dem Programm selbst beschäftigt, weil ich erst sichergehen wollte, dass es funktioniert, da ich eine schriftliche Arbeit zu dem Thema verfassen muss.
Das ist ja das Programm aus deinem Beitrag in einem anderen Thread, stimmt es, dass es bei nahezu jeder Philips-Fernbedienung funktioniert?Code:#include "asuro.h" #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 Gesammten 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(48); // Information einlesen nach 3/4 der Bitlaenge 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 //Msleep(2000); // Zeit um den IR-Transceifer ueber den asuro zu bringen SerWrite("\n\r",2); SerWrite(daten,14); // Bitmuster zum PC senden SerWrite("-",1); PrintInt(temp); // erkannte Daten zum PC senden /* 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 //Msleep(1000); }while (1); return 0; }
Dann könnte ich ja auch das verwenden, meine Universal ist von Philps
und kann auf mehrere Philips Fernseher eingestellt werden.
Vielleicht meldet sich ja noch ein Experte, der sich schon mit der RC5-Erweiterung beschäftigt hat.
*Edit*
Das mit der Odometrie hat sich erledigt, habs noch halbwegs hinbekommen, für den 2. Platz bei dem Wettbewerb in der Schule hat es gereicht
Gruß
Seuche






Zitieren


Lesezeichen