Выключатель света с ИК пульта(любого)

Тема в разделе "Глядите, что я сделал", создана пользователем Юриус, 21 май 2019.

  1. Юриус

    Юриус Нерд

    Суть устройства такова. При включении основного выключателя, подаче напряжения на устройство свет загорается. Берем любой ИК пульт, я использую телевизионный. Нажимаю свободную кнопку, её код записывается в Ардуино. И потом я могу с этого пульта, этой кнопкой вкл/выкл свет. Главное в том, что при выключении основного выклбчателя и подачи питания, код с памяти сбрасывается. Удобно тем, что не привязано к одному пульту. При смене, поломке и т.д. пульта, можно вкл любым другим. Схема и скетч приложены. Устройство установлено в пустотке потолочной плиты, ИК приемник аккуратно выведен наружу.
     

    Вложения:

    Tomasina и Daniil нравится это.
  2. Daniil

    Daniil Гуру

    Спс, за txt.
    Получается, чтобы выключить свет нужно 2 раза на кнопку нажать? Если пользователь пропустит блок setup, то уже не сможет назначить кнопку?

    Справедливости ради, у вас не принципиальная схема, а блок-схема.
     
    Vovka нравится это.
  3. Юриус

    Юриус Нерд

    Да, блок-схема. А из setup не выйдет, пока не получит какой нибудь код. Там же условие while(varRelay<1){...... стоит.
     
  4. Airbus

    Airbus Радиохулиган Модератор

    Я уже писал где-то Вам:там кнопочка есть.
    [​IMG]
    Очень хочется ваш код посмотреть.
     
  5. Airbus

    Airbus Радиохулиган Модератор

    Ок сделаю за Вас один раз.
    Код (C++):
    // ВЫКЛЮЧАТЕЛЬ - РЕЛЕ СВЕТА С ИК ПУЛЬТА
    #include <iarduino_IR_RX.h>          // подключаем библиотеку для работы с ИК приёмником
    iarduino_IR_RX  IR(3);              // объявляем  объект IR  для работы с ИК приёмником (с указанием любого вывода к которому подключён ИК приёмник)
    const uint8_t   pinRelay = 2;       // объявляем номер вывода(цифровй или аналоговый) к которому подключено реле
          uint32_t  varRelay;            // объявляем переменную с кодом (командой) ИК-приёмника включающими реле
          bool      modRelay;            // объявляем переменную с состояниями реле
         

    void setup(){
      IR.begin();                       // инициализируем работу с  ИК приёмопередатчиком
      {                                
        pinMode(pinRelay, OUTPUT);      // переводим вывод реле в режим работы на выход
        digitalWrite(pinRelay, LOW);    // устанавливаем логический «0» на указанном выводе
        varRelay = 0;                   // сбрасываем код команды для реле
        modRelay = 0;                   // сбрасываем состояние реле
      }
      while(varRelay<1){
      digitalWrite(pinRelay,LOW);
        if(IR.check()){                 // если принят информационный пакет (без учета пакетов повтора)
          varRelay =IR.data;            // сохраняем команду для реле
          digitalWrite(pinRelay, LOW);  // устанавливаем логический «0» на указанном выводе
        }
       }
      }


    void loop(){
      if(IR.check()){                                 // если принят информационный пакет (без учета пакетов повтора)
        {                  
          if(varRelay==IR.data){                      // если обнаружено совпадение кода ИК-приемника с кодом присвоенным реле
            modRelay=!modRelay;                       // меняем состояние (на противоположное) в ячейке modRelay
            digitalWrite(pinRelay, modRelay);         // выводим состояние ячейки modRelay на вывод pinRelay
          }
        }
      }
    }
     
     
  6. Юриус

    Юриус Нерд

    Код (C++):
    // ВЫКЛЮЧАТЕЛЬ - РЕЛЕ СВЕТА С ИК ПУЛЬТА
    #include <iarduino_IR_RX.h>          // подключаем библиотеку для работы с ИК приёмником
    iarduino_IR_RX  IR(3);              // объявляем  объект IR  для работы с ИК приёмником (с указанием любого вывода к которому подключён ИК приёмник)
    const uint8_t   pinRelay = 2;       // объявляем номер вывода(цифровй или аналоговый) к которому подключено реле
          uint32_t  varRelay;            // объявляем переменную с кодом (командой) ИК-приёмника включающими реле
          bool      modRelay;            // объявляем переменную с состояниями реле
         

    void setup(){
      IR.begin();                       // инициализируем работу с  ИК приёмопередатчиком
      {                                
        pinMode(pinRelay, OUTPUT);      // переводим вывод реле в режим работы на выход
        digitalWrite(pinRelay, LOW);    // устанавливаем логический «0» на указанном выводе
        varRelay = 0;                   // сбрасываем код команды для реле
        modRelay = 0;                   // сбрасываем состояние реле
      }
      while(varRelay<1){
      digitalWrite(pinRelay,LOW);
        if(IR.check()){                 // если принят информационный пакет (без учета пакетов повтора)
          varRelay =IR.data;            // сохраняем команду для реле
          digitalWrite(pinRelay, LOW);  // устанавливаем логический «0» на указанном выводе
        }
       }
      }


    void loop(){
      if(IR.check()){                                 // если принят информационный пакет (без учета пакетов повтора)
        {                  
          if(varRelay==IR.data){                      // если обнаружено совпадение кода ИК-приемника с кодом присвоенным реле
            modRelay=!modRelay;                       // меняем состояние (на противоположное) в ячейке modRelay
            digitalWrite(pinRelay, modRelay);         // выводим состояние ячейки modRelay на вывод pinRelay
          }
        }
      }
    }
     
     
    Airbus нравится это.
  7. Airbus

    Airbus Радиохулиган Модератор

    Гут!
     
  8. Daniil

    Daniil Гуру

    Спасибо, скорее всего, я не признал while)
     
  9. Airbus

    Airbus Радиохулиган Модератор

    Можно в ЕЕПРОМ писать.Шоб не сбрасывалось при выключении.
     
    Daniil нравится это.
  10. Daniil

    Daniil Гуру

    Пульта нет (сломан), как поменять код? Вставать нажимать на кнопку?:eek:
     
  11. Airbus

    Airbus Радиохулиган Модератор

    Мне проще перепрошить заменив код.В ЕЕПРОМ можно писать без перепрошивки.Например зажав кнопку.
     
  12. parovoZZ

    parovoZZ Гуру

    А если телек рядом и коды совпали? У меня есть пульт, который вообще шарашит во все стороны. Там 4 ик диода.
     
  13. Daniil

    Daniil Гуру

    Не пойдёт же для ленивых/неразбирающихся.
    В 1ом посте указывалась "неиспользуемая" кнопка или её влияние минимально на ТВ. Не знаю) будет включаться телек при выключении света - норм, чтобы темно не было
     
  14. parovoZZ

    parovoZZ Гуру

    Назвать «умный дом» и пригласить соседа - чтобы тот захлебнулся от зависти.
     
    DetSimen и Daniil нравится это.
  15. SergeiL

    SergeiL Оракул Модератор

    :)

    Данное устройство можно использовать для включения/выключения питания аудио-видео комплекса.

    Есть комплекс аппаратуры в который входят: телевизор, медиа плеер, процессор и активная акустика, беспроводные наушники, и т.д.

    Все это обычно подключено к сети 220В, работает 24*7*365.
    В связи с этим - потребляет энергию находясь в режиме стенбай.
    В блоках питания сохнут конденсаторы.
    В случае перенапряжения может быть повреждено.
    В моем случае, после замены конденсаторов в блоке питания медиа плейера Dune Prime 3.0, туда был добавлен маленький вентилятор на 12В, подключенный на 5В.
    Его не слышно, но если забыть выключить питание, ночью, в полной тишине, когда все вокруг замирает - услышать можно .
    В это же время, если прислушиваться, слышен звук трансформатора в акустике 5.1 BBK.
    Ну и на последок, процессоре BBK со временем несколько потускнел вакуумно-люминесцентный индикатор, так как питание с него не снимается в режиме stanby.

    А используется это хозяйство хорошо если два раза в неделю, по паре часов, в выходные.
    В основном, когда появляется новый фильм и хочется посмотреть на большом телевизоре.

    Я добавил радио розетку управляемую с пульта 433 MHz.

    Хочешь посмотреть - включил. Посмотрел - выключил.
     
    DetSimen нравится это.
  16. DetSimen

    DetSimen Guest

    А если еще бомжа нанять, чтоб с колонками под мышкой бегал, можно сделать настоящий "Звук вокруг" и довести соседа до инфаркта от чёрной зависти.
     
  17. Юриус

    Юриус Нерд

    Ну вы и юмористы. Скоро вам ещё какую нибудь приладу на обсуждение выставлю.
     
  18. Юриус

    Юриус Нерд

    У нас родной пульт сломали детишки. Купили универсальный. Там много конопок неиспользуемых для теоевизора(вообще) вот их и использую для других целей. Например в теме "Метеостанция+часы+реле с автоинформатором".
     
    Daniil нравится это.
  19. Airbus

    Airbus Радиохулиган Модератор

    А мне идея нравиться.В смысле Вайл в сетапе.Причешу я скетч немного и позаимствую.
     
  20. SergeiL

    SergeiL Оракул Модератор

    Не, лучше через кнопку и EEPROM.
    А то после каждого отключения питания непонятно что делать.
    Или с таймаутом и EEPROM.
    Включили питание - ждем новый код 5 секунд, нет - начинаем работать с запомненным.