#include #include #include char toshibaVolUpProntoCode[] = "0000 006C 0022 0002 015B 00AD 0016 0016 " "0016 0016 0016 0016 0016 0016 0016 0016 " "0016 0016 0016 0041 0016 0016 0016 0041 " "0016 0041 0016 0041 0016 0041 0016 0041 " "0016 0041 0016 0016 0016 0041 0016 0016 " "0016 0041 0016 0016 0016 0041 0016 0041 " "0016 0016 0016 0016 0016 0016 0016 0041 " "0016 0016 0016 0041 0016 0016 0016 0016 " "0016 0041 0016 0041 0016 0041 0016 05F7 " "015B 0057 0016 0E6C"; char toshibaVolDownProntoCode[] = "0000 006C 0022 0002 015B 00AD 0016 0016 " "0016 0016 0016 0016 0016 0016 0016 0016 " "0016 0016 0016 0041 0016 0016 0016 0041 " "0016 0041 0016 0041 0016 0041 0016 0041 " "0016 0041 0016 0016 0016 0041 0016 0016 " "0016 0041 0016 0041 0016 0041 0016 0041 " "0016 0016 0016 0016 0016 0016 0016 0041 " "0016 0016 0016 0016 0016 0016 0016 0016 " "0016 0041 0016 0041 0016 0041 0016 05F7 " "015B 0057 0016 0E6C"; char toshibaVolMuteProntoCode[] = "0000 006C 0022 0002 015B 00AD 0016 0016 " "0016 0016 0016 0016 0016 0016 0016 0016 " "0016 0016 0016 0041 0016 0016 0016 0041 " "0016 0041 0016 0041 0016 0041 0016 0041 " "0016 0041 0016 0016 0016 0041 0016 0016 " "0016 0016 0016 0016 0016 0016 0016 0041 " "0016 0016 0016 0016 0016 0016 0016 0041 " "0016 0041 0016 0041 0016 0041 0016 0016 " "0016 0041 0016 0041 0016 0041 0016 05F7 " "015B 0057 0016 0E6C"; char toshibaPwrProntoCode[] = "0000 006C 0022 0002 015B 00AD 0016 0016 " "0016 0016 0016 0016 0016 0016 0016 0016 " "0016 0016 0016 0041 0016 0016 0016 0041 " "0016 0041 0016 0041 0016 0041 0016 0041 " "0016 0041 0016 0016 0016 0041 0016 0016 " "0016 0041 0016 0016 0016 0016 0016 0041 " "0016 0016 0016 0016 0016 0016 0016 0041 " "0016 0016 0016 0041 0016 0041 0016 0016 " "0016 0041 0016 0041 0016 0041 0016 05F7 " "015B 0057 0016 0E6C"; char toshibaInputSourceCode[] = "0000 006C 0022 0002 015B 00AD 0016 0016 " "0016 0016 0016 0016 0016 0016 0016 0016 " "0016 0016 0016 0041 0016 0016 0016 0041 " "0016 0041 0016 0041 0016 0041 0016 0041 " "0016 0041 0016 0016 0016 0041 0016 0041 " "0016 0041 0016 0041 0016 0041 0016 0016 " "0016 0016 0016 0016 0016 0016 0016 0016 " "0016 0016 0016 0016 0016 0016 0016 0041 " "0016 0041 0016 0041 0016 0041 0016 05F7 " "015B 0057 0016 0E6C"; IRsend irsend; const int btnPower= 4; const int btnMute= 5; const int btnVolUp =6; const int btnVolDown= 7; const int bounceIntervalMS = 20; const int wakeUpPin = 2; const int awakeTime = 500; //note IR send uses pin 3 Bounce bouncePower = Bounce(); Bounce bounceMute = Bounce(); Bounce bounceVolUp = Bounce(); Bounce bounceVolDown = Bounce(); unsigned long wakeuptime; void setup() { // Serial.begin(115200, SERIAL_8N1); bouncePower.attach(btnPower, INPUT_PULLUP ); bounceMute.attach(btnMute, INPUT_PULLUP ); bounceVolUp.attach(btnVolUp, INPUT_PULLUP ); bounceVolDown.attach(btnVolDown, INPUT_PULLUP ); bouncePower.interval(bounceIntervalMS); bounceMute.interval(bounceIntervalMS); bounceVolUp.interval(bounceIntervalMS); bounceVolDown.interval(bounceIntervalMS); pinMode(wakeUpPin, INPUT_PULLUP); wakeuptime=millis(); } void wakeUp() { // Just a handler for the pin interrupt. wakeuptime = millis(); } void loop() { if (millis()-wakeuptime > awakeTime) { // Allow wake up pin to trigger interrupt on low. attachInterrupt(0, wakeUp, HIGH); // Enter power down state with ADC and BOD module disabled. // Wake up when wake up pin is low. LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF); } // Disable external pin interrupt on wake up pin. detachInterrupt(0); bouncePower.update(); bounceMute.update(); bounceVolUp.update(); bounceVolDown.update(); if ( bouncePower.rose() ) { // Call code if button transitions from HIGH to LOW irsend.sendPronto(toshibaPwrProntoCode, PRONTO_ONCE, PRONTO_FALLBACK); } if ( bounceMute.rose() ) { // Call code if button transitions from HIGH to LOW irsend.sendPronto(toshibaVolMuteProntoCode, PRONTO_ONCE, PRONTO_FALLBACK); } if ( bounceVolUp.rose() ) { // Call code if button transitions from HIGH to LOW irsend.sendPronto(toshibaVolUpProntoCode, PRONTO_ONCE, PRONTO_FALLBACK); } if ( bounceVolDown.rose() ) { // Call code if button transitions from HIGH to LOW irsend.sendPronto(toshibaVolDownProntoCode, PRONTO_ONCE, PRONTO_FALLBACK); } }