ИК пульт

vingor
Offline
Зарегистрирован: 25.05.2014

Помогите разобраться с ИК! Использую библиотеку 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 
И тут возникает вопрос как отправить этот код чтобы ардуина выключила.включила ТВ
с примером в библиотеке разобраться не могу (, а что попадалось не работает может кто разобрался с этой библиотекой?
rigl
Offline
Зарегистрирован: 15.10.2014

Удали первое число, а в остальных замени - на +, и отправь это как RAW обратно.

vingor
Offline
Зарегистрирован: 25.05.2014

Спасибо помогло )) не разобрался что первое значение надо удалять

 

art100
Offline
Зарегистрирован: 09.03.2014

vingor пишет:

Помогите разобраться с ИК! Использую библиотеку IRremote в примере получаю дамп кнопки (вкл.выкл) с пульта ТВ

E0E040BF
E0E040BF (32 бита)
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
И тут возникает вопрос как отправить этот код чтобы ардуина выключила.включила ТВ
с примером в библиотеке разобраться не могу (, а что попадалось не работает может кто разобрался с этой библиотекой?

многа бУкАв столько не осилю

из вчерашнего чисто логика чисто пультовая распальцовка

//ИК-------------------------------------------------------------------------------------------------------------------
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 минуту

в шапке такое

чиста инициализация все стандартно для моего стиля писания

классический втрЯх встрах микрушки фигнюшки


//art100 to write 20141016-172000 ir+encoder+joystick->arduino_leonardo->android
#include <Bounce.h>         // Debounse Дребезг нереагируем тормозя 50мкс
#include <Timer.h>          // Таймеры я вроде обхожусь но попробуем
#include <IRremote.h>       // ИК Приемник
//pins------------------------------------------------------------------
//#define PINACC          0// Положение ключа ACC
//#define PINREAR         1// Задний ход no work
#define PINPOWER2     2//
#define PINPOWER3     3// Включение USB хаба и OTG смотри ниже пока не работает
#define PINPOWER4     4//
#define PINPOWER5     5//pwm
#define PINPOWER6     6//pwm
#define PINPOWER7     7//
#define PINPOWER8     8//
#define PINPOWER9     9//pwm

//#define PINSPEAKER      4// no work
#define PINLED1        13// 5// Индикатор питания
//#define PINLED2         6// no work 
#define PINIR          A3//7// 

 

//consts---------------------------------------
#define IRPOWER   0xFFC03F
#define IREJECT   0xFFE01F
//#define IRMUTE    0xFF00FF
//#define IRBROWSE  0xFF807F
//#define IRDISPLAY 0xFF40BF
//#define IRREPEAT  0xFF20DF
//#define IRAB      0xFFA05F
//#define IRCLEAR   0xFF609F
//#define IRSUBTITLE 0xFF10EF
//#define IRAUDIO   0xFF906F
//#define IRANGLE   0xFF50AF
//#define IRSTEP    0xFF38C7
//#define IRPAUSE   0xFFB847
//#define IRPAUSE   0xFFB847
//#define IRPAUSE   0xFFB847
//#define IRSTOP    0xFF7887
//#define IRTITLE   0xFFF807
#define IRUP      0xFFBA45
#define IRLEFT    0xFF1AE5
#define IROK      0xFF9A65
#define IRRIGHT   0xFF5AA5
#define IRDOWN    0xFFAA55
//#define IRALTTAB  0xFF3AC5 // virtual 
#define IRENTER   0xFF7A85 // menu
//#define IRESC     0xFF2AD5 // setup
//#define IRBUT4    0xFF6A95 // skip
//#define IRNUM0    0xFF9867 // 0
//#define IRNUM1    0xFF30CF // 1
//#define IRNUM2    0xFFB04F // 2

 

иницализаци из середки такая

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

 

зачем удалять вторую часть команды?

фигней страдаете

Мои лишине тонны авна с другого проекта сами удалите. Мне лень. Мышой одним пальцем комменитровать вырезатая лееенннооттннннееееее . Успешно пульту обучил. Успешно прошил. Успешно работает прекрасно. Успешно забыл.

vingor
Offline
Зарегистрирован: 25.05.2014

Причем тут тонны авна? ведь надо просто подать  сигнал по ИК считанный с моего пульта

#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 поэтому и приходится дрыгать ногой по времени для отправки нужного пакета.