Attenzione! Questo articolo non viene aggiornato da più di 12 mesi.
/*
* alessandrobuzzi.com
*/
#include <IRremote.h>
#include <Arduino.h>
#define DECODE_NEC // special decoder for all protocols
#define IR_RECEIVE_PIN 7
// Relay
const int SW1 = 8; // the Arduino pin, which connects to the IN pin of relay
const int SW2 = 9; // the Arduino pin, which connects to the IN pin of relay
const int SW3 = 10; // the Arduino pin, which connects to the IN pin of relay
void setup() {
Serial.begin(115200);
//Start the receiver, enable feedback LED and take LED feedback pin from the internal boards definition
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK, USE_DEFAULT_FEEDBACK_LED_PIN);
Serial.print(F("Ready to receive IR signals at pin "));
Serial.println(IR_RECEIVE_PIN);
// relays off
pinMode(SW1, OUTPUT);
pinMode(SW2, OUTPUT);
pinMode(SW3, OUTPUT);
digitalWrite(SW1, HIGH); // Relay is active low, so HIGH will turn it off at startup
digitalWrite(SW2, HIGH);
digitalWrite(SW3, HIGH);
}
void loop() {
/*
* Check if received data is available and if yes, try to decode it.
* Decoded result is in the IrReceiver.decodedIRData structure.
*
* E.g. command is in IrReceiver.decodedIRData.command
* address is in command is in IrReceiver.decodedIRData.address
* and up to 32 bit raw data in IrReceiver.decodedIRData.decodedRawData
*/
if (IrReceiver.decode()) {
// Print a short summary of received data
IrReceiver.printIRResultShort(&Serial);
Serial.println();
//Enable receiving of the next value
IrReceiver.resume(); // Enable receiving of the next value
/*
* Finally, check the received data and perform actions according to the received command
*/
if (IrReceiver.decodedIRData.command == 0xC) {
// 1
digitalWrite(SW1, LOW);
} else if (IrReceiver.decodedIRData.command == 0x18) {
// 2
digitalWrite(SW1, HIGH);
}else if (IrReceiver.decodedIRData.command == 0x8) {
// 4
digitalWrite(SW2, LOW);
}else if (IrReceiver.decodedIRData.command == 0x1C) {
// 5
digitalWrite(SW2, HIGH);
}else if (IrReceiver.decodedIRData.command == 0x42) {
// 7
digitalWrite(SW3, LOW);
}else if (IrReceiver.decodedIRData.command == 0x52) {
// 8
digitalWrite(SW3, HIGH); // tasto 8
}else if (IrReceiver.decodedIRData.command == 0x9) {
// DOWN
digitalWrite(SW1, HIGH); // All off
digitalWrite(SW2, HIGH);
digitalWrite(SW3, HIGH);
}else if (IrReceiver.decodedIRData.command == 0x7) {
// UP
digitalWrite(SW1, LOW); // All on
digitalWrite(SW2, LOW);
digitalWrite(SW3, LOW);
}
}
}