Promicroinfrarot-technotrend.ino
Zur Navigation springen
Zur Suche springen
#include <IRLib.h>
#include <Keyboard.h>
const int buttonPin = 2; // Jumper auf Pin2/GND, damit für Programmierung Programm unterbrochen werden kann
const int RECV_PIN = 5; // Anschluss Data-Pin TSOP1736
char value=0; // 8bit-Variable für die niedrigsten Bits
int old=0;
int count=0;
const int onoff=7; // Pin für Optokoppler zum einschalten (LOW = gedrückt, Taste: Rec)
IRrecv My_Receiver(RECV_PIN);
IRdecode My_Decoder;
IRdecodeHash My_Hash_Decoder;
void setup()
{
pinMode(buttonPin, INPUT); // Jumper-Pin als Input
digitalWrite(buttonPin, HIGH); // PullUp fuer definierte Pegel
pinMode(onoff, OUTPUT);
digitalWrite(onoff, HIGH);
My_Receiver.enableIRIn(); // Start des IR-Empfangs
}
void loop() {
if (My_Receiver.GetResults(&My_Decoder)) //Put results into My_Decoder
{
My_Hash_Decoder.copyBuf(&My_Decoder); //copy the results to the hash decoder
My_Decoder.decode();
value=My_Decoder.value; // Reduktion auf 8bit
if (old == My_Decoder.value){ count++; } else { count=0; } //wenn Taste bereits gedrückt war, dann zählen, ansonsten auf Null setzen.
old=My_Decoder.value; // Mit oberen Bits, sind bei erneutem Tastendruck anders.
if(count == 1){ delay(500); value=0; } // bei der ersten Wiederholung eine Zwangspause, ansonsten schnelle Tastendrücke bei dauerhaft gedrückter Taste.
if (digitalRead(buttonPin) == 0) // bei gesetztem Jumper
{
switch (value) {
case 0x4d:
Keyboard.press(KEY_UP_ARROW);
delay(10);
Keyboard.release(KEY_UP_ARROW);
break;
case 0x51:
Keyboard.press(KEY_DOWN_ARROW);
delay(10);
Keyboard.release(KEY_DOWN_ARROW);
break;
case 0x4e:
Keyboard.press(KEY_LEFT_ARROW);
delay(10);
Keyboard.release(KEY_LEFT_ARROW);
break;
case 0x50:
Keyboard.press(KEY_RIGHT_ARROW);
delay(10);
Keyboard.release(KEY_RIGHT_ARROW);
break;
case 0x4f:
Keyboard.press(KEY_RETURN);
delay(10);
Keyboard.release(KEY_RETURN);
break;
case 0x59:
Keyboard.print(char (109)); //m
break;
case 0x43:
Keyboard.print(char (49)); //1
break;
case 0x44:
Keyboard.print(char (50));
break;
case 0x45:
Keyboard.print(char (51));
break;
case 0x46:
Keyboard.print(char (52));
break;
case 0x47:
Keyboard.print(char (53));
break;
case 0x48:
Keyboard.print(char (54));
break;
case 0x49:
Keyboard.print(char (55));
break;
case 0x4a:
Keyboard.print(char (56));
break;
case 0x4b:
Keyboard.print(char (57)); //9
break;
case 0x4c:
Keyboard.print(char (48)); //0
break;
case 0x41:
Keyboard.print(char (112)); //p
break;
case 0x54:
Keyboard.press(KEY_F1);
delay(10);
Keyboard.release(KEY_F1); //RED
break;
case 0x55:
Keyboard.press(KEY_F2);
delay(10);
Keyboard.release(KEY_F2);//GREEN
break;
case 0x56:
Keyboard.press(KEY_F3);
delay(10);
Keyboard.release(KEY_F3);//YELLOW
break;
case 0x57:
Keyboard.press(KEY_F4);
delay(10);
Keyboard.release(KEY_F4);//BLUE
break;
case 0x65:
Keyboard.press(KEY_F12);
delay(10);
Keyboard.release(KEY_F12);//Vol+
break;
case 0x66:
Keyboard.press(KEY_F11);
delay(10);
Keyboard.release(KEY_F11);//Vol-
break;
case 0x58:
Keyboard.press(KEY_F10);
delay(10);
Keyboard.release(KEY_F10);//Mute
break;
case 0x53:
Keyboard.press(KEY_BACKSPACE);
delay(10);
Keyboard.release(KEY_BACKSPACE);//Exit
break;
case 0x42:
Keyboard.press(KEY_ESC);
delay(10);
Keyboard.release(KEY_ESC);//Exit Frontend
break;
case 0x5A: //TV,Radio
Keyboard.press(KEY_F7);
delay(10);
Keyboard.release(KEY_F7);// USER7
break;
case 0x7a: //Rec
Keyboard.print(char (114)); //r
break;
//digitalWrite(onoff,LOW);
//delay(100);
//digitalWrite(onoff,HIGH);
break;
case 0x7b: //Play
Keyboard.print(char (97)); //a
break;
case 0x7c: //Stop
Keyboard.print(char (115)); //s
break;
case 0x52: //i
Keyboard.print(char (105));
break;
case 0x7d: //Rew
Keyboard.press(KEY_F5);
delay(10);
Keyboard.release(KEY_F5);//Rwd
break;
case 0x7e: //Pause
Keyboard.print(char (32)); //SPACE
break;
case 0x7f: //Fwd
Keyboard.press(KEY_F6);
delay(10);
Keyboard.release(KEY_F6);//Fwd
break;
case 0x62: //EPG
Keyboard.press(KEY_F8);
delay(10);
Keyboard.release(KEY_F8);//USER8
break;
}
delay(90);
My_Receiver.resume();
}
}
}