два ик приемника на одном ардуино уно

Тема в разделе "Проводная и беспроводная связь", создана пользователем Дмитрий П, 10 апр 2015.

  1. Уверен коллега, что вы ошибаетесь! Какой пин укажете в вызове библиотечной функции, такой и будет обрабатываться. Поэтому программно Вы можете обрабатывать датчики подключенные к разным пинам. Вот здесь товарищ подключился на 11 пин. http://www.radio-magic.ru/arduino-projects/45-irremote
    Не прокатит?
    На прием:
    IRrecv irrecv2(2);
    IRrecv irrecv11(11);
    https://www.pjrc.com/teensy/td_libs_IRremote.html
     
    Последнее редактирование: 27 апр 2015
    Дмитрий П нравится это.
  2. Какая непростительная оплошность и невнимательность с моей стороны! Как я не мог обратить внимание на объявление пина. На днях попробую сделать по такому принципу. Огромное спасибо Александр!
     
  3. Да. Только на передачу, для ИК передатчика в библиотеке установлен фиксированный пин.
    Если будут работать и Вы будете пробовать объявленные объекты на прием ( несколько ИК приемников). Отпишитесь. Мне кажется не смогут. А вдруг?. Завязано на таймер. Все равно интересно. Отпишитесь. В ближайшее время планирую реализацию сети на ИК датчиках (самодельных контроллеров) с управлением кондиционеров, телевизоров, светодиодных лент, прохода и т.д. на ИК управлении к своему проекту. Если хотите подпишитесь на появление темы в моем блоге. http://fedoroffalexander.wix.com/smart#!form__map/c24vq
    Хотя думаю, что займусь окончательной реализацией этой темы не скоро. Только в разработке. Есть куча других дел.
     
  4. ANV

    ANV Гуру

    Зачем Вам библиотека декодирования ИК-сигналов, если надо только детектировать пересечение луча?
     
  5. С библиотекой лучше тем, что кажный приемник ловит свой сигнал. Нет возможности поймать не свой луч.
    Набросал код на 2 приемника. Пока выходит какая то ерунда. Оба ловят сигнал который для соседа.
    Наверное что то не так написал.
    Вот приемник:
    Код (Text):
    #include <IRremote.h>
    unsigned long Value1 = 0xFB05;
    unsigned long Value2 = 0xFB85;
    int RECV_PIN = 3;
    int RECV_PIN2 = 5;
    IRrecv irrecv(RECV_PIN);
    IRrecv irrecv2(RECV_PIN2);

    decode_results results;

    void setup()
    {
      Serial.begin(9600);
      irrecv.enableIRIn(); // Start the receiver
    }

    void loop() {
      IRrecv irrecv(RECV_PIN);
      if (irrecv.decode(&results)) {
        //Serial.print("Датчик 1  ");
        //Serial.println(results.value, HEX);
        if(results.value == Value1) {
    Serial.println("Lamp 1 ON");
    delay (100);}
       
        irrecv.resume(); // Receive the next value
      }
     
      IRrecv irrecv2(RECV_PIN2);
      if (irrecv2.decode(&results)) {
        //Serial.print("Датчик 2  ");
      // Serial.println(results.value, HEX);
        if(results.value == Value2) {
    Serial.println("Lamp 2 ON");
    delay (100);}
        irrecv2.resume(); // Receive the next value
      }
    }
    Передатчик:
    Код (Text):
    #include <IRremote.h>
    #define JVC1      0xFB05
    #define JVC2      0xFB85
    IRsend irsend;

    void setup() {
      // put your setup code here, to run once:

    }

    void loop() {
    irsend.sendJVC(JVC1, 16,0);
    delay(50);
    irsend.sendJVC(JVC2, 16,0); // put your main code here, to run repeatedly:
    delay(50);
    }
     
    Федоров Александр нравится это.
  6. В вашем случае приемники можно просто повесить на общую шину. Если я правильно понимаю по приемнику в каждую комнату...
     
    Федоров Александр нравится это.
  7. Прекрасно. Код на стенде проверить не могу. Но судя по вашей реакции работает. Очень хорошо, что оба приемника принимают сигнал. А теперь. "Обучите" их кодам пульта и программно обработайте коды пульта. Один и тот же сигнал с пульта или пультов. Но. Кнопка 1 с пульта JVC своя обработка. Кнопка 2 с пульта SONY своя обработка. Это все теоретически и у Вас это заработало. Замечательно и мне это нравится. Практического смысла в этом нет. Зачем на одной плате два ИК приемника? Можно обойтись одним.
     
  8. Да. Согласен. А если добавить передатчики ИК, то можно создать простенькую сеть, где каждый узел будет и повторителем и управлять своими устройствами. А шина будет виртуальной, по "воздуху". Вообще то я не понял задачи. Но думаю вы разберетесь со всеми проблемами.
     
    Последнее редактирование: 30 апр 2015
  9. Дмитрий П нравится это.
  10. Спасибо большое за наводку на эту статью. когда то ее читал на как понадобилась не мог найти. Решил реализовать свою задачу на трех ардуино, чтобы было меньше проблем с кодом. Как все доделаю обязательно выложу результат работы во всех подробнностях. Спасибо всем за помощь!!!
     
  11. Прошу прощения. Посетила идея с одной платой, двумя ИК приемниками и одним ИК передатчиком. Представьте себе дверную коробку с дверью. Ваша плата находится рядом с нею. На длинных проводах подключены два ИК датчика и ИК передатчик. Передатчик размещен на стороне комнаты где находится например Ваш телевизор, но и так что бы его излучение попадало и на два датчика. В режиме контроля входа-выхода ИК передатчик постоянно передает сигнал одного типа irsend.enableIROut(38);. Вы проходите и один из дух ИК приемник перестает принимать сигнал. Тело на мгновение заслонило луч. Потом второй ИК приемник перестает принимать сигнал. В этом случае Вы определите направление движения. Если движение во внутрь, ИК передатчик передает сигнал включить телевизор. Обратно, выключить. И снова включается режим мониторинга прохода. Но для этого Вам понадобится запрограммировать Вашу плату на команды пульта или нескольких пультов, что бы управлять другими устройствами.
    http://www.righto.com/2010/03/detecting-ir-beam-break-with-arduino-ir.html
     
    Последнее редактирование: 2 май 2015
    Дмитрий П нравится это.
  12. ДА, это идея!