ИК-приёмник

Тема в разделе "Закажу проект", создана пользователем andrapet, 24 июн 2016.

  1. andrapet

    andrapet Нуб

    Помогите, пожалуйста.
    Надо, чтобы при комбинации кнопок 1 и 2, т.е когда нажимается 12, включался светодиод.
     
  2. andrapet

    andrapet Нуб

    Нужен скетч.
     
  3. andrapet

    andrapet Нуб

    Простите, неправильно написал.
    Надо, чтобы при комбинации кнопок 1 и 2(на пульте), т.е когда нажимается 12, Ик-приёмник получает эти данные, и включается светодиод.
     
  4. Vetrinus

    Vetrinus Гик

    Код (C++):
    #include "IRremote.h"
    IRrecv irrecv(11); // Указываем пин, к которому подключен приемник
    decode_results results;
    void setup()
    {
      Serial.begin(9600); // Выставляем скорость COM порта
      irrecv.enableIRIn(); // Запускаем прием
    }
    void loop() {
      if (irrecv.decode(&results)) // Если данные пришли
      {
        Serial.println(results.value, HEX); // Отправляем полученную данную в консоль
        irrecv.resume(); // Принимаем следующую команду
      }
    }
    HEX коды кнопок выложите сюда
     
  5. andrapet

    andrapet Нуб

    Кнопка один на пульте = 1, если зажать = 801.
    Кнопка два на пульте = 2, если зажать = 802.
     
  6. Vetrinus

    Vetrinus Гик

    Это точно? То, что мне нужно вы увидите в мониторе порта если загрузите эту программу и нажмете нужные кнопки)
     
  7. andrapet

    andrapet Нуб

    Нет. Всё именно так, как я написал.
     
  8. Vetrinus

    Vetrinus Гик

    А выключать светодиод когда?
     
  9. Vetrinus

    Vetrinus Гик

    Сделал выключение, если присланная команда не совпадает с тем, что нужно.
    С вас 100 рублей на киви или яндекс кошелек)
    Код (C++):
    #include <IRremote.h>
    IRrecv irrecv(11); // Указываем пин, к которому подключен приемник
    decode_results results;
    int command[2]={0, 0};
    bool is_first=true;
    bool device_state;

    void setup()
    {
      Serial.begin(9600); // Выставляем скорость COM порта
      irrecv.enableIRIn(); // Запускаем прием
      pinMode(13, OUTPUT);
    }
    void loop() {
      if (irrecv.decode(&results)) // Если данные пришли
      {
        int button=results.value, HEX;
        if(is_first) {
          command[0]=button;
          is_first=false;
        }
        else {
          command[1]=button;
          is_first=true;
          if(command[0]==801 && command[1]==802) {
            device_state=true;
          }
          else {
            device_state=false;
          }
        }
        irrecv.resume(); // Принимаем следующую команду
      }
      digitalWrite(13, device_state);
    }
     
  10. andrapet

    andrapet Нуб

    Когда нажата комбинация кнопок 1 и 2. Если 2 и 1 то светодиод включаться не должен. И если нажата только
    одна кнопка, то светодиод НЕ ВКЛЮЧАЕТСЯ!!!
     
  11. Vetrinus

    Vetrinus Гик

    Во-первых, я бы посоветовал вам сменить тон, которым вы разговариваете. Вам тут никто и ничем не обязан, чтобы игнорировать нарушения вами правил приличия и хорошего тона.
    Во-вторых, ставьте тз четче, додумывать за вас никто не будет.
    Желаю удачи в поисках исполнителя.
     
  12. ZAZ-965

    ZAZ-965 Гуру

    @Vetrinus, по-моему, требуется еще проверять промежуток времени между нажатиями. Например, между нажатиями меньше 0,5 сек - двойное значение, больше одиночное значение.
    Что за HEX?
    Код (C++):
    int button=results.value, HEX;
     
  13. Vetrinus

    Vetrinus Гик

    Да, косяк. Я забыл убрать. Либо убрать вообще, либо объявить десятичный базис.