Taguchi Yuuki / IRremote

Dependents:   Lilnija_29012017 NucleoF042K6_IRReceiver

Files at this revision

API Documentation at this revision

Comitter:
yuhki50
Date:
Sat Jan 23 15:36:14 2016 +0900
Parent:
1:370967a90abb
Child:
3:17440cf7ab90
Commit message:
remove examples

Changed in this revision

examples/AiwaRCT501SendDemo/AiwaRCT501SendDemo.ino Show diff for this revision Revisions of this file
examples/IRrecord/IRrecord.ino Show diff for this revision Revisions of this file
examples/IRrecvDemo/IRrecvDemo.ino Show diff for this revision Revisions of this file
examples/IRrecvDump/IRrecvDump.ino Show diff for this revision Revisions of this file
examples/IRrecvDumpV2/IRrecvDumpV2.ino Show diff for this revision Revisions of this file
examples/IRrelay/IRrelay.ino Show diff for this revision Revisions of this file
examples/IRremoteInfo/IRremoteInfo.ino Show diff for this revision Revisions of this file
examples/IRsendDemo/IRsendDemo.ino Show diff for this revision Revisions of this file
examples/IRsendRawDemo/IRsendRawDemo.ino Show diff for this revision Revisions of this file
examples/IRtest/IRtest.ino Show diff for this revision Revisions of this file
examples/IRtest2/IRtest2.ino Show diff for this revision Revisions of this file
examples/JVCPanasonicSendDemo/JVCPanasonicSendDemo.ino Show diff for this revision Revisions of this file
examples/LGACSendDemo/LGACSendDemo.ino Show diff for this revision Revisions of this file
examples/LGACSendDemo/LGACSendDemo.md Show diff for this revision Revisions of this file
--- a/examples/AiwaRCT501SendDemo/AiwaRCT501SendDemo.ino	Sat Jan 23 15:25:05 2016 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
- * IRremote: IRsendDemo - demonstrates sending IR codes with IRsend
- * An IR LED must be connected to Arduino PWM pin 3.
- * Version 0.1 July, 2009
- * Copyright 2009 Ken Shirriff
- * http://arcfn.com
- */
-
-#include "IRremote.h"
-
-#define POWER 0x7F80
-#define AIWA_RC_T501
-
-IRsend irsend;
-
-void setup() {
-  Serial.begin(9600);
-  Serial.println("Arduino Ready");
-}
-
-void loop() {
-  if (Serial.read() != -1) {
-    irsend.sendAiwaRCT501(POWER);
-    delay(60); // Optional
-  }
-}
--- a/examples/IRrecord/IRrecord.ino	Sat Jan 23 15:25:05 2016 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,167 +0,0 @@
-/*
- * IRrecord: record and play back IR signals as a minimal 
- * An IR detector/demodulator must be connected to the input RECV_PIN.
- * An IR LED must be connected to the output PWM pin 3.
- * A button must be connected to the input BUTTON_PIN; this is the
- * send button.
- * A visible LED can be connected to STATUS_PIN to provide status.
- *
- * The logic is:
- * If the button is pressed, send the IR code.
- * If an IR code is received, record it.
- *
- * Version 0.11 September, 2009
- * Copyright 2009 Ken Shirriff
- * http://arcfn.com
- */
-
-#include <IRremote.h>
-
-int RECV_PIN = 11;
-int BUTTON_PIN = 12;
-int STATUS_PIN = 13;
-
-IRrecv irrecv(RECV_PIN);
-IRsend irsend;
-
-decode_results results;
-
-void setup()
-{
-  Serial.begin(9600);
-  irrecv.enableIRIn(); // Start the receiver
-  pinMode(BUTTON_PIN, INPUT);
-  pinMode(STATUS_PIN, OUTPUT);
-}
-
-// Storage for the recorded code
-int codeType = -1; // The type of code
-unsigned long codeValue; // The code value if not raw
-unsigned int rawCodes[RAWBUF]; // The durations if raw
-int codeLen; // The length of the code
-int toggle = 0; // The RC5/6 toggle state
-
-// Stores the code for later playback
-// Most of this code is just logging
-void storeCode(decode_results *results) {
-  codeType = results->decode_type;
-  int count = results->rawlen;
-  if (codeType == UNKNOWN) {
-    Serial.println("Received unknown code, saving as raw");
-    codeLen = results->rawlen - 1;
-    // To store raw codes:
-    // Drop first value (gap)
-    // Convert from ticks to microseconds
-    // Tweak marks shorter, and spaces longer to cancel out IR receiver distortion
-    for (int i = 1; i <= codeLen; i++) {
-      if (i % 2) {
-        // Mark
-        rawCodes[i - 1] = results->rawbuf[i]*USECPERTICK - MARK_EXCESS;
-        Serial.print(" m");
-      } 
-      else {
-        // Space
-        rawCodes[i - 1] = results->rawbuf[i]*USECPERTICK + MARK_EXCESS;
-        Serial.print(" s");
-      }
-      Serial.print(rawCodes[i - 1], DEC);
-    }
-    Serial.println("");
-  }
-  else {
-    if (codeType == NEC) {
-      Serial.print("Received NEC: ");
-      if (results->value == REPEAT) {
-        // Don't record a NEC repeat value as that's useless.
-        Serial.println("repeat; ignoring.");
-        return;
-      }
-    } 
-    else if (codeType == SONY) {
-      Serial.print("Received SONY: ");
-    } 
-    else if (codeType == RC5) {
-      Serial.print("Received RC5: ");
-    } 
-    else if (codeType == RC6) {
-      Serial.print("Received RC6: ");
-    } 
-    else {
-      Serial.print("Unexpected codeType ");
-      Serial.print(codeType, DEC);
-      Serial.println("");
-    }
-    Serial.println(results->value, HEX);
-    codeValue = results->value;
-    codeLen = results->bits;
-  }
-}
-
-void sendCode(int repeat) {
-  if (codeType == NEC) {
-    if (repeat) {
-      irsend.sendNEC(REPEAT, codeLen);
-      Serial.println("Sent NEC repeat");
-    } 
-    else {
-      irsend.sendNEC(codeValue, codeLen);
-      Serial.print("Sent NEC ");
-      Serial.println(codeValue, HEX);
-    }
-  } 
-  else if (codeType == SONY) {
-    irsend.sendSony(codeValue, codeLen);
-    Serial.print("Sent Sony ");
-    Serial.println(codeValue, HEX);
-  } 
-  else if (codeType == RC5 || codeType == RC6) {
-    if (!repeat) {
-      // Flip the toggle bit for a new button press
-      toggle = 1 - toggle;
-    }
-    // Put the toggle bit into the code to send
-    codeValue = codeValue & ~(1 << (codeLen - 1));
-    codeValue = codeValue | (toggle << (codeLen - 1));
-    if (codeType == RC5) {
-      Serial.print("Sent RC5 ");
-      Serial.println(codeValue, HEX);
-      irsend.sendRC5(codeValue, codeLen);
-    } 
-    else {
-      irsend.sendRC6(codeValue, codeLen);
-      Serial.print("Sent RC6 ");
-      Serial.println(codeValue, HEX);
-    }
-  } 
-  else if (codeType == UNKNOWN /* i.e. raw */) {
-    // Assume 38 KHz
-    irsend.sendRaw(rawCodes, codeLen, 38);
-    Serial.println("Sent raw");
-  }
-}
-
-int lastButtonState;
-
-void loop() {
-  // If button pressed, send the code.
-  int buttonState = digitalRead(BUTTON_PIN);
-  if (lastButtonState == HIGH && buttonState == LOW) {
-    Serial.println("Released");
-    irrecv.enableIRIn(); // Re-enable receiver
-  }
-
-  if (buttonState) {
-    Serial.println("Pressed, sending");
-    digitalWrite(STATUS_PIN, HIGH);
-    sendCode(lastButtonState == buttonState);
-    digitalWrite(STATUS_PIN, LOW);
-    delay(50); // Wait a bit between retransmissions
-  } 
-  else if (irrecv.decode(&results)) {
-    digitalWrite(STATUS_PIN, HIGH);
-    storeCode(&results);
-    irrecv.resume(); // resume receiver
-    digitalWrite(STATUS_PIN, LOW);
-  }
-  lastButtonState = buttonState;
-}
--- a/examples/IRrecvDemo/IRrecvDemo.ino	Sat Jan 23 15:25:05 2016 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
- * IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
- * An IR detector/demodulator must be connected to the input RECV_PIN.
- * Version 0.1 July, 2009
- * Copyright 2009 Ken Shirriff
- * http://arcfn.com
- */
-
-#include <IRremote.h>
-
-int RECV_PIN = 11;
-
-IRrecv irrecv(RECV_PIN);
-
-decode_results results;
-
-void setup()
-{
-  Serial.begin(9600);
-  irrecv.enableIRIn(); // Start the receiver
-}
-
-void loop() {
-  if (irrecv.decode(&results)) {
-    Serial.println(results.value, HEX);
-    irrecv.resume(); // Receive the next value
-  }
-  delay(100);
-}
--- a/examples/IRrecvDump/IRrecvDump.ino	Sat Jan 23 15:25:05 2016 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/*
- * IRremote: IRrecvDump - dump details of IR codes with IRrecv
- * An IR detector/demodulator must be connected to the input RECV_PIN.
- * Version 0.1 July, 2009
- * Copyright 2009 Ken Shirriff
- * http://arcfn.com
- * JVC and Panasonic protocol added by Kristian Lauszus (Thanks to zenwheel and other people at the original blog post)
- * LG added by Darryl Smith (based on the JVC protocol)
- */
-
-#include <IRremote.h>
-
-/* 
-*  Default is Arduino pin D11. 
-*  You can change this to another available Arduino Pin.
-*  Your IR receiver should be connected to the pin defined here
-*/
-int RECV_PIN = 11; 
-
-IRrecv irrecv(RECV_PIN);
-
-decode_results results;
-
-void setup()
-{
-  Serial.begin(9600);
-  irrecv.enableIRIn(); // Start the receiver
-}
-
-
-void dump(decode_results *results) {
-  // Dumps out the decode_results structure.
-  // Call this after IRrecv::decode()
-  int count = results->rawlen;
-  if (results->decode_type == UNKNOWN) {
-    Serial.print("Unknown encoding: ");
-  }
-  else if (results->decode_type == NEC) {
-    Serial.print("Decoded NEC: ");
-
-  }
-  else if (results->decode_type == SONY) {
-    Serial.print("Decoded SONY: ");
-  }
-  else if (results->decode_type == RC5) {
-    Serial.print("Decoded RC5: ");
-  }
-  else if (results->decode_type == RC6) {
-    Serial.print("Decoded RC6: ");
-  }
-  else if (results->decode_type == PANASONIC) {
-    Serial.print("Decoded PANASONIC - Address: ");
-    Serial.print(results->address, HEX);
-    Serial.print(" Value: ");
-  }
-  else if (results->decode_type == LG) {
-    Serial.print("Decoded LG: ");
-  }
-  else if (results->decode_type == JVC) {
-    Serial.print("Decoded JVC: ");
-  }
-  else if (results->decode_type == AIWA_RC_T501) {
-    Serial.print("Decoded AIWA RC T501: ");
-  }
-  else if (results->decode_type == WHYNTER) {
-    Serial.print("Decoded Whynter: ");
-  }
-  Serial.print(results->value, HEX);
-  Serial.print(" (");
-  Serial.print(results->bits, DEC);
-  Serial.println(" bits)");
-  Serial.print("Raw (");
-  Serial.print(count, DEC);
-  Serial.print("): ");
-
-  for (int i = 1; i < count; i++) {
-    if (i & 1) {
-      Serial.print(results->rawbuf[i]*USECPERTICK, DEC);
-    }
-    else {
-      Serial.write('-');
-      Serial.print((unsigned long) results->rawbuf[i]*USECPERTICK, DEC);
-    }
-    Serial.print(" ");
-  }
-  Serial.println();
-}
-
-void loop() {
-  if (irrecv.decode(&results)) {
-    Serial.println(results.value, HEX);
-    dump(&results);
-    irrecv.resume(); // Receive the next value
-  }
-}
--- a/examples/IRrecvDumpV2/IRrecvDumpV2.ino	Sat Jan 23 15:25:05 2016 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,177 +0,0 @@
-//------------------------------------------------------------------------------
-// Include the IRremote library header
-//
-#include <IRremote.h>
-
-//------------------------------------------------------------------------------
-// Tell IRremote which Arduino pin is connected to the IR Receiver (TSOP4838)
-//
-int recvPin = 11;
-IRrecv irrecv(recvPin);
-
-//+=============================================================================
-// Configure the Arduino
-//
-void  setup ( )
-{
-  Serial.begin(9600);   // Status message will be sent to PC at 9600 baud
-  irrecv.enableIRIn();  // Start the receiver
-}
-
-//+=============================================================================
-// Display IR code
-//
-void  ircode (decode_results *results)
-{
-  // Panasonic has an Address
-  if (results->decode_type == PANASONIC) {
-    Serial.print(results->address, HEX);
-    Serial.print(":");
-  }
-
-  // Print Code
-  Serial.print(results->value, HEX);
-}
-
-//+=============================================================================
-// Display encoding type
-//
-void  encoding (decode_results *results)
-{
-  switch (results->decode_type) {
-    default:
-    case UNKNOWN:      Serial.print("UNKNOWN");       break ;
-    case NEC:          Serial.print("NEC");           break ;
-    case SONY:         Serial.print("SONY");          break ;
-    case RC5:          Serial.print("RC5");           break ;
-    case RC6:          Serial.print("RC6");           break ;
-    case DISH:         Serial.print("DISH");          break ;
-    case SHARP:        Serial.print("SHARP");         break ;
-    case JVC:          Serial.print("JVC");           break ;
-    case SANYO:        Serial.print("SANYO");         break ;
-    case MITSUBISHI:   Serial.print("MITSUBISHI");    break ;
-    case SAMSUNG:      Serial.print("SAMSUNG");       break ;
-    case LG:           Serial.print("LG");            break ;
-    case WHYNTER:      Serial.print("WHYNTER");       break ;
-    case AIWA_RC_T501: Serial.print("AIWA_RC_T501");  break ;
-    case PANASONIC:    Serial.print("PANASONIC");     break ;
-    case DENON:        Serial.print("Denon");         break ;
-  }
-}
-
-//+=============================================================================
-// Dump out the decode_results structure.
-//
-void  dumpInfo (decode_results *results)
-{
-  // Check if the buffer overflowed
-  if (results->overflow) {
-    Serial.println("IR code too long. Edit IRremoteInt.h and increase RAWLEN");
-    return;
-  }
-
-  // Show Encoding standard
-  Serial.print("Encoding  : ");
-  encoding(results);
-  Serial.println("");
-
-  // Show Code & length
-  Serial.print("Code      : ");
-  ircode(results);
-  Serial.print(" (");
-  Serial.print(results->bits, DEC);
-  Serial.println(" bits)");
-}
-
-//+=============================================================================
-// Dump out the decode_results structure.
-//
-void  dumpRaw (decode_results *results)
-{
-  // Print Raw data
-  Serial.print("Timing[");
-  Serial.print(results->rawlen-1, DEC);
-  Serial.println("]: ");
-
-  for (int i = 1;  i < results->rawlen;  i++) {
-    unsigned long  x = results->rawbuf[i] * USECPERTICK;
-    if (!(i & 1)) {  // even
-      Serial.print("-");
-      if (x < 1000)  Serial.print(" ") ;
-      if (x < 100)   Serial.print(" ") ;
-      Serial.print(x, DEC);
-    } else {  // odd
-      Serial.print("     ");
-      Serial.print("+");
-      if (x < 1000)  Serial.print(" ") ;
-      if (x < 100)   Serial.print(" ") ;
-      Serial.print(x, DEC);
-      if (i < results->rawlen-1) Serial.print(", "); //',' not needed for last one
-    }
-    if (!(i % 8))  Serial.println("");
-  }
-  Serial.println("");                    // Newline
-}
-
-//+=============================================================================
-// Dump out the decode_results structure.
-//
-void  dumpCode (decode_results *results)
-{
-  // Start declaration
-  Serial.print("unsigned int  ");          // variable type
-  Serial.print("rawData[");                // array name
-  Serial.print(results->rawlen - 1, DEC);  // array size
-  Serial.print("] = {");                   // Start declaration
-
-  // Dump data
-  for (int i = 1;  i < results->rawlen;  i++) {
-    Serial.print(results->rawbuf[i] * USECPERTICK, DEC);
-    if ( i < results->rawlen-1 ) Serial.print(","); // ',' not needed on last one
-    if (!(i & 1))  Serial.print(" ");
-  }
-
-  // End declaration
-  Serial.print("};");  // 
-
-  // Comment
-  Serial.print("  // ");
-  encoding(results);
-  Serial.print(" ");
-  ircode(results);
-
-  // Newline
-  Serial.println("");
-
-  // Now dump "known" codes
-  if (results->decode_type != UNKNOWN) {
-
-    // Some protocols have an address
-    if (results->decode_type == PANASONIC) {
-      Serial.print("unsigned int  addr = 0x");
-      Serial.print(results->address, HEX);
-      Serial.println(";");
-    }
-
-    // All protocols have data
-    Serial.print("unsigned int  data = 0x");
-    Serial.print(results->value, HEX);
-    Serial.println(";");
-  }
-}
-
-//+=============================================================================
-// The repeating section of the code
-//
-void  loop ( )
-{
-  decode_results  results;        // Somewhere to store the results
-
-  if (irrecv.decode(&results)) {  // Grab an IR code
-    dumpInfo(&results);           // Output the results
-    dumpRaw(&results);            // Output the results in RAW format
-    dumpCode(&results);           // Output the results as source code
-    Serial.println("");           // Blank line between entries
-    irrecv.resume();              // Prepare for the next value
-  }
-}
--- a/examples/IRrelay/IRrelay.ino	Sat Jan 23 15:25:05 2016 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-/*
- * IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
- * An IR detector/demodulator must be connected to the input RECV_PIN.
- * Version 0.1 July, 2009
- * Copyright 2009 Ken Shirriff
- * http://arcfn.com
- */
-
-#include <IRremote.h>
-
-int RECV_PIN = 11;
-int RELAY_PIN = 4;
-
-IRrecv irrecv(RECV_PIN);
-decode_results results;
-
-// Dumps out the decode_results structure.
-// Call this after IRrecv::decode()
-// void * to work around compiler issue
-//void dump(void *v) {
-//  decode_results *results = (decode_results *)v
-void dump(decode_results *results) {
-  int count = results->rawlen;
-  if (results->decode_type == UNKNOWN) {
-    Serial.println("Could not decode message");
-  } 
-  else {
-    if (results->decode_type == NEC) {
-      Serial.print("Decoded NEC: ");
-    } 
-    else if (results->decode_type == SONY) {
-      Serial.print("Decoded SONY: ");
-    } 
-    else if (results->decode_type == RC5) {
-      Serial.print("Decoded RC5: ");
-    } 
-    else if (results->decode_type == RC6) {
-      Serial.print("Decoded RC6: ");
-    }
-    Serial.print(results->value, HEX);
-    Serial.print(" (");
-    Serial.print(results->bits, DEC);
-    Serial.println(" bits)");
-  }
-  Serial.print("Raw (");
-  Serial.print(count, DEC);
-  Serial.print("): ");
-
-  for (int i = 0; i < count; i++) {
-    if ((i % 2) == 1) {
-      Serial.print(results->rawbuf[i]*USECPERTICK, DEC);
-    } 
-    else {
-      Serial.print(-(int)results->rawbuf[i]*USECPERTICK, DEC);
-    }
-    Serial.print(" ");
-  }
-  Serial.println("");
-}
-
-void setup()
-{
-  pinMode(RELAY_PIN, OUTPUT);
-  pinMode(13, OUTPUT);
-    Serial.begin(9600);
-  irrecv.enableIRIn(); // Start the receiver
-}
-
-int on = 0;
-unsigned long last = millis();
-
-void loop() {
-  if (irrecv.decode(&results)) {
-    // If it's been at least 1/4 second since the last
-    // IR received, toggle the relay
-    if (millis() - last > 250) {
-      on = !on;
-      digitalWrite(RELAY_PIN, on ? HIGH : LOW);
-      digitalWrite(13, on ? HIGH : LOW);
-      dump(&results);
-    }
-    last = millis();      
-    irrecv.resume(); // Receive the next value
-  }
-}
--- a/examples/IRremoteInfo/IRremoteInfo.ino	Sat Jan 23 15:25:05 2016 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,210 +0,0 @@
-/*
- * IRremote: IRremoteInfo - prints relevant config info & settings for IRremote over serial
- * Intended to help identify & troubleshoot the various settings of IRremote
- * For example, sometimes users are unsure of which pin is used for Tx or the RAWBUF values
- * This example can be used to assist the user directly or with support.
- * Intended to help identify & troubleshoot the various settings of IRremote
- * Hopefully this utility will be a useful tool for support & troubleshooting for IRremote
- * Check out the blog post describing the sketch via http://www.analysir.com/blog/2015/11/28/helper-utility-for-troubleshooting-irremote/
- * Version 1.0 November 2015
- * Original Author: AnalysIR - IR software & modules for Makers & Pros, visit http://www.AnalysIR.com
- */
-
-
-#include <IRremote.h>
-
-void setup()
-{
-  Serial.begin(115200); //You may alter the BAUD rate here as needed
-  while (!Serial); //wait until Serial is established - required on some Platforms
-
-  //Runs only once per restart of the Arduino.
-  dumpHeader();
-  dumpRAWBUF();
-  dumpTIMER();
-  dumpTimerPin();
-  dumpClock();
-  dumpPlatform();
-  dumpPulseParams();
-  dumpSignalParams();
-  dumpArduinoIDE();
-  dumpDebugMode();
-  dumpProtocols();
-  dumpFooter();
-}
-
-void loop() {
-  //nothing to do!
-}
-
-void dumpRAWBUF() {
-  Serial.print(F("RAWBUF: "));
-  Serial.println(RAWBUF);
-}
-
-void dumpTIMER() {
-  boolean flag = false;
-#ifdef IR_USE_TIMER1
-  Serial.print(F("Timer defined for use: ")); Serial.println(F("Timer1")); flag = true;
-#endif
-#ifdef IR_USE_TIMER2
-  Serial.print(F("Timer defined for use: ")); Serial.println(F("Timer2")); flag = true;
-#endif
-#ifdef IR_USE_TIMER3
-  Serial.print(F("Timer defined for use: ")); Serial.println(F("Timer3")); flag = true;
-#endif
-#ifdef IR_USE_TIMER4
-  Serial.print(F("Timer defined for use: ")); Serial.println(F("Timer4")); flag = true;
-#endif
-#ifdef IR_USE_TIMER5
-  Serial.print(F("Timer defined for use: ")); Serial.println(F("Timer5")); flag = true;
-#endif
-#ifdef IR_USE_TIMER4_HS
-  Serial.print(F("Timer defined for use: ")); Serial.println(F("Timer4_HS")); flag = true;
-#endif
-#ifdef IR_USE_TIMER_CMT
-  Serial.print(F("Timer defined for use: ")); Serial.println(F("Timer_CMT")); flag = true;
-#endif
-#ifdef IR_USE_TIMER_TPM1
-  Serial.print(F("Timer defined for use: ")); Serial.println(F("Timer_TPM1")); flag = true;
-#endif
-#ifdef IR_USE_TIMER_TINY0
-  Serial.print(F("Timer defined for use: ")); Serial.println(F("Timer_TINY0")); flag = true;
-#endif
-
-  if (!flag) {
-    Serial.print(F("Timer Error: ")); Serial.println(F("not defined"));
-  }
-}
-
-void dumpTimerPin() {
-  Serial.print(F("IR Tx Pin: "));
-  Serial.println(TIMER_PWM_PIN);
-}
-
-void dumpClock() {
-  Serial.print(F("MCU Clock: "));
-  Serial.println(F_CPU);
-}
-
-void dumpPlatform() {
-  Serial.print(F("MCU Platform: "));
-
-#if defined(__AVR_ATmega1280__)
-  Serial.println(F("Arduino Mega1280"));
-#elif  defined(__AVR_ATmega2560__)
-  Serial.println(F("Arduino Mega2560"));
-#elif defined(__AVR_AT90USB162__)
-  Serial.println(F("Teensy 1.0 / AT90USB162"));
-  // Teensy 2.0
-#elif defined(__AVR_ATmega32U4__)
-  Serial.println(F("Arduino Leonardo / Yun / Teensy 1.0 / ATmega32U4"));
-#elif defined(__MK20DX128__) || defined(__MK20DX256__)
-  Serial.println(F("Teensy 3.0 / Teensy 3.1 / MK20DX128 / MK20DX256"));
-#elif defined(__MKL26Z64__)
-  Serial.println(F("Teensy-LC / MKL26Z64"));
-#elif defined(__AVR_AT90USB646__)
-  Serial.println(F("Teensy++ 1.0 / AT90USB646"));
-#elif defined(__AVR_AT90USB1286__)
-  Serial.println(F("Teensy++ 2.0 / AT90USB1286"));
-#elif defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644__)
-  Serial.println(F("Sanguino / ATmega644(P)"));
-#elif defined(__AVR_ATmega8P__) || defined(__AVR_ATmega8__)
-  Serial.println(F("Atmega8 / ATmega8(P)"));
-#elif defined(__AVR_ATtiny84__)
-  Serial.println(F("ATtiny84"));
-#elif defined(__AVR_ATtiny85__)
-  Serial.println(F("ATtiny85"));
-#else
-  Serial.println(F("ATmega328(P) / (Duemilanove, Diecimila, LilyPad, Mini, Micro, Fio, Nano, etc)"));
-#endif
-}
-
-void dumpPulseParams() {
-  Serial.print(F("Mark Excess: ")); Serial.print(MARK_EXCESS);; Serial.println(F(" uSecs"));
-  Serial.print(F("Microseconds per tick: ")); Serial.print(USECPERTICK);; Serial.println(F(" uSecs"));
-  Serial.print(F("Measurement tolerance: ")); Serial.print(TOLERANCE); Serial.println(F("%"));
-}
-
-void dumpSignalParams() {
-  Serial.print(F("Minimum Gap between IR Signals: ")); Serial.print(_GAP); Serial.println(F(" uSecs"));
-}
-
-void dumpDebugMode() {
-  Serial.print(F("Debug Mode: "));
-#if DEBUG
-  Serial.println(F("ON"));
-#else
-  Serial.println(F("OFF (Normal)"));
-#endif
-
-}
-
-void dumpArduinoIDE() {
-  Serial.print(F("Arduino IDE version: "));
-  Serial.print(ARDUINO / 10000);
-  Serial.write('.');
-  Serial.print((ARDUINO % 10000) / 100);
-  Serial.write('.');
-  Serial.println(ARDUINO % 100);
-}
-
-void dumpProtocols() {
-
-  Serial.println(); Serial.print(F("IR PROTOCOLS  "));  Serial.print(F("SEND     "));  Serial.println(F("DECODE"));
-  Serial.print(F("============= "));  Serial.print(F("======== "));  Serial.println(F("========"));
-  Serial.print(F("RC5:          "));  printSendEnabled(SEND_RC5);  printDecodeEnabled(DECODE_RC6);
-  Serial.print(F("RC6:          "));  printSendEnabled(SEND_RC6);  printDecodeEnabled(DECODE_RC5);
-  Serial.print(F("NEC:          "));  printSendEnabled(SEND_NEC);  printDecodeEnabled(DECODE_NEC);
-  Serial.print(F("SONY:         "));  printSendEnabled(SEND_SONY);  printDecodeEnabled(DECODE_SONY);
-  Serial.print(F("PANASONIC:    "));  printSendEnabled(SEND_PANASONIC);  printDecodeEnabled(DECODE_PANASONIC);
-  Serial.print(F("JVC:          "));  printSendEnabled(SEND_JVC);  printDecodeEnabled(DECODE_JVC);
-  Serial.print(F("SAMSUNG:      "));  printSendEnabled(SEND_SAMSUNG);  printDecodeEnabled(DECODE_SAMSUNG);
-  Serial.print(F("WHYNTER:      "));  printSendEnabled(SEND_WHYNTER);  printDecodeEnabled(DECODE_WHYNTER);
-  Serial.print(F("AIWA_RC_T501: "));  printSendEnabled(SEND_AIWA_RC_T501);  printDecodeEnabled(DECODE_AIWA_RC_T501);
-  Serial.print(F("LG:           "));  printSendEnabled(SEND_LG);  printDecodeEnabled(DECODE_LG);
-  Serial.print(F("SANYO:        "));  printSendEnabled(SEND_SANYO);  printDecodeEnabled(DECODE_SANYO);
-  Serial.print(F("MITSUBISHI:   "));  printSendEnabled(SEND_MITSUBISHI);  printDecodeEnabled(DECODE_MITSUBISHI);
-  Serial.print(F("DISH:         "));  printSendEnabled(SEND_DISH);  printDecodeEnabled(DECODE_DISH);
-  Serial.print(F("SHARP:        "));  printSendEnabled(SEND_SHARP);  printDecodeEnabled(DECODE_SHARP);
-  Serial.print(F("DENON:        "));  printSendEnabled(SEND_DENON);  printDecodeEnabled(DECODE_DENON);
-  Serial.print(F("PRONTO:       "));  printSendEnabled(SEND_PRONTO);  Serial.println(F("(Not Applicable)"));
-}
-
-void printSendEnabled(int flag) {
-  if (flag) {
-    Serial.print(F("Enabled  "));
-  }
-  else {
-    Serial.print(F("Disabled "));
-  }
-}
-
-void printDecodeEnabled(int flag) {
-  if (flag) {
-    Serial.println(F("Enabled"));
-  }
-  else {
-    Serial.println(F("Disabled"));
-  }
-}
-
-void dumpHeader() {
-  Serial.println(F("IRremoteInfo - by AnalysIR (http://www.AnalysIR.com/)"));
-  Serial.println(F("             - A helper sketch to assist in troubleshooting issues with the library by reviewing the settings within the IRremote library"));
-  Serial.println(F("             - Prints out the important settings within the library, which can be configured to suit the many supported platforms"));
-  Serial.println(F("             - When seeking on-line support, please post or upload the output of this sketch, where appropriate"));
-  Serial.println();
-  Serial.println(F("IRremote Library Settings"));
-  Serial.println(F("========================="));
-}
-
-void dumpFooter() {
-  Serial.println();
-  Serial.println(F("Notes: "));
-  Serial.println(F("     - Most of the seetings above can be configured in the following files included as part of the library"));
-  Serial.println(F("     - IRremteInt.h"));
-  Serial.println(F("     - IRremote.h"));
-  Serial.println(F("     - You can save SRAM by disabling the Decode or Send features for any protocol (Near the top of IRremoteInt.h)"));
-  Serial.println(F("     - Some Timer conflicts, with other libraries, can be easily resolved by configuring a differnt Timer for your platform"));
-}
--- a/examples/IRsendDemo/IRsendDemo.ino	Sat Jan 23 15:25:05 2016 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-/*
- * IRremote: IRsendDemo - demonstrates sending IR codes with IRsend
- * An IR LED must be connected to Arduino PWM pin 3.
- * Version 0.1 July, 2009
- * Copyright 2009 Ken Shirriff
- * http://arcfn.com
- */
-
-
-#include <IRremote.h>
-
-IRsend irsend;
-
-void setup()
-{
-}
-
-void loop() {
-	for (int i = 0; i < 3; i++) {
-		irsend.sendSony(0xa90, 12);
-		delay(40);
-	}
-	delay(5000); //5 second delay between each signal burst
-}
--- a/examples/IRsendRawDemo/IRsendRawDemo.ino	Sat Jan 23 15:25:05 2016 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
- * IRremote: IRsendRawDemo - demonstrates sending IR codes with sendRaw
- * An IR LED must be connected to Arduino PWM pin 3.
- * Version 0.1 July, 2009
- * Copyright 2009 Ken Shirriff
- * http://arcfn.com
- *
- * IRsendRawDemo - added by AnalysIR (via www.AnalysIR.com), 24 August 2015
- *
- * This example shows how to send a RAW signal using the IRremote library.
- * The example signal is actually a 32 bit NEC signal.
- * Remote Control button: LGTV Power On/Off. 
- * Hex Value: 0x20DF10EF, 32 bits
- * 
- * It is more efficient to use the sendNEC function to send NEC signals. 
- * Use of sendRaw here, serves only as an example of using the function.
- * 
- */
-
-
-#include <IRremote.h>
-
-IRsend irsend;
-
-void setup()
-{
-
-}
-
-void loop() {
-  int khz = 38; // 38kHz carrier frequency for the NEC protocol
-  unsigned int irSignal[] = {9000, 4500, 560, 560, 560, 560, 560, 1690, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 1690, 560, 1690, 560, 560, 560, 1690, 560, 1690, 560, 1690, 560, 1690, 560, 1690, 560, 560, 560, 560, 560, 560, 560, 1690, 560, 560, 560, 560, 560, 560, 560, 560, 560, 1690, 560, 1690, 560, 1690, 560, 560, 560, 1690, 560, 1690, 560, 1690, 560, 1690, 560, 39416, 9000, 2210, 560}; //AnalysIR Batch Export (IRremote) - RAW
-  
-  irsend.sendRaw(irSignal, sizeof(irSignal) / sizeof(irSignal[0]), khz); //Note the approach used to automatically calculate the size of the array.
-
-  delay(5000); //In this example, the signal will be repeated every 5 seconds, approximately.
-}
--- a/examples/IRtest/IRtest.ino	Sat Jan 23 15:25:05 2016 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,190 +0,0 @@
-/*
- * IRremote: IRtest unittest
- * Version 0.1 July, 2009
- * Copyright 2009 Ken Shirriff
- * http://arcfn.com
- *
- * Note: to run these tests, edit IRremote/IRremote.h to add "#define TEST"
- * You must then recompile the library by removing IRremote.o and restarting
- * the arduino IDE.
- */
-
-#include <IRremote.h>
-#include <IRremoteInt.h>
-
-// Dumps out the decode_results structure.
-// Call this after IRrecv::decode()
-// void * to work around compiler issue
-//void dump(void *v) {
-//  decode_results *results = (decode_results *)v
-void dump(decode_results *results) {
-  int count = results->rawlen;
-  if (results->decode_type == UNKNOWN) {
-    Serial.println("Could not decode message");
-  } 
-  else {
-    if (results->decode_type == NEC) {
-      Serial.print("Decoded NEC: ");
-    } 
-    else if (results->decode_type == SONY) {
-      Serial.print("Decoded SONY: ");
-    } 
-    else if (results->decode_type == RC5) {
-      Serial.print("Decoded RC5: ");
-    } 
-    else if (results->decode_type == RC6) {
-      Serial.print("Decoded RC6: ");
-    }
-    Serial.print(results->value, HEX);
-    Serial.print(" (");
-    Serial.print(results->bits, DEC);
-    Serial.println(" bits)");
-  }
-  Serial.print("Raw (");
-  Serial.print(count, DEC);
-  Serial.print("): ");
-
-  for (int i = 0; i < count; i++) {
-    if ((i % 2) == 1) {
-      Serial.print(results->rawbuf[i]*USECPERTICK, DEC);
-    } 
-    else {
-      Serial.print(-(int)results->rawbuf[i]*USECPERTICK, DEC);
-    }
-    Serial.print(" ");
-  }
-  Serial.println("");
-}
-
-IRrecv irrecv(0);
-decode_results results;
-
-class IRsendDummy : 
-public IRsend
-{
-public:
-  // For testing, just log the marks/spaces
-#define SENDLOG_LEN 128
-  int sendlog[SENDLOG_LEN];
-  int sendlogcnt;
-  IRsendDummy() : 
-  IRsend() {
-  }
-  void reset() {
-    sendlogcnt = 0;
-  }
-  void mark(int time) {
-    sendlog[sendlogcnt] = time;
-    if (sendlogcnt < SENDLOG_LEN) sendlogcnt++;
-  }
-  void space(int time) {
-    sendlog[sendlogcnt] = -time;
-    if (sendlogcnt < SENDLOG_LEN) sendlogcnt++;
-  }
-  // Copies the dummy buf into the interrupt buf
-  void useDummyBuf() {
-    int last = SPACE;
-    irparams.rcvstate = STATE_STOP;
-    irparams.rawlen = 1; // Skip the gap
-    for (int i = 0 ; i < sendlogcnt; i++) {
-      if (sendlog[i] < 0) {
-        if (last == MARK) {
-          // New space
-          irparams.rawbuf[irparams.rawlen++] = (-sendlog[i] - MARK_EXCESS) / USECPERTICK;
-          last = SPACE;
-        } 
-        else {
-          // More space
-          irparams.rawbuf[irparams.rawlen - 1] += -sendlog[i] / USECPERTICK;
-        }
-      } 
-      else if (sendlog[i] > 0) {
-        if (last == SPACE) {
-          // New mark
-          irparams.rawbuf[irparams.rawlen++] = (sendlog[i] + MARK_EXCESS) / USECPERTICK;
-          last = MARK;
-        } 
-        else {
-          // More mark
-          irparams.rawbuf[irparams.rawlen - 1] += sendlog[i] / USECPERTICK;
-        }
-      }
-    }
-    if (irparams.rawlen % 2) {
-      irparams.rawlen--; // Remove trailing space
-    }
-  }
-};
-
-IRsendDummy irsenddummy;
-
-void verify(unsigned long val, int bits, int type) {
-  irsenddummy.useDummyBuf();
-  irrecv.decode(&results);
-  Serial.print("Testing ");
-  Serial.print(val, HEX);
-  if (results.value == val && results.bits == bits && results.decode_type == type) {
-    Serial.println(": OK");
-  } 
-  else {
-    Serial.println(": Error");
-    dump(&results);
-  }
-}  
-
-void testNEC(unsigned long val, int bits) {
-  irsenddummy.reset();
-  irsenddummy.sendNEC(val, bits);
-  verify(val, bits, NEC);
-}
-void testSony(unsigned long val, int bits) {
-  irsenddummy.reset();
-  irsenddummy.sendSony(val, bits);
-  verify(val, bits, SONY);
-}
-void testRC5(unsigned long val, int bits) {
-  irsenddummy.reset();
-  irsenddummy.sendRC5(val, bits);
-  verify(val, bits, RC5);
-}
-void testRC6(unsigned long val, int bits) {
-  irsenddummy.reset();
-  irsenddummy.sendRC6(val, bits);
-  verify(val, bits, RC6);
-}
-
-void test() {
-  Serial.println("NEC tests");
-  testNEC(0x00000000, 32);
-  testNEC(0xffffffff, 32);
-  testNEC(0xaaaaaaaa, 32);
-  testNEC(0x55555555, 32);
-  testNEC(0x12345678, 32);
-  Serial.println("Sony tests");
-  testSony(0xfff, 12);
-  testSony(0x000, 12);
-  testSony(0xaaa, 12);
-  testSony(0x555, 12);
-  testSony(0x123, 12);
-  Serial.println("RC5 tests");
-  testRC5(0xfff, 12);
-  testRC5(0x000, 12);
-  testRC5(0xaaa, 12);
-  testRC5(0x555, 12);
-  testRC5(0x123, 12);
-  Serial.println("RC6 tests");
-  testRC6(0xfffff, 20);
-  testRC6(0x00000, 20);
-  testRC6(0xaaaaa, 20);
-  testRC6(0x55555, 20);
-  testRC6(0x12345, 20);
-}
-
-void setup()
-{
-  Serial.begin(9600);
-  test();
-}
-
-void loop() {
-}
--- a/examples/IRtest2/IRtest2.ino	Sat Jan 23 15:25:05 2016 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,290 +0,0 @@
-/*
- * Test send/receive functions of IRremote, using a pair of Arduinos.
- *
- * Arduino #1 should have an IR LED connected to the send pin (3).
- * Arduino #2 should have an IR detector/demodulator connected to the
- * receive pin (11) and a visible LED connected to pin 3.
- *
- * The cycle:
- *  Arduino #1 will wait 2 seconds, then run through the tests.
- *  It repeats this forever.
- *  Arduino #2 will wait for at least one second of no signal
- *  (to synchronize with #1).  It will then wait for the same test
- *  signals.  It will log all the status to the serial port.  It will
- *  also indicate status through the LED, which will flash each time a test
- *  is completed.  If there is an error, it will light up for 5 seconds.
- *
- * The test passes if the LED flashes 19 times, pauses, and then repeats.
- * The test fails if the LED lights for 5 seconds.
- *
- * The test software automatically decides which board is the sender and which is
- * the receiver by looking for an input on the send pin, which will indicate
- * the sender.  You should hook the serial port to the receiver for debugging.
- *  
- * Copyright 2010 Ken Shirriff
- * http://arcfn.com
- */
-
-#include <IRremote.h>
-
-int RECV_PIN = 11;
-int LED_PIN = 3;
-
-IRrecv irrecv(RECV_PIN);
-IRsend irsend;
-
-decode_results results;
-
-#define RECEIVER 1
-#define SENDER 2
-#define ERROR 3
-
-int mode;
-
-void setup()
-{
-  Serial.begin(9600);
-  // Check RECV_PIN to decide if we're RECEIVER or SENDER
-  if (digitalRead(RECV_PIN) == HIGH) {
-    mode = RECEIVER;
-    irrecv.enableIRIn();
-    pinMode(LED_PIN, OUTPUT);
-    digitalWrite(LED_PIN, LOW);
-    Serial.println("Receiver mode");
-  } 
-  else {
-    mode = SENDER;
-    Serial.println("Sender mode");
-  }
-}
-
-// Wait for the gap between tests, to synchronize with
-// the sender.
-// Specifically, wait for a signal followed by a gap of at last gap ms.
-void waitForGap(int gap) {
-  Serial.println("Waiting for gap");
-  while (1) {
-    while (digitalRead(RECV_PIN) == LOW) { 
-    }
-    unsigned long time = millis();
-    while (digitalRead(RECV_PIN) == HIGH) {
-      if (millis() - time > gap) {
-        return;
-      }
-    }
-  }
-}
-
-// Dumps out the decode_results structure.
-// Call this after IRrecv::decode()
-void dump(decode_results *results) {
-  int count = results->rawlen;
-  if (results->decode_type == UNKNOWN) {
-    Serial.println("Could not decode message");
-  } 
-  else {
-    if (results->decode_type == NEC) {
-      Serial.print("Decoded NEC: ");
-    } 
-    else if (results->decode_type == SONY) {
-      Serial.print("Decoded SONY: ");
-    } 
-    else if (results->decode_type == RC5) {
-      Serial.print("Decoded RC5: ");
-    } 
-    else if (results->decode_type == RC6) {
-      Serial.print("Decoded RC6: ");
-    }
-    Serial.print(results->value, HEX);
-    Serial.print(" (");
-    Serial.print(results->bits, DEC);
-    Serial.println(" bits)");
-  }
-  Serial.print("Raw (");
-  Serial.print(count, DEC);
-  Serial.print("): ");
-
-  for (int i = 0; i < count; i++) {
-    if ((i % 2) == 1) {
-      Serial.print(results->rawbuf[i]*USECPERTICK, DEC);
-    } 
-    else {
-      Serial.print(-(int)results->rawbuf[i]*USECPERTICK, DEC);
-    }
-    Serial.print(" ");
-  }
-  Serial.println("");
-}
-
-
-// Test send or receive.
-// If mode is SENDER, send a code of the specified type, value, and bits
-// If mode is RECEIVER, receive a code and verify that it is of the
-// specified type, value, and bits.  For success, the LED is flashed;
-// for failure, the mode is set to ERROR.
-// The motivation behind this method is that the sender and the receiver
-// can do the same test calls, and the mode variable indicates whether
-// to send or receive.
-void test(char *label, int type, unsigned long value, int bits) {
-  if (mode == SENDER) {
-    Serial.println(label);
-    if (type == NEC) {
-      irsend.sendNEC(value, bits);
-    } 
-    else if (type == SONY) {
-      irsend.sendSony(value, bits);
-    } 
-    else if (type == RC5) {
-      irsend.sendRC5(value, bits);
-    } 
-    else if (type == RC6) {
-      irsend.sendRC6(value, bits);
-    } 
-    else {
-      Serial.print(label);
-      Serial.println("Bad type!");
-    }
-    delay(200);
-  } 
-  else if (mode == RECEIVER) {
-    irrecv.resume(); // Receive the next value
-    unsigned long max_time = millis() + 30000;
-    Serial.print(label);
-
-    // Wait for decode or timeout
-    while (!irrecv.decode(&results)) {
-      if (millis() > max_time) {
-        Serial.println("Timeout receiving data");
-        mode = ERROR;
-        return;
-      }
-    }
-    if (type == results.decode_type && value == results.value && bits == results.bits) {
-      Serial.println (": OK");
-      digitalWrite(LED_PIN, HIGH);
-      delay(20);
-      digitalWrite(LED_PIN, LOW);
-    } 
-    else {
-      Serial.println(": BAD");
-      dump(&results);
-      mode = ERROR;
-    }
-  }
-}
-
-// Test raw send or receive.  This is similar to the test method,
-// except it send/receives raw data.
-void testRaw(char *label, unsigned int *rawbuf, int rawlen) {
-  if (mode == SENDER) {
-    Serial.println(label);
-    irsend.sendRaw(rawbuf, rawlen, 38 /* kHz */);
-    delay(200);
-  } 
-  else if (mode == RECEIVER ) {
-    irrecv.resume(); // Receive the next value
-    unsigned long max_time = millis() + 30000;
-    Serial.print(label);
-
-    // Wait for decode or timeout
-    while (!irrecv.decode(&results)) {
-      if (millis() > max_time) {
-        Serial.println("Timeout receiving data");
-        mode = ERROR;
-        return;
-      }
-    }
-
-    // Received length has extra first element for gap
-    if (rawlen != results.rawlen - 1) {
-      Serial.print("Bad raw length ");
-      Serial.println(results.rawlen, DEC);
-      mode = ERROR;
-      return;
-    }
-    for (int i = 0; i < rawlen; i++) {
-      long got = results.rawbuf[i+1] * USECPERTICK;
-      // Adjust for extra duration of marks
-      if (i % 2 == 0) { 
-        got -= MARK_EXCESS;
-      } 
-      else {
-        got += MARK_EXCESS;
-      }
-      // See if close enough, within 25%
-      if (rawbuf[i] * 1.25 < got || got * 1.25 < rawbuf[i]) {
-        Serial.println(": BAD");
-        dump(&results);
-        mode = ERROR;
-        return;
-      }
-
-    }
-    Serial.println (": OK");
-    digitalWrite(LED_PIN, HIGH);
-    delay(20);
-    digitalWrite(LED_PIN, LOW);
-  }
-}   
-
-// This is the raw data corresponding to NEC 0x12345678
-unsigned int sendbuf[] = { /* NEC format */
-  9000, 4500,
-  560, 560, 560, 560, 560, 560, 560, 1690, /* 1 */
-  560, 560, 560, 560, 560, 1690, 560, 560, /* 2 */
-  560, 560, 560, 560, 560, 1690, 560, 1690, /* 3 */
-  560, 560, 560, 1690, 560, 560, 560, 560, /* 4 */
-  560, 560, 560, 1690, 560, 560, 560, 1690, /* 5 */
-  560, 560, 560, 1690, 560, 1690, 560, 560, /* 6 */
-  560, 560, 560, 1690, 560, 1690, 560, 1690, /* 7 */
-  560, 1690, 560, 560, 560, 560, 560, 560, /* 8 */
-  560};
-
-void loop() {
-  if (mode == SENDER) {
-    delay(2000);  // Delay for more than gap to give receiver a better chance to sync.
-  } 
-  else if (mode == RECEIVER) {
-    waitForGap(1000);
-  } 
-  else if (mode == ERROR) {
-    // Light up for 5 seconds for error
-    digitalWrite(LED_PIN, HIGH);
-    delay(5000);
-    digitalWrite(LED_PIN, LOW);
-    mode = RECEIVER;  // Try again
-    return;
-  }
-
-  // The test suite.
-  test("SONY1", SONY, 0x123, 12);
-  test("SONY2", SONY, 0x000, 12);
-  test("SONY3", SONY, 0xfff, 12);
-  test("SONY4", SONY, 0x12345, 20);
-  test("SONY5", SONY, 0x00000, 20);
-  test("SONY6", SONY, 0xfffff, 20);
-  test("NEC1", NEC, 0x12345678, 32);
-  test("NEC2", NEC, 0x00000000, 32);
-  test("NEC3", NEC, 0xffffffff, 32);
-  test("NEC4", NEC, REPEAT, 32);
-  test("RC51", RC5, 0x12345678, 32);
-  test("RC52", RC5, 0x0, 32);
-  test("RC53", RC5, 0xffffffff, 32);
-  test("RC61", RC6, 0x12345678, 32);
-  test("RC62", RC6, 0x0, 32);
-  test("RC63", RC6, 0xffffffff, 32);
-
-  // Tests of raw sending and receiving.
-  // First test sending raw and receiving raw.
-  // Then test sending raw and receiving decoded NEC
-  // Then test sending NEC and receiving raw
-  testRaw("RAW1", sendbuf, 67);
-  if (mode == SENDER) {
-    testRaw("RAW2", sendbuf, 67);
-    test("RAW3", NEC, 0x12345678, 32);
-  } 
-  else {
-    test("RAW2", NEC, 0x12345678, 32);
-    testRaw("RAW3", sendbuf, 67);
-  }
-}
--- a/examples/JVCPanasonicSendDemo/JVCPanasonicSendDemo.ino	Sat Jan 23 15:25:05 2016 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
- * IRremote: IRsendDemo - demonstrates sending IR codes with IRsend
- * An IR LED must be connected to Arduino PWM pin 3.
- * Version 0.1 July, 2009
- * Copyright 2009 Ken Shirriff
- * http://arcfn.com
- * JVC and Panasonic protocol added by Kristian Lauszus (Thanks to zenwheel and other people at the original blog post)
- */
-#include <IRremote.h>
- 
-#define PanasonicAddress      0x4004     // Panasonic address (Pre data) 
-#define PanasonicPower        0x100BCBD  // Panasonic Power button
-
-#define JVCPower              0xC5E8
-
-IRsend irsend;
-
-void setup()
-{
-}
-
-void loop() {
-  irsend.sendPanasonic(PanasonicAddress,PanasonicPower); // This should turn your TV on and off
-  
-  irsend.sendJVC(JVCPower, 16,0); // hex value, 16 bits, no repeat
-  delayMicroseconds(50); // see http://www.sbprojects.com/knowledge/ir/jvc.php for information
-  irsend.sendJVC(JVCPower, 16,1); // hex value, 16 bits, repeat
-  delayMicroseconds(50);
-}
--- a/examples/LGACSendDemo/LGACSendDemo.ino	Sat Jan 23 15:25:05 2016 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,263 +0,0 @@
-#include <IRremote.h>
-#include <Wire.h>
-
-
-IRsend irsend;
-// not used
-int RECV_PIN = 11;
-IRrecv irrecv (RECV_PIN);
-
-const int AC_TYPE  = 0;
-// 0 : TOWER
-// 1 : WALL
-//
-
-int AC_HEAT = 0;
-// 0 : cooling
-// 1 : heating
-
-int AC_POWER_ON    = 0;
-// 0 : off
-// 1 : on
-
-int AC_AIR_ACLEAN  = 0;
-// 0 : off
-// 1 : on --> power on
-
-int AC_TEMPERATURE = 27;
-// temperature : 18 ~ 30
-
-int AC_FLOW        = 1;
-// 0 : low
-// 1 : mid
-// 2 : high
-// if AC_TYPE =1, 3 : change
-//
-
-
-const int AC_FLOW_TOWER[3] = {0, 4, 6};
-const int AC_FLOW_WALL[4]  = {0, 2, 4, 5};
-
-unsigned long AC_CODE_TO_SEND;
-
-int r = LOW;
-int o_r = LOW;
-
-byte a, b;
-
-void ac_send_code(unsigned long code)
-{
-  Serial.print("code to send : ");
-  Serial.print(code, BIN);
-  Serial.print(" : ");
-  Serial.println(code, HEX);
-
-  irsend.sendLG(code, 28);
-}
-
-void ac_activate(int temperature, int air_flow)
-{
-
-  int AC_MSBITS1 = 8;
-  int AC_MSBITS2 = 8;
-  int AC_MSBITS3 = 0;
-  int AC_MSBITS4 ;
-  if ( AC_HEAT == 1 ) {
-    // heating
-    AC_MSBITS4 = 4;
-  } else {
-    // cooling
-    AC_MSBITS4 = 0;
-  }
-  int AC_MSBITS5 = temperature - 15;
-  int AC_MSBITS6 ;
-
-  if ( AC_TYPE == 0) {
-    AC_MSBITS6 = AC_FLOW_TOWER[air_flow];
-  } else {
-    AC_MSBITS6 = AC_FLOW_WALL[air_flow];
-  }
-
-  int AC_MSBITS7 = (AC_MSBITS3 + AC_MSBITS4 + AC_MSBITS5 + AC_MSBITS6) & B00001111;
-
-  AC_CODE_TO_SEND =  AC_MSBITS1 << 4 ;
-  AC_CODE_TO_SEND =  (AC_CODE_TO_SEND + AC_MSBITS2) << 4;
-  AC_CODE_TO_SEND =  (AC_CODE_TO_SEND + AC_MSBITS3) << 4;
-  AC_CODE_TO_SEND =  (AC_CODE_TO_SEND + AC_MSBITS4) << 4;
-  AC_CODE_TO_SEND =  (AC_CODE_TO_SEND + AC_MSBITS5) << 4;
-  AC_CODE_TO_SEND =  (AC_CODE_TO_SEND + AC_MSBITS6) << 4;
-  AC_CODE_TO_SEND =  (AC_CODE_TO_SEND + AC_MSBITS7);
-
-  ac_send_code(AC_CODE_TO_SEND);
-
-  AC_POWER_ON = 1;
-  AC_TEMPERATURE = temperature;
-  AC_FLOW = air_flow;
-}
-
-void ac_change_air_swing(int air_swing)
-{
-  if ( AC_TYPE == 0) {
-    if ( air_swing == 1) {
-      AC_CODE_TO_SEND = 0x881316B;
-    } else {
-      AC_CODE_TO_SEND = 0x881317C;
-    }
-  } else {
-    if ( air_swing == 1) {
-      AC_CODE_TO_SEND = 0x8813149;
-    } else {
-      AC_CODE_TO_SEND = 0x881315A;
-    }
-  }
-
-  ac_send_code(AC_CODE_TO_SEND);
-}
-
-void ac_power_down()
-{
-  AC_CODE_TO_SEND = 0x88C0051;
-
-  ac_send_code(AC_CODE_TO_SEND);
-
-  AC_POWER_ON = 0;
-}
-
-void ac_air_clean(int air_clean)
-{
-  if ( air_clean == 1) {
-    AC_CODE_TO_SEND = 0x88C000C;
-  } else {
-    AC_CODE_TO_SEND = 0x88C0084;
-  }
-
-  ac_send_code(AC_CODE_TO_SEND);
-
-  AC_AIR_ACLEAN = air_clean;
-}
-
-void setup()
-{
-  Serial.begin(38400);
-  delay(1000);
-  Wire.begin(7);
-  Wire.onReceive(receiveEvent);
-
-  Serial.println("  - - - T E S T - - -   ");
-
-  /* test
-    ac_activate(25, 1);
-    delay(5000);
-    ac_activate(27, 2);
-    delay(5000);
-
-  */
-}
-
-void loop()
-{
-
-
-  ac_activate(25, 1);
-  delay(5000);
-  ac_activate(27, 0);
-  delay(5000);
-
-
-  if ( r != o_r) {
-
-    /*
-    # a : mode or temp    b : air_flow, temp, swing, clean, cooling/heating
-    # 18 ~ 30 : temp      0 ~ 2 : flow // on
-    # 0 : off             0
-    # 1 : on              0
-    # 2 : air_swing       0 or 1
-    # 3 : air_clean       0 or 1
-    # 4 : air_flow        0 ~ 2 : flow
-    # 5 : temp            18 ~ 30
-    # + : temp + 1
-    # - : temp - 1
-    # m : change cooling to air clean, air clean to cooling
-    */
-    Serial.print("a : ");
-    Serial.print(a);
-    Serial.print("  b : ");
-    Serial.println(b);
-
-    switch (a) {
-      case 0: // off
-        ac_power_down();
-        break;
-      case 1: // on
-        ac_activate(AC_TEMPERATURE, AC_FLOW);
-        break;
-      case 2:
-        if ( b == 0 | b == 1 ) {
-          ac_change_air_swing(b);
-        }
-        break;
-      case 3: // 1  : clean on, power on
-        if ( b == 0 | b == 1 ) {
-          ac_air_clean(b);
-        }
-        break;
-      case 4:
-        if ( 0 <= b && b <= 2  ) {
-          ac_activate(AC_TEMPERATURE, b);
-        }
-        break;
-      case 5:
-        if (18 <= b && b <= 30  ) {
-          ac_activate(b, AC_FLOW);
-        }
-        break;
-      case '+':
-        if ( 18 <= AC_TEMPERATURE && AC_TEMPERATURE <= 29 ) {
-          ac_activate((AC_TEMPERATURE + 1), AC_FLOW);
-        }
-        break;
-      case '-':
-        if ( 19 <= AC_TEMPERATURE && AC_TEMPERATURE <= 30 ) {
-          ac_activate((AC_TEMPERATURE - 1), AC_FLOW);
-        }
-        break;
-      case 'm':
-        /*
-          if ac is on,  1) turn off, 2) turn on ac_air_clean(1)
-          if ac is off, 1) turn on,  2) turn off ac_air_clean(0)
-        */
-        if ( AC_POWER_ON == 1 ) {
-          ac_power_down();
-          delay(100);
-          ac_air_clean(1);
-        } else {
-          if ( AC_AIR_ACLEAN == 1) {
-            ac_air_clean(0);
-            delay(100);
-          }
-          ac_activate(AC_TEMPERATURE, AC_FLOW);
-        }
-        break;
-      default:
-        if ( 18 <= a && a <= 30 ) {
-          if ( 0 <= b && b <= 2 ) {
-            ac_activate(a, b);
-          }
-        }
-    }
-
-    o_r = r ;
-  }
-  delay(100);
-}
-
-
-
-void receiveEvent(int howMany)
-{
-  a = Wire.read();
-  b = Wire.read();
-  r = !r ;
-}
-
-
--- a/examples/LGACSendDemo/LGACSendDemo.md	Sat Jan 23 15:25:05 2016 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,93 +0,0 @@
-=== decoding for LG A/C ====
-- 1) remote of LG AC has two type of HDR mark/space, 8000/4000 and 3100/10000 
-- 2) HDR 8000/4000 is decoded using decodeLG(IRrecvDumpV2) without problem
-- 3) for HDR 3100/10000, use AnalysIR's code : http://www.analysir.com/blog/2014/03/19/air-conditioners-problems-recording-long-infrared-remote-control-signals-arduino/
-- 4) for bin output based on AnalysIR's code : https://gist.github.com/chaeplin/a3a4b4b6b887c663bfe8
-- 5) remove first two byte(11)
-- 6) sample rawcode with bin output : https://gist.github.com/chaeplin/134d232e0b8cfb898860
-
-
-=== *** ===
-- 1) Sample raw code : https://gist.github.com/chaeplin/ab2a7ad1533c41260f0d
-- 2) send raw code : https://gist.github.com/chaeplin/7c800d3166463bb51be4
-
-
-=== *** ===
-- (0) : Cooling or Heating
-- (1) : fixed 
-- (2) : fixed
-- (3) : special(power, swing, air clean)
-- (4) : change air flow, temperature, cooling(0)/heating(4)
-- (5) : temperature ( 15 + (5) = )
-- (6) : air flow
-- (7) : crc ( 3 + 4 + 5 + 6 ) & B00001111
-
-
-°F = °C × 1.8 + 32
-°C = (°F − 32) / 1.8
-
-
-=== *** ===
-* remote / Korea / without heating
-
-|       status   |(0)| (1)| (2)| (3)| (4)| (5)| (6)| (7)
-|----------------|---|----|----|----|----|----|----|----
-| on / 25 / mid  | C |1000|1000|0000|0000|1010|0010|1100
-| on / 26 / mid  | C |1000|1000|0000|0000|1011|0010|1101      
-| on / 27 / mid  | C |1000|1000|0000|0000|1100|0010|1110     
-| on / 28 / mid  | C |1000|1000|0000|0000|1101|0010|1111     
-| on / 25 / high | C |1000|1000|0000|0000|1010|0100|1110     
-| on / 26 / high | C |1000|1000|0000|0000|1011|0100|1111     
-| on / 27 / high | C |1000|1000|0000|0000|1100|0100|0000     
-| on / 28 / high | C |1000|1000|0000|0000|1101|0100|0001
-|----------------|---|----|----|----|----|----|----|----    
-| 1 up           | C |1000|1000|0000|1000|1101|0100|1001 
-|----------------|---|----|----|----|----|----|----|----    
-| Cool power     | C |1000|1000|0001|0000|0000|1100|1101     
-| energy saving  | C |1000|1000|0001|0000|0000|0100|0101     
-| power          | C |1000|1000|0001|0000|0000|1000|1001            
-| flow/up/down   | C |1000|1000|0001|0011|0001|0100|1001     
-| up/down off    | C |1000|1000|0001|0011|0001|0101|1010     
-| flow/left/right| C |1000|1000|0001|0011|0001|0110|1011     
-| left/right off | C |1000|1000|0001|0011|0001|0111|1100 
-|----------------|---|----|----|----|----|----|----|----    
-| Air clean      | C |1000|1000|1100|0000|0000|0000|1100
-|----------------|---|----|----|----|----|----|----|----    
-| off            | C |1000|1000|1100|0000|0000|0101|0001 
-
-
-
-* remote / with heating 
-* converted using raw code at https://github.com/chaeplin/RaspAC/blob/master/lircd.conf 
-
-|       status   |(0)| (1)| (2)| (3)| (4)| (5)| (6)| (7)
-|----------------|---|----|----|----|----|----|----|----
-| on             | C |1000|1000|0000|0000|1011|0010|1101
-|----------------|---|----|----|----|----|----|----|----
-| off            | C |1000|1000|1100|0000|0000|0101|0001
-|----------------|---|----|----|----|----|----|----|----
-| 64  / 18       | C |1000|1000|0000|0000|0011|0100|0111
-| 66  / 19       | C |1000|1000|0000|0000|0100|0100|1000
-| 68  / 20       | C |1000|1000|0000|0000|0101|0100|1001
-| 70  / 21       | C |1000|1000|0000|0000|0110|0100|1010
-| 72  / 22       | C |1000|1000|0000|0000|0111|0100|1011
-| 74  / 23       | C |1000|1000|0000|0000|1000|0100|1100
-| 76  / 25       | C |1000|1000|0000|0000|1010|0100|1110
-| 78  / 26       | C |1000|1000|0000|0000|1011|0100|1111
-| 80  / 27       | C |1000|1000|0000|0000|1100|0100|0000
-| 82  / 28       | C |1000|1000|0000|0000|1101|0100|0001
-| 84  / 29       | C |1000|1000|0000|0000|1110|0100|0010
-| 86  / 30       | C |1000|1000|0000|0000|1111|0100|0011
-|----------------|---|----|----|----|----|----|----|----
-| heat64         | H |1000|1000|0000|0100|0011|0100|1011
-| heat66         | H |1000|1000|0000|0100|0100|0100|1100
-| heat68         | H |1000|1000|0000|0100|0101|0100|1101
-| heat70         | H |1000|1000|0000|0100|0110|0100|1110
-| heat72         | H |1000|1000|0000|0100|0111|0100|1111
-| heat74         | H |1000|1000|0000|0100|1000|0100|0000
-| heat76         | H |1000|1000|0000|0100|1001|0100|0001
-| heat78         | H |1000|1000|0000|0100|1011|0100|0011
-| heat80         | H |1000|1000|0000|0100|1100|0100|0100
-| heat82         | H |1000|1000|0000|0100|1101|0100|0101
-| heat84         | H |1000|1000|0000|0100|1110|0100|0110
-| heat86         | H |1000|1000|0000|0100|1111|0100|0111