Attenzione! Questo articolo non viene aggiornato da più di 12 mesi.
Attenzione! Questo articolo non viene aggiornato da più di 12 mesi.

Arduino IR multiple relay control

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);
        }


        
    }
}


Share the Post:

Related Posts