Двунаправленная передача IRremote. проблема

Deamount
Offline
Зарегистрирован: 07.05.2012

Добрый день

Прошу вашей помощи. использую ардуино нано. TSOP 36КГц и излучатель.

пользовался примерами приема и передачи по отдельности. прием с пульта работает. ик диод светится. Но нужно мне реализовать такую штуку, что на одном выводе ардуины излучатель посылает данные, и на другом выводе ардуины tsop сразу их получает и проверяет, дошли ли данные...

пишу такой код:

#include <IRremote.h>

int RECV_PIN = 11;

IRrecv irrecv(RECV_PIN);
IRsend irsend;

decode_results results;

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

void loop() {
   irsend.sendSony(0xa90, 9);

  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }
}

Не работает. вероятно я посылаю число, передача прекращается и потом начинается приём и ИК луча уже нет. верно?

Но не понятно почему не принимаются коды с пульта, которые раньше, с закомментированным irsend работало?

И, возвращаясь к первому вопросу... Как мне реализовать одновременную передачу и приём?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

не понятно. приемная сторона обратно отсылает сигнал о получении? или контролировать что излучатель излучает?

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Влюбом случае, перед приемом нужно его разрешить, аналогично 13 строке.
Потому что после отправки кода, приём выключен.

Deamount
Offline
Зарегистрирован: 07.05.2012

Да, контроллировать что излучатель излучает а приемник получает)    ведь в комнате могут ходить и преграждать сигнал чем-либо...

разрешить прием как в строке 13 помогло, спасибо :)

но ещё обязательно задержку нужно вставить оказалось. команды пульта ардуина стала принимать...

void loop() {
	  irsend.sendSony(0xa90, 9);
	  irrecv.enableIRIn();
          delay(100);
	  if (irrecv.decode(&results)) {
	    Serial.println(results.value, HEX);
	    irrecv.resume(); // Receive the next value
          }
}

Ну а как организовать на одном контроллере одновременную передачу и прием ?

ик-излучатель на соседнем пине ик-приемник ардуины не увидел. видимо из-за последовательного выполнения сначала излучения, потом приема.

Deamount
Offline
Зарегистрирован: 07.05.2012

наверное нужно изменить библиотеку irremote так, чтобы был буфер передачи и приема и потом дной командой происходил обмен? типа FIFO uart... или есть уже готовое что-то в библиотеках?        

Вовуся
Offline
Зарегистрирован: 11.04.2014

Deamount пишет:

наверное нужно изменить библиотеку irremote так, чтобы был буфер передачи и приема и потом дной командой происходил обмен? типа FIFO uart... или есть уже готовое что-то в библиотеках?        

удалось ли решить эту задачу? Я тоже озабочен изготовлением помехоустойчивого датчика отражения