bluetooth и Посылка ИК сигнала с ардуино в ТВ. RAW работает, NEC нет.
- Войдите на сайт для отправки комментариев
Ср, 22/10/2014 - 11:42
У меня 2 проблемы:
1. Есть телевизор с кодировкой NEC если верить Iremote Dump. Не могу послать сигнал NEC, с raw все нормально
Decoded NEC: 38863BD2 (32 bits) Raw (88): 2820 8950 -4500 600 -500 600 -550 500 -1750 550 -1700 600 -1600 550 -600 600 -500 600 -550 500 -1700 600 -550 550 -600 550 -550 600 -500 550 -1700 600 -1650 600 -500 600 -550 550 -600 550 -1650 550 -1700 600 -1650 600 -500 600 -1650 600 -1650 550 -1700 600 -1650 600 -500 600 -1650 600 -500 600 -550 550 -1700 600 -500 550 -600 600 -500 600 -1650 600 -500 600 -1700 550 -1650 550 -600 600 -1650 500 -1700 600 -1650 600
2. Как сократь код? Я хочу управлять телевизором через bluetooth (отправлять с телефона через bluetooth данные в терминал). Может подскажете как лучше организовать управление.
Если раскоментировать строки с 79, то в терминал ничего не приходит, но код отрабатывает.
Ну и бонусом хотелось бы узнать есть ли библиотеки, которые работают с телевизорами самсунг.
#include <IRremote.h> //int RECV_PIN = 11; //IRrecv irrecv(RECV_PIN); //decode_results results; IRsend irsend; // кухня unsigned int k_pwr[88]={8950, 4500, 550, 550, 550, 600, 500, 1700, 550, 1750, 500, 1700, 550, 600, 550, 550, 550, 600, 500, 1700, 550, 600, 500, 600, 550, 600, 500, 600, 500, 1750, 550, 1700, 550, 550, 550, 600, 500, 600, 550, 1700, 500, 1750, 550, 1700, 550, 550, 550, 1700, 550, 1700, 500, 1750, 550, 1700, 550, 550, 550, 1700, 550, 550, 550, 600, 500, 1750, 550, 550, 500, 650, 550, 550, 550, 1700, 550, 550, 550, 1700, 550, 1700, 500, 650, 500, 1700, 550, 1700, 550, 1700, 550}; // зал unsigned int z_pwr[68]={ 4500, 4400, 600, 1650, 600, 1600, 650, 1600, 600, 500, 650, 500, 600, 500, 600, 550, 600, 500, 600, 1650, 600, 1600, 600, 1650, 600, 500, 650, 500, 600, 500, 600, 550, 600, 500, 600, 550, 600, 1600, 600, 550, 600, 500, 600, 500, 650, 500, 600, 500, 600, 550, 600, 1600, 600, 550, 600, 1600, 600, 1650, 600, 1600, 650, 1600, 600, 1650, 600, 1600, 600}; unsigned int z_source[68]={ 4400, 4500, 600, 1600, 550, 1700, 600, 1600, 600, 550, 550, 550, 550, 600, 600, 500, 550, 600, 600, 1600, 550, 1700, 600, 1600, 550, 600, 550, 550, 550, 600, 550, 550, 550, 550, 550, 1700, 550, 550, 550, 600, 600, 500, 600, 550, 600, 500, 550, 600, 600, 500, 550, 550, 550, 1700, 600, 1650, 550, 1650, 600, 1650, 600, 1600, 550, 1700, 600, 1650, 550}; unsigned int z_tv[68]={ 4400, 4450, 600, 1650, 550, 1700, 550, 1650, 550, 600, 550, 550, 550, 600, 550, 550, 550, 550, 550, 1700, 600, 1650, 550, 1650, 550, 600, 550, 550, 550, 550, 550, 600, 550, 550, 600, 1650, 550, 1650, 550, 600, 550, 1700, 550, 1650, 550, 600, 550, 550, 550, 550, 550, 600, 550, 550, 550, 1700, 550, 550, 550, 600, 550, 1650, 550, 1700, 550, 1650, 550}; unsigned int z_1[68]={ 4500, 4350, 650, 1600, 650, 1600, 600, 1600, 650, 500, 600, 500, 650, 500, 600, 500, 600, 500, 650, 1600, 600, 1650, 600, 1600, 650, 500, 600, 500, 600, 550, 600, 500, 600, 500, 650, 500, 600, 500, 650, 1600, 600, 500, 650, 500, 600, 500, 600, 550, 600, 500, 600, 1650, 600, 1600, 600, 550, 600, 1600, 650, 1600, 600, 1600, 650, 1600, 600, 1650, 600}; unsigned int z_2[68]={ 4500, 4400, 600, 1600, 600, 1650, 600, 1600, 650, 500, 600, 500, 600, 550, 600, 500, 600, 550, 600, 1600, 600, 1650, 600, 1600, 650, 500, 600, 500, 600, 550, 600, 500, 600, 550, 600, 1600, 600, 550, 600, 1600, 600, 550, 600, 500, 600, 500, 650, 500, 600, 500, 600, 550, 600, 1600, 600, 550, 600, 1600, 600, 1650, 600, 1600, 650, 1600, 600, 1650, 600}; unsigned int z_3[68]={ 4550, 4350, 650, 1600, 600, 1650, 600, 1600, 650, 500, 600, 500, 600, 550, 600, 500, 600, 500, 650, 1600, 600, 1650, 600, 1600, 650, 500, 600, 500, 600, 500, 650, 500, 600, 500, 650, 500, 600, 1600, 650, 1600, 600, 500, 650, 500, 600, 500, 650, 500, 600, 500, 600, 1650, 600, 500, 600, 550, 600, 1600, 600, 1650, 600, 1600, 650, 1600, 600, 1600, 650}; unsigned int z_4[68]={ 4450, 4450, 600, 1650, 550, 1650, 550, 1700, 550, 550, 550, 600, 550, 550, 550, 600, 550, 550, 550, 1700, 550, 1650, 550, 1700, 550, 550, 550, 600, 550, 550, 600, 500, 600, 550, 550, 550, 550, 600, 550, 550, 550, 1700, 550, 550, 550, 600, 550, 550, 550, 600, 550, 1650, 600, 1650, 550, 1650, 600, 550, 550, 1650, 550, 1700, 550, 1650, 600, 1650, 550}; unsigned int z_5[68]={ 4450, 4400, 650, 1600, 600, 1650, 600, 1600, 650, 500, 600, 500, 600, 550, 600, 500, 600, 500, 650, 1600, 600, 1650, 600, 1600, 600, 550, 600, 500, 600, 500, 650, 500, 600, 500, 600, 1650, 600, 500, 600, 550, 600, 1600, 600, 550, 600, 500, 600, 550, 600, 500, 600, 500, 650, 1600, 600, 1650, 600, 500, 600, 1650, 600, 1550, 700, 1600, 650, 1550, 650}; unsigned int z_6[68]={ 4450, 4450, 550, 1700, 550, 1650, 550, 1700, 550, 550, 550, 600, 550, 550, 550, 600, 550, 550, 550, 1700, 550, 1650, 600, 1650, 550, 550, 600, 550, 550, 550, 550, 600, 550, 550, 550, 550, 550, 1700, 600, 500, 550, 1700, 550, 550, 550, 600, 550, 550, 550, 600, 550, 1650, 550, 600, 550, 1650, 600, 550, 550, 1650, 550, 1700, 550, 1700, 550, 1650, 600}; unsigned int z_7[68]={ 4450, 4450, 550, 1700, 550, 1700, 550, 1650, 550, 600, 550, 550, 550, 550, 550, 600, 550, 550, 550, 1700, 550, 1650, 600, 1650, 600, 500, 550, 600, 550, 550, 550, 600, 550, 550, 550, 600, 550, 550, 600, 1650, 550, 1650, 550, 600, 550, 550, 550, 600, 550, 550, 550, 1700, 550, 1650, 550, 600, 550, 550, 550, 1700, 550, 1650, 550, 1700, 550, 1650, 600}; unsigned int z_8[68]={ 4450, 4450, 600, 1650, 550, 1650, 550, 1700, 550, 550, 550, 600, 550, 550, 550, 600, 550, 550, 550, 1700, 550, 1650, 600, 1650, 550, 550, 550, 600, 550, 550, 550, 550, 600, 550, 550, 1700, 550, 550, 550, 1700, 550, 1650, 550, 600, 550, 550, 550, 550, 550, 600, 550, 550, 550, 1700, 550, 550, 550, 600, 550, 1650, 600, 1650, 550, 1650, 600, 1650, 600}; unsigned int z_9[68]={ 4450, 4450, 550, 1650, 550, 1700, 550, 1700, 550, 550, 550, 550, 550, 600, 550, 550, 550, 600, 550, 1650, 550, 1700, 550, 1650, 600, 550, 550, 550, 550, 600, 550, 550, 550, 600, 550, 550, 550, 1700, 550, 1650, 600, 1650, 550, 550, 550, 600, 550, 550, 550, 600, 550, 1650, 550, 600, 550, 550, 600, 500, 600, 1650, 550, 1700, 550, 1650, 600, 1650, 550}; unsigned int z_0[68]={ 4450, 4450, 550, 1650, 600, 1650, 600, 1650, 550, 550, 550, 600, 550, 550, 550, 550, 550, 600, 550, 1650, 550, 1700, 600, 1650, 550, 550, 550, 550, 550, 600, 550, 550, 550, 600, 550, 1650, 550, 600, 550, 550, 600, 550, 550, 1650, 600, 550, 550, 550, 550, 600, 550, 550, 550, 1650, 550, 1700, 600, 1650, 550, 550, 600, 1650, 550, 1650, 550, 1700, 550}; void setup() { Serial.begin(9600); } void loop() { irsend.enableIROut(38); if (Serial.available() > 0) { char Str = Serial.read(); switch (Str) { case 'zpw': irsend.sendRaw(z_pwr, 88, 32); delay(40); irsend.sendRaw(z_pwr, 88, 32); delay(1000); Serial.print("ok zpw"); break; case 'zso': irsend.sendRaw(z_source, 88, 32); delay(40); irsend.sendRaw(z_source, 88, 32); Serial.print("ok so"); break; case 'ztv': irsend.sendRaw(z_tv, 88, 32); delay(40); irsend.sendRaw(z_tv, 88, 32); Serial.print("ok ztv"); break; case 'z1': irsend.sendRaw(z_1, 88, 32); delay(40); irsend.sendRaw(z_1, 88, 32); Serial.println("ok z1"); break; case 'z2': irsend.sendRaw(z_2, 88, 32); delay(40); irsend.sendRaw(z_2, 88, 32); Serial.println("ok z2"); break; case '3': irsend.sendRaw(z_3, 88, 32); delay(40); irsend.sendRaw(z_3, 88, 32); Serial.println("ok z3"); break; case '4': irsend.sendRaw(z_4, 88, 32); delay(40); irsend.sendRaw(z_4, 88, 32); Serial.println("ok z4"); break; // case '5': // irsend.sendRaw(z_5, 88, 32); delay(40); // irsend.sendRaw(z_5, 88, 32); // Serial.println("ok z5"); // break; // case '6': // irsend.sendRaw(z_6, 88, 32); delay(40); // irsend.sendRaw(z_6, 88, 32); // Serial.print("ok z6"); // break; // case '7': // irsend.sendRaw(z_7, 88, 32); delay(40); // irsend.sendRaw(z_7, 88, 32); // Serial.print("ok z7"); // break; // case '8': // irsend.sendRaw(z_8, 88, 32); delay(40); // irsend.sendRaw(z_8, 88, 32); // Serial.print("ok z8"); // break; // case '9': // irsend.sendRaw(z_9, 88, 32); delay(40); // irsend.sendRaw(z_9, 88, 32); // Serial.print("ok z9"); // break; // case '0': // irsend.sendRaw(z_0, 88, 32); delay(40); // irsend.sendRaw(z_0, 88, 32); // Serial.print("ok z0"); // break; // // } //} // else // Если первым в команде приходит z //{ // Serial.println(i); //} } }
Читаешь один байт, а сравниваешь со строкой.
Изменил код, но если раскоментировать строки начиная с 118, то программа перестает работать.
http://arduino.cc/en/Serial/ReadBytes
Буфер 3 байта, а читаешь аж 6. Да и зачем переменные глобальным сделал?
Читай эти три байта в буфер делай case по ним.
Подскажите можно ли сделать case сразу по 3 переменным?
Пока что сделал через if, работает. Но тут вопрос - почему программа перестает работать если раскоментировать строки начиная с 99?
Ты в переменные вообще не смотришь?
У тебя почти во всех вариантах уникален только второй байт. А для 0x73 (115) надо в добавить только одну проверку.
Голова для шапки что ли только?