-diese Library kann mit Hilfe eines IR-Decoder-ICs (z.B. SFH 5110) die IR-Codes
von Fernbedienungen auslesen.
-es wird ein 8bit-Timer benutzt
-es gibt eine Library für den IR-Code : “RC5″ und
eine andere Library für den IR-Code : “SIRCS”
Funktionen :
1 2 | void MK3_INIT_IRRC(void); // zum initialisieren der IRRC-Funktionen IRRC_Status_t MK3_IRRC_check(void); // check ob ein IR-RC-Code empfangen wurde |
Beispiel :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | //----------------------------------------------------------------------------- // Title : bsp_ub056_mk3_ir_sircs //----------------------------------------------------------------------------- // Funktion : Infrarot-Daten auslesen und anzeigen (SIRCS) // Schaltung : myAVR MK3 //----------------------------------------------------------------------------- // Prozessor : ATMega2560 // Takt : 16 MHz // Sprache : C // Date : 09.11.2012 // Version : 1.0 // Autor : UB //----------------------------------------------------------------------------- #define F_CPU 16000000 #include <avr/io.h> #include <ub_mk3_2560/MK3_2560_LCD.h> #include <ub_mk3_2560/MK3_2560_IR_SIRCS.h> //----------------------------------------------------------------------------- // Hinweis : Quick-Jumper Port-C+A muss gesetzt sein // - ein IR-Sensor (z.B. SFH-5110) muss an Port-L Bit-4 angeschlossen sein // - eine Fernbedienung mit Code-Typ : SIRCS muss benutzt werden //----------------------------------------------------------------------------- int main (void) { IRRC_Status_t status; unsigned int n; unsigned char m=0; MK3_INIT_LCD(); // init des LCD MK3_LCD_CLEAR(); // LCD loeschen MK3_LCD_LIGHT(true); // beleuchtung einschalten MK3_LCD_STRING_AT(0,0,"IR-Test [Code:SIRCS]"); // IR-Funktion initialisieren MK3_INIT_IRRC(); while (true) { // IR-Status abfragen status=MK3_IRRC_check(); if(status!=IRRC_NO_CMD) { // wenn ein IR-Commando empfangen wurde if(status==IRRC_CMD_OK) MK3_LCD_STRING_AT(0,16,"RX=OK "); if(status==IRRC_CMD_REPEAT) MK3_LCD_STRING_AT(0,16,"RX=Repeat"); if(status==IRRC_CMD_ERR) MK3_LCD_STRING_AT(0,16,"RX=Error "); if(status==IRRC_TYP_ERR) MK3_LCD_STRING_AT(0,16,"TYP=Error"); // anzeigen der empfangenen Bytes MK3_LCD_STRING_AT(0,24,"Data="); for(n=0;n<IRRC_DATA_BYTES;n++) { MK3_LCD_PRINT_UTYP(IRRC.ir_code[n],HEX_U2); MK3_LCD_PRINT_STRING(","); } // Typ anzeigen if(IRRC.ir_typ==IRRC_SIRCS) MK3_LCD_STRING_AT(0,32,"Typ=SIRCS"); if(IRRC.ir_typ==IRRC_RC5) MK3_LCD_STRING_AT(0,32,"Typ=RC5 "); if(IRRC.ir_typ==IRRC_UNDEFINED) MK3_LCD_STRING_AT(0,32,"Typ=? "); // Symbol anzeigen m++; if(m>3) m=0; if(m==0) MK3_LCD_STRING_AT(0,48,". "); if(m==1) MK3_LCD_STRING_AT(0,48,".. "); if(m==2) MK3_LCD_STRING_AT(0,48,"... "); if(m==3) MK3_LCD_STRING_AT(0,48,"...."); } } return 0; } |
Hier die Library zum download :