Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: Lilnija_29012017 NucleoF042K6_IRReceiver
Revision 2:6bbd1e911324, committed 2016-01-23
- 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
--- 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