ИК передатчик

Sem553

✩✩✩✩✩✩✩
10 Янв 2021
91
8
Здравствуйте, подскажите пожалуйста, как дописать код, что бы в ик приёмнике получать то что отправляешь?

Вот код передатчика на ардурино Уно:
C++:
#include <iarduino_IR_TX.h>
iarduino_IR_TX VD(10);
void setup(){
  VD.begin();     
  VD.send(0x00FFA25D);                 
}
void loop()
{
}
Но в мониторе порта получаю следующие:
C++:
Receive: A2192DE1
Receive: 71B1EAD0
Receive: 29AAEA43
Receive: E9F23850
Receive: F1F3E246
Receive: 3EC4F747
Receive: C57955A0
Подключено по схеме:
схема(1).JPG


Как сделать что бы получать стабильный код например "3EC4F747", а не все подряд

Заранее спасибо
 

poty

★★★★★★✩
19 Фев 2020
3,237
942
Каким образом однократная посылка кода приводит к многократным записям в мониторе порта?
Вы нарисовали схему передатчика (она будет работать только при инвертированно подаваемом сигнале, это соответствует действительности? С моей т.з. нужно подключать напрямую к выходу через сопротивление или с помощью транзистора), где схема приёмника?
 

Sem553

✩✩✩✩✩✩✩
10 Янв 2021
91
8
@poty, Двигаю диодом передатчика мимо приёмника.

Про инвертированный сигнал не вкурсе, просто нашёл схему с помощью которой начало хоть что-то отправлять, а то я думал что ничего не заработает.

Приёмник на esp12e, на gpio 4



Код приёмника:



C++:
#include <IRremote.h> // подключение библиотеки
int RECV_PIN = 4; // контакт подключения ИК-приемника
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // включить приемник
}
void loop()
{
if (irrecv.decode(&results))
{
Serial.println(results.value, HEX);
irrecv.resume(); // получить следующее значение
}
}
 
Изменено:

poty

★★★★★★✩
19 Фев 2020
3,237
942
Двигаю диодом передатчика мимо приёмника.
Если приведён полный код:
C++:
void setup(){
  VD.begin();     
  VD.send(0x00FFA25D);                 
}
то он пошлёт ОДНУ посылку в момент загрузки МП. Водите ли после этого диодом или нет - ничего не изменяет. Не знаю, что у Вас там за питание, может это его пульсации заставляют диод что-то генерить, что воспринимается приёмников как передача. В целом @Геннадий П высказал правильную мысль.
И я, вообще-то, хотел схему приёмника.
 

poty

★★★★★★✩
19 Фев 2020
3,237
942
@Sem553, не люблю я такие "схемы" - ошибиться можно на раз...
На первый взгляд - правильно. Я рекомендовал бы поставить в непосредственной близости от ИК-приемника параллельно VCC/GND хороший плёночный конденсатор и в разрыв VCC до приемника - сопротивление 100-200 Ом. Таким образом много шумов отфильтруете.
И код передачи перенесите из setup в loop.
 

Sem553

✩✩✩✩✩✩✩
10 Янв 2021
91
8
@poty, ещё не разобрался почему, но начало все работать))
То ли код поменял передатчика, начал мигать на передачу, то ли увеличил напряжение на приёмнике (было 3,6 вольт увеличил до 5 вольт)

Всем спасибо большое за помощь, позже ещё будут вопросы)))

Вот код который теперь в передатчике:
C++:
#include <IRremote.h>

IRsend irsend;

void setup() {
  Serial.begin(9600);
}

void loop() {
  delay(100);
  //Power//
  irsend.sendNEC(0x40BF08F7, 32); //Power Code
  Serial.println("Power");
  delay(10);
  //Volume Up//
  for (int i = 0; i < 10; i++) {
    irsend.sendNEC(0x40BF08F7, 32); //Volume Up Code
    Serial.println("Volume Up");
    delay(250);
  }
  delay(500);
  //Volume Down//
  for (int i = 0; i < 10; i++) {
    irsend.sendNEC(0x40BF08F7, 32); //Volume Down Code
    Serial.println("Volume Down");
    delay(250);
  }
  delay(500);
  //Netflix//
  irsend.sendNEC(0x40BF08F7, 32); //Netflix Code
  Serial.println("Netflix");
  delay(100);
}
 
Изменено: