У кого есть реализация IR передатчика?
Добавлено: 15 май 2018, 06:49
Поделитесь своими наработками в плане реализации ИК передатчика, или дайте совет почему у меня работает не так как задумано.
К примеру мой приемный и передающий код:
Отправляю с MajorDomo команду 11, приставка ростелеком включается выключается нормально. Отправляю 900, переключает на канал 900. Отправляю 27, переключает на 027 или 002, или вообще ничего не переключает. Повторно отправляю 900, ничего не происходит. Как то не стабильно работает. Чувствую, что что то связано с двухзначными - трехзначными числами или с нулем, а что не могу сообразить. 101 - 106 хорошо отрабатывает!
К примеру мой приемный и передающий код:
Код: Выделить всё
//NEC это пульт Ростелеком
void S1() {irsend.sendNEC(0xBFA857, 32);delay(200);}//1
void S2() {irsend.sendNEC(0xBF6897, 32);delay(200);}//2
void S3() {irsend.sendNEC(0xBFE817, 32);delay(200);}//3
void S4() {irsend.sendNEC(0xBF9867, 32);delay(200);}//4
void S5() {irsend.sendNEC(0xBF58A7, 32);delay(200);}//5
void S6() {irsend.sendNEC(0xBFD827, 32);delay(200);}//6
void S7() {irsend.sendNEC(0xBFB847, 32);delay(200);}//7
void S8() {irsend.sendNEC(0xBF7887, 32);delay(200);}//8
void S9() {irsend.sendNEC(0xBFF807, 32);delay(200);}//9
void S0() {irsend.sendNEC(0xBF827D, 32);delay(200);}//0
void receive(const MyMessage &message) {
if (message.type==V_IR_SEND) {
a = message.getInt();
#ifdef SERIAL_DEBUG
Serial.println(a);
#endif
//Коды телевизора LG
if (a==101) {irsend.sendLG(0x20DF10E, 28);}//Power on/off
if (a==102) {irsend.sendLG(0x20DF40B, 28);}//Vol+
if (a==103) {irsend.sendLG(0x20DFC03, 28);}//Vol-
if (a==104) {irsend.sendLG(0x20DF906, 28);}//Mute
if (a==105) {irsend.sendLG(0x20DF00F, 28);}//Ch+
if (a==106) {irsend.sendLG(0x20DF807, 28);}//Ch-
//Коды приставки Ростелеком
if (a==11) {irsend.sendNEC(0xBF48B7, 32);}//Power on/off
if (a==12) {irsend.sendNEC(0xBF18E7, 32);}//Ch+
if (a==13) {irsend.sendNEC(0xBF38C7, 32);}//Ch-
if (a==1) {S1();}
if (a==2) {S2();}
if (a==3) {S3();}
if (a==4) {S4();}
if (a==5) {S5();}
if (a==6) {S6();}
if (a==7) {S7();}
if (a==8) {S8();}
if (a==9) {S9();}
if (a==10) {S1();S0();}
if (a==15) {S1();S5();}
if (a==27) {S2();S7();}
if (a==125) {S1();S2();S5();}
if (a==302) {S3();S0();S2();}
if (a==316) {S3();S1();S6();}
if (a==501) {S5();S0();S1();}
if (a==900) {S9();S0();S0();}
if (a==913) {S9();S1();S3();}
if (a==922) {S9();S2();S2();}
if (a==943) {S9();S4();S3();}
if (a==956) {S9();S5();S6();}
if (a==957) {S9();S5();S7();}
if (a==992) {S9();S9();S2();}
if (a==997) {S9();S9();S7();}
// Start receiving ir again...
irrecv.enableIRIn();
}}