Hallo

Das habe ich mal gemacht, so liest man die Daten ein:

Code:
unsigned int count, temp; // Zaehler, IR-Kommando
unsigned char daten[14], ir_status; // IR-datenspeicher, IR-Eingangsegel
	temp=0;
   while (PIND & (1 << PD0)) //warten auf die Flanke des Startbits
   StatusLED(RED); // Alarmstufe ROT: ein Zeichen ist im Anflug
	for (count=0; count<14; count++) { // im Gesammten warten wir auf 14 bits
		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
   fahre(temp);
Und so fährt man damit:
Code:
void fahre(unsigned char kommando) {
/* asuro steuern.
	Mit dem 10er-Block der Fernbedienung kann der asuro nun gesteuert werden:
	Alle anderen Tasten stoppen den asuro
*/
	switch (kommando) {
	   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,FWD); MotorSpeed(pow1,pow1); break;
	   case 8: MotorDir(RWD,RWD); MotorSpeed(pow1,pow1); break;
	   case 9: MotorDir(FWD,RWD); MotorSpeed(pow1,pow1); break;
	   default: MotorDir(BREAK,BREAK); MotorSpeed(0,0); break;
	}
}
Das ist aus diesem Thread:
https://www.roboternetz.de/phpBB2/ze...=287750#287750

Gruß

mic