Управление нагрузкой при помощи пульта ДУ, Код из видео

Управление светодиодными лентами при помощи пульта дистанционного управления и ардуино.

mega8_ir

внешний вид платы

Библиотека IRremote

 #include <IRremote.h> // https://github.com/shirriff/Arduino-IRremote

#define RECV_PIN 8 // IR приемник
#define OUT1 11 // выхода на мосфеты\реле
#define OUT2 12
#define OUT3 15
#define OUT4 14

#define POWER_KEY 0x40BF30CF // коды пульта ДУ
#define KEY1 0x40BF7887
#define KEY2 0x40BFF807
#define KEY3 0xC03FC03F
#define KEY4 0xC03F40BF

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  irrecv.enableIRIn();  
  pinMode(OUT1, OUTPUT);
  pinMode(OUT2, OUTPUT);
  pinMode(OUT3, OUTPUT);
  pinMode(OUT4, OUTPUT);
}

void loop() {
  if (irrecv.decode(&results)) {
    if (results.value == KEY1) digitalWrite(OUT1, !digitalRead(OUT1));
    else if (results.value == KEY2) digitalWrite(OUT2, !digitalRead(OUT2));
    else if (results.value == KEY3) digitalWrite(OUT3, !digitalRead(OUT3));
    else if (results.value == KEY4) digitalWrite(OUT4, !digitalRead(OUT4));
    
    else if (results.value == POWER_KEY) {  
      if (digitalRead(OUT1) || digitalRead(OUT2) || digitalRead(OUT3) || digitalRead(OUT4)){
        digitalWrite(OUT1, LOW);
        digitalWrite(OUT2, LOW);
        digitalWrite(OUT3, LOW);
        digitalWrite(OUT4, LOW);  
      }
      else {
        digitalWrite(OUT1, HIGH);
        digitalWrite(OUT2, HIGH);
        digitalWrite(OUT3, HIGH);
        digitalWrite(OUT4, HIGH);  
      }          
    }
    irrecv.resume();  
  }
}