Arduino поможет реализовать управление домашней электроникой с пульта дистанционного управления: выключение света сразу во всех помещениях, открытие/закрытие штор или роллетов нажатием одной кнопки на ПДУ. Для осуществления этого понадобятся следующие компоненты:
Соединяем:
Загружаем код для платы Arduino:
#include <IRremote.h>
const int IR_PIN = 2;
const int RELAY_PINS[8] = {12, 11, 10, 9, 8, 7, 6, 5};
int RELAY_STATES[8] = {LOW};
IRrecv irrecv(IR_PIN);
decode_results results;
void setup() {
  irrecv.enableIRIn();
  for (int i = 0; i < 8; i++) {
    pinMode(RELAY_PINS[i], OUTPUT);
  }
}
/**
 * Decode IR code to numeric button 0-9
 * Return pressed button number or -1
 */
int samsungDecode(unsigned long irValue) {
  switch (irValue) {
    case 0xE0E020DF:
      return 1;
    case 0xE0E0A05F:
      return 2;
    case 0xE0E0609F:
      return 3;
    case 0xE0E010EF:
      return 4;
    case 0xE0E0906F:
      return 5;
    case 0xE0E050AF:
      return 6;
    case 0xE0E030CF:
      return 7;
    case 0xE0E0B04F:
      return 8;
    case 0xE0E0708F:
      return 9;
    case 0xE0E08877:
      return 0;
  }
  return -1;
}
/**
 * Toggle single relay or switch ON/OFF all relays
 */
void action(int button) {
  if (button > 0 && button < 9) {
    //toggle single relay
    int i = button - 1;
    if (RELAY_STATES[i] == LOW) {
      digitalWrite(RELAY_PINS[i], HIGH);
      RELAY_STATES[i] = HIGH;
    } else {
      digitalWrite(RELAY_PINS[i], LOW);
      RELAY_STATES[i] = LOW;
    }
  } else if (button == 9) {
    //switch ON all relays
    for (int i = 0; i < 8; i++) {
      digitalWrite(RELAY_PINS[i], HIGH);
      RELAY_STATES[i] = HIGH;
    }
  } else if (button == 0) {
    //switch OFF all relays
    for (int i = 0; i < 8; i++) {
      digitalWrite(RELAY_PINS[i], LOW);
      RELAY_STATES[i] = LOW;
    }
  }
}
int lastPressedButton = -1;
void loop() {
  if (irrecv.decode(&results)) {
    int button = samsungDecode(results.value);
    if (button != lastPressedButton) {
      lastPressedButton = button;
      action(button);
    }
    irrecv.resume();
  } else {
    lastPressedButton = -1;
  }
  delay(250);
}
и наслаждаемся нажатием кнопок:
Кнопки 1-8 пульта управляют включением/выключением реле 1-8; кнопка 9 пульта одновременно включает все реле, а кнопка 0 пульта одновременно выключает все реле.
В предыдущей статье Arduino: считывание кодов с пульта дистанционного управления я выяснил коды для моего пульта Samsung, которые использовал здесь. Если у вас другой пульт, то для реализации потребуется считать его коды.



Комментарии
Отправить комментарий