Stap 7: Programma 2
#include
int RECV_PIN = A5;
int BUTTON_PIN = 12;
int STATUS_PIN = 9;
IRrecv irrecv(RECV_PIN);
IRsend irsend;
decode_results resultaten;
VOID Setup
{Keyboard.begin();
Serial.begin(9600);
irrecv.enableIRIn(); Start de ontvanger
pinMode (BUTTON_PIN, INPUT);
pinMode (STATUS_PIN, uitvoer);
digitalWrite(STATUS_PIN,LOW);
}
Opslag voor de opgenomen code
int codeType = -1; Het type code
unsigned long codeValue; De waarde van de code als niet raw
unsigned int rawCodes [RAWBUF]; De duur als ruwe
int codeLen; De lengte van de code
int/uitschakelen = 0; De knevel staat van RC5/6
De code voor later afspelen slaat
De meeste van deze code is net registreren
ongeldig storeCode(decode_results *results) {}
codeType = resultaten -> decode_type;
int count = resultaten -> rawlen;
Als (codeType == NEC) {}
Serial.Print ("ontvangen van NEC:");
Als (resultaten-waarde > == REPEAT) {}
Niet opnemen van een NEC repeat waarde zoals dat is nutteloos.
Serial.println ("herhalen; negeren.");
terugkeer;
}
}
Serial.println (resultaten -> waarde, HEX);
Serial.println (resultaten-waarde >);
codeValue = resultaten -> waarde;
codeLen = resultaten -> bits;
Als (codeValue == 3724611569) //play
{Keyboard.write(0x70);}
else if (codeValue == 3724611580) //play/pause
{Keyboard.write(0x20);}
else if (codeValue == 3724611540) //mute
{Keyboard.write(0x6D);}
else if (codeValue == 3724611568) //stop
{Keyboard.write(0x73);}
else if (codeValue == 3724611526) //volume omhoog
{Keyboard.press(0x80);
Keyboard.Press(0xDA);
delay(15);
Keyboard.releaseAll();}
else if (codeValue == 3724611558) //volume neer
{Keyboard.press(0x80);
Keyboard.Press(0xD9);
delay(15);
Keyboard.releaseAll();}
else if (codeValue == 3724611520) //forward
{Keyboard.press(0x81);
Keyboard.Press(0xD7);
Keyboard.releaseAll();}
else if (codeValue == 3724611552) //backward
{Keyboard.press(0x81);
Keyboard.Press(0xD8);
Keyboard.releaseAll();}
else if (codeValue == 3724611574) //speedup
{Keyboard.write(0x5D);}
else if (codeValue == 3724611541) //speed neer
{Keyboard.write(0x5B);}
}
int lastButtonState;
void loop {}
Als de knop ingedrukt, stuur de code.
Als (irrecv.decode (& resultaten)) {}
digitalWrite (STATUS_PIN, hoge);
storeCode(&results);
irrecv.resume(); hervatten van de ontvanger
digitalWrite (STATUS_PIN, laag);
}
}