ИК пульт
- Войдите на сайт для отправки комментариев
Чт, 13/11/2014 - 01:40
Помогите разобраться с ИК! Использую библиотеку IRremote в примере получаю дамп кнопки (вкл.выкл) с пульта ТВ
E0E040BF
E0E040BF (32 bits)
Raw (68): -27946 4550 -4350 650 -1600 600 -1600 650 -1550 650 -500 650 -450 650 -450 650 -450 650 -450 700 -1550 650 -1550 650 -1600 600 -500 650 -450 650 -450 650 -450 650 -450 650 -500 650 -1550 650 -450 700 -400 650 -500 650 -450 650 -450 650 -450 650 -1600 600 -500 650 -1550 650 -1600 600 -1600 650 -1550 650 -1600 650 -1550 650
И тут возникает вопрос как отправить этот код чтобы ардуина выключила.включила ТВ
с примером в библиотеке разобраться не могу (, а что попадалось не работает может кто разобрался с этой библиотекой?
Удали первое число, а в остальных замени - на +, и отправь это как RAW обратно.
Спасибо помогло )) не разобрался что первое значение надо удалять
Помогите разобраться с ИК! Использую библиотеку IRremote в примере получаю дамп кнопки (вкл.выкл) с пульта ТВ
многа бУкАв столько не осилю
из вчерашнего чисто логика чисто пультовая распальцовка
//ИК------------------------------------------------------------------------------------------------------------------- void IRReleDecoder(){// если(irrecv.decode(&results)){ // Serial.println(результаты.значение, HEX);//test//если ИК код пришел //власти если(результаты.value==IRPOWER ){ analogWrite(PINPOWER2,PowerTmp=255);//digitalWrite(PINPOWER2,высокий); digitalWrite(PINPOWER3,высокий); digitalWrite(PINPOWER4,высокий); digitalWrite(PINPOWER5,высокий); digitalWrite(PINPOWER6,высокий); digitalWrite(PINPOWER7,высокий); digitalWrite(PINPOWER8,высокий); digitalWrite(PINPOWER9,ВЫСОКИЙ); digitalWrite(PINLED1,HIGH); }// digitalWrite(PINPOWERANDROID,HIGH); digitalWrite(PINPOWERUSB,HIGH); digitalWrite(PINLED1,HIGH); digitalWrite(PINLED2,HIGH); клавиатура.releaseAll();} если(результаты.value==IREJECT ){ analogWrite(PINPOWER2,PowerTmp= 0);//digitalWrite(PINPOWER2, низкий); digitalWrite(PINPOWER3, низкий); digitalWrite(PINPOWER4, низкий); digitalWrite(PINPOWER5, низкий); digitalWrite(PINPOWER6, низкий); digitalWrite(PINPOWER7, низкий); digitalWrite(PINPOWER8, низкий); digitalWrite(PINPOWER9, низкий); digitalWrite(PINLED1, низкий); }//digitalWrite(PINPOWERANDROID, LOW); digitalWrite(PINPOWERUSB, LOW); digitalWrite(PINLED1, LOW); digitalWrite(PINLED2, LOW); клавиатура.releaseAll();} // если(результаты.value==IRREPEAT ){ digitalWrite(PINPOWERANDROID,HIGH); digitalWrite(PINLED1,HIGH); } // если(результаты.value==IRCLEAR ){ digitalWrite(PINPOWERANDROID, LOW); digitalWrite(PINLED1, LOW); } // если(результаты.value==IRSUBTITLE){ digitalWrite(PINPOWERUSB,HIGH); digitalWrite(PINLED2,HIGH); клавиатура.releaseAll();} // если(результаты.value==IRANGLE ){ digitalWrite(PINPOWERUSB, LOW); digitalWrite(PINLED2, LOW); клавиатура.releaseAll();} //клавиатура если(результаты.value==результатов ){ PowerTmp=PowerTmp+10; analogWrite(PINPOWER5,PowerTmp); analogWrite(PINPOWER6,PowerTmp); analogWrite(PINPOWER9,PowerTmp); Серийный.println(PowerTmp); }//клавиатура.write(KEY_UP); } если(результаты.value==IRDOWN ){ PowerTmp=PowerTmp-10; analogWrite(PINPOWER5,PowerTmp); analogWrite(PINPOWER6,PowerTmp); analogWrite(PINPOWER9,PowerTmp); Серийный.println(PowerTmp); }//клавиатура.write(KEY_DOWN); } // если(результаты.value==IRLEFT ){ клавиатуры.write(KEY_LEFT); } // if(результаты.value==IRRIGHT ){ клавиатуры.write(KEY_RIGHT); } //медиа-плеер // если(результаты.value==IRVOLUP ){ r2.код=HID_VOLUP; HID_SendReport(3,&r2,sizeof( irrecv.resume(); //почистим } } //ИК---------------------------------------------------------------------------------------------------------------уже посчитал писал 41 минуту
в шапке такое
чиста инициализация все стандартно для моего стиля писания
классический втрЯх встрах микрушки фигнюшки
иницализаци из середки такая
Timer t;//запускаем функцию таймеров //int TimerOn1 = 0;// задержка включения //int DelayOn1 =1*10*1000;// задержка включения 10 сек на время заведения машины //int TimerOff1 = 0;// задержка выключения 10 сек //int DelayOff1 =1*10*1000;// задержка выключения 10 сек на время возврата 15 мин= 15*60*10*1000 //int varEncoderA; //for encoder сравнивать приход импульсов то есть направление //int varEncoderB; //for encoder сравнивать приход импульсов то есть направление //int varEncoderA_prev=0; //for encoder сравнивать приход импульсов то есть направление int PowerTmp=0;// релюшка хитропрппая семистор 25 амперный прекрасно ШИМ-ит на будущее заначка IRrecv irrecv(PINIR); //IR decode_results results;//IR //#define HID_STOP 0x00B7 //#define HID_VOLUP 0x00E9 //#define HID_VOLDOWN 0x00EA //#define HID_MUTE 0x00E2 //#define HID_PLAY 0x00CD //#define HID_NEXT 0x00B5 //#define HID_PREV 0x00B6 ////#define HID_SCAN_NEXT_TRACK 0x00B5 ////#define HID_SCAN_PREV_TRACK 0x00B6 //#define HID_HOME 0x0223 //#define HID_POWER 0x0034 //#define KEY_ENTER 0xB0 //#define KEY_UP 0xDA //#define KEY_DOWN 0xD9 //#define KEY_LEFT 0xD8 //#define KEY_RIGHT 0xD7 //#define KEY_ESC 0xB1 //#define KEY_MENU 0xED //#define KEY_ALT 0x82 //#define KEY_TAB 0xB3 //struct kr{uint8_t modifiers;uint8_t reserved;uint8_t keys[6];};//for HID_send //struct kr r1; //for HID_send //struct cr {uint16_t code;uint8_t data[5];}; //for HID_send //struct cr r2; //for HID_send //-------------------------------------------------------------------------------------------- void setup(){ Serial.begin(9600); // pinMode(PINACC, INPUT_PULLUP); // pinMode(PINREAR, INPUT_PULLUP); // pinMode(PINENCODERBUTS,INPUT_PULLUP);//for encoder // pinMode(PINENCODERBUTA,INPUT_PULLUP); // pinMode(PINENCODERBUTB,INPUT_PULLUP); // pinMode(PINENCODERBUTC,INPUT_PULLUP); // pinMode(PINENCODERBUTD,INPUT_PULLUP); // pinMode(PINENCODERBUTE,INPUT_PULLUP); // pinMode(PINENCODERBUTF,INPUT_PULLUP); // pinMode(PINENCODERBUTG,INPUT_PULLUP); // pinMode(PINENCODERBUTH,INPUT_PULLUP); // pinMode(PINENCODERA, INPUT_PULLUP);//for encoder // pinMode(PINENCODERB, INPUT_PULLUP);//for encoder pinMode(PINLED1, OUTPUT); // Индикатор питания // pinMode(PINLED2, OUTPUT); // Доп. Индикатор питания // pinMode(PINPOWERANDROID,OUTPUT); // режим порта устанавливаем на вывод (запись) pinMode(PINPOWER2, OUTPUT); // режим порта устанавливаем на вывод (запись) //pinMode(volUp, OUTPUT); //digitalWrite(volUp, HIGH); //pinMode(volDown, OUTPUT); //digitalWrite(volDown, HIGH); pinMode(PINPOWER3, OUTPUT); pinMode(PINPOWER4, OUTPUT); pinMode(PINPOWER5, OUTPUT); pinMode(PINPOWER6, OUTPUT); pinMode(PINPOWER7, OUTPUT); pinMode(PINPOWER8, OUTPUT); pinMode(PINPOWER9, OUTPUT); irrecv.enableIRIn(); //IRзачем удалять вторую часть команды?
фигней страдаете
Мои лишине тонны авна с другого проекта сами удалите. Мне лень. Мышой одним пальцем комменитровать вырезатая лееенннооттннннееееее . Успешно пульту обучил. Успешно прошил. Успешно работает прекрасно. Успешно забыл.
Причем тут тонны авна? ведь надо просто подать сигнал по ИК считанный с моего пульта
#include <IRremote.h> // это скачанная библиотека int val; IRsend irsend; unsigned int powerOn0[68]= {4550,4350,650,1600, 600, 1600, 650, 1550, 650, 500, 650, 450, 650, 450, 650, 450, 650, 450, 700, 1550, 650, 1550, 650, 1600, 600, 500, 650, 450, 650, 450, 650, 450, 650, 450, 650, 500, 650, 1550, 650, 450, 700, 400, 650, 500, 650, 450, 650, 450, 650, 450, 650, 1600, 600, 500, 650, 1550, 650, 1600, 600, 1600, 650, 1550, 650, 1600, 650, 1550, 650}; void setup() { Serial.begin(9600); } void loop() { if (Serial.available()){ val = Serial.read(); if (val =='p') { //команда посланная в консоль irsend.sendRaw(powerOn0, 68, 38); } } }И это прекрасно работает. Мой пульт от телевизора ГНУСМАС не у меет посылать стандартные коды в формате Sony, NEC, RC6 поэтому и приходится дрыгать ногой по времени для отправки нужного пакета.