Как отсослать Unknown encoding код ПДУ
- Войдите на сайт для отправки комментариев
Пнд, 19/11/2018 - 01:47
CE1972FD (32 bits) Raw (68): 11750 -4350 850 -450 800 -500 800 -450 850 -450 850 -450 800 -500 800 -450 850 -450 800 -1550 850 -1550 800 -1550 850 -1550 850 -450 800 -1550 800 -1550 850 -1550 850 -1500 850 -1550 850 -450 850 -450 800 -500 750 -500 800 -500 800 -500 750 -500 800 -500 800 -1550 800 -1550 850 -1550 800 -1600 750 -1600 800 -1600 750
Необходимо при нажатии кнопки отсылать сигнал на фотодиод и управлять так другим устройством.
считал сигналы с ПДУ. Некоторые кнопки определились как Unknown encoding:
Набросал в Flprog скетч. Команды которые Unknown не выполняются (диод не загорается) подскажите как в мой скетч прописать неизв кодировки.
#include <IRremote.h> IRsend _IR_Sender; bool _tim1I = 0; bool _tim1O = 0; unsigned long _tim1P = 0UL; bool _IR_Sender_1_TOI_159369281 = 0; bool _IR_Sender_1_TOI_160756913 = 0; bool _IR_Sender_1_TOI_123583955 = 0; bool _IR_Sender_1_TOI_142091701 = 0; bool _IR_Sender_1_TOI_154078413 = 0; bool _IR_Sender_1_TOI_134304680 = 0; bool _IR_Sender_1_TOI_96889421 = 0; bool _IR_Sender_1_TOI_210754616 = 0; bool _IR_Sender_1_TOI_115424394 = 0; bool _IR_Sender_1_TOI_165929683 = 0; bool _count1I = 0; int _count1P = 0; bool _mkb1C1xP1 = 0; bool _mkb1C1xP2 = 0; bool _mkb1C1xP3 = 0; bool _mkb1C1xP4 = 0; bool _mkb1C1xP5 = 0; bool _mkb1C2xP1 = 0; bool _mkb1C2xP2 = 0; bool _mkb1C2xP3 = 0; bool _mkb1C2xP4 = 0; bool _mkb1C2xP5 = 0; bool _gen1I = 0; bool _gen1O = 0; unsigned long _gen1P = 0UL; bool _trgs1 = 0; void setup() { pinMode(13, OUTPUT); pinMode(5, OUTPUT); pinMode(10, INPUT); digitalWrite(10, HIGH); pinMode(9, INPUT); digitalWrite(9, HIGH); pinMode(8, INPUT); digitalWrite(8, HIGH); pinMode(7, INPUT); digitalWrite(7, HIGH); pinMode(6, INPUT); digitalWrite(6, HIGH); pinMode(12, OUTPUT); digitalWrite(12, HIGH); pinMode(11, OUTPUT); digitalWrite(11, HIGH); } void loop() { digitalWrite(12, 0); _mkb1C1xP1 = ! (digitalRead(10)); _mkb1C1xP2 = ! (digitalRead(9)); _mkb1C1xP3 = ! (digitalRead(8)); _mkb1C1xP4 = ! (digitalRead(7)); _mkb1C1xP5 = ! (digitalRead(6)); digitalWrite(12, 1); digitalWrite(11, 0); _mkb1C2xP1 = ! (digitalRead(10)); _mkb1C2xP2 = ! (digitalRead(9)); _mkb1C2xP3 = ! (digitalRead(8)); _mkb1C2xP4 = ! (digitalRead(7)); _mkb1C2xP5 = ! (digitalRead(6)); digitalWrite(11, 1); if (1) { if (! _gen1I) { _gen1I = 1; _gen1O = 1; _gen1P = millis(); } } else { _gen1I = 0 ; _gen1O= 0;} if (_gen1I) { if ( _isTimer ( _gen1P , 1000 )) { _gen1P = millis(); _gen1O = ! _gen1O;}} if (_gen1O) { if (! _count1I) { _count1P = _count1P+1; _count1I = 1; } } else { _count1I=0; } if (( (( (( (( (( (_mkb1C2xP4) || (_mkb1C1xP1) )) || (( (_mkb1C1xP3) || (_mkb1C1xP4) )) )) || (( (( (_mkb1C1xP5) || (_mkb1C2xP1) )) || (( (_mkb1C2xP2) || (_mkb1C2xP3) )) )) )) || (_mkb1C2xP5) )) || ((_count1P) >= (16)) )) _count1P = 0; if(( ((_count1P) >= (15)) && (_trgs1) )) {_tim1O = 1; _tim1I = 1;} else { if(_tim1I) {_tim1I = 0; _tim1P = millis();} else { if (_tim1O) {if ( _isTimer(_tim1P, 2000)) _tim1O = 0;}}} if(( (( (( (( (_mkb1C2xP4) || (_mkb1C1xP1) )) || (( (_mkb1C1xP3) || (_mkb1C1xP4) )) )) || (( (( (_mkb1C1xP5) || (_mkb1C2xP1) )) || (( (_mkb1C2xP2) || (_mkb1C2xP3) )) )) )) || (_mkb1C2xP5) )) _trgs1 = 1; if(_mkb1C1xP2) _trgs1 = 0; digitalWrite(13, (_count1P) >= (5)); digitalWrite(5, !(_tim1O)); if (_mkb1C1xP4) {if (!(_IR_Sender_1_TOI_159369281)) {_irSend(0xFF50AF, 3, 32);} _IR_Sender_1_TOI_159369281 = 1;} else {_IR_Sender_1_TOI_159369281 =0;} if (_mkb1C1xP5) {if (!(_IR_Sender_1_TOI_160756913)) {_irSend(0xFF906F, 3, 32);} _IR_Sender_1_TOI_160756913 = 1;} else {_IR_Sender_1_TOI_160756913 =0;} if (_mkb1C2xP1) {if (!(_IR_Sender_1_TOI_123583955)) {_irSend(0xFFA857, 3, 32);} _IR_Sender_1_TOI_123583955 = 1;} else {_IR_Sender_1_TOI_123583955 =0;} if (_mkb1C2xP2) {if (!(_IR_Sender_1_TOI_142091701)) {_irSend(0xFF8877, 3, 32);} _IR_Sender_1_TOI_142091701 = 1;} else {_IR_Sender_1_TOI_142091701 =0;} if (_mkb1C2xP3) {if (!(_IR_Sender_1_TOI_154078413)) {_irSend(0xFF10EF, 3, 32);} _IR_Sender_1_TOI_154078413 = 1;} else {_IR_Sender_1_TOI_154078413 =0;} if (_mkb1C2xP4) {if (!(_IR_Sender_1_TOI_134304680)) {_irSend(0xFF28D7, 3, 32);} _IR_Sender_1_TOI_134304680 = 1;} else {_IR_Sender_1_TOI_134304680 =0;} if (_mkb1C2xP5) {if (!(_IR_Sender_1_TOI_96889421)) {_irSend(0xFF6897, 3, 32);} _IR_Sender_1_TOI_96889421 = 1;} else {_IR_Sender_1_TOI_96889421 =0;} if (_mkb1C1xP1) {if (!(_IR_Sender_1_TOI_210754616)) {_irSend(0xCE1972FD, -1, 32);} _IR_Sender_1_TOI_210754616 = 1;} else {_IR_Sender_1_TOI_210754616 =0;} if (_mkb1C1xP2) {if (!(_IR_Sender_1_TOI_115424394)) {_irSend(0xD4DD0381, -1, 32);} _IR_Sender_1_TOI_115424394 = 1;} else {_IR_Sender_1_TOI_115424394 =0;} if (_mkb1C1xP3) {if (!(_IR_Sender_1_TOI_165929683)) {_irSend(0x9BA392C1, -1, 32);} _IR_Sender_1_TOI_165929683 = 1;} else {_IR_Sender_1_TOI_165929683 =0;} } bool _isTimer(unsigned long startTime, unsigned long period ) { unsigned long currentTime; currentTime = millis(); if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));} } void _irSend(long code, byte manufactureCode, byte length) { switch (manufactureCode) { case 1: _IR_Sender.sendNEC(code, length); return; case 2: _IR_Sender.sendSony(code, length); return; case 3: _IR_Sender.sendRC5(code, length); return; case 4: _IR_Sender.sendRC6(code, length); return; case 5: _IR_Sender.sendDISH(code, length); return; case 6: _IR_Sender.sendSharp(code, length); return; case 7: _IR_Sender.sendPanasonic(code, length); return; case 8: _IR_Sender.sendJVC(code, length, 1); return; case 11: _IR_Sender.sendSAMSUNG(code, length); return; default: // default is optional break; }}Ну и названьице темы -- "как отсослать". Впрочем, содержание не лучше.
Необходимо при нажатии кнопки отсылать сигнал на фотодиод и управлять так другим устройством.
Вы можете объяснить что означает "отсылать сигнал на фотодиод". Как он его (сигнал) примет? Или Вы собрались на него фонариком светить?
Как отсослать Unknown
Спасибо, поржал ))) Считайте что уже здесь отсослали ;)
alexnet135, мне не доводилось работать с IRRemote в режиме RAW, так что я не понимаю цифры (почему есть отрицательные? што, переполнение через ноль? или это так длительность показывается? длительност чего, mark или space?), но в общем и целом можете пользовать прямую запись в порт:
номера остальных PORTB, PORTC и т. п. по выходам читать в Cyberlib.h (гуглится, рекомендую качнуть). Но вообще D3 стандартный.
IR диод подключен к 3 dig. выходу ардуино. Фактически весь проект это пульт дистанционного управления. При нажатии определенной клавиши отсылаем определенный сигнал на IR диод а другой фотодиод принимает этот сигнал. Цифры так выводятся на мониторе порта если использовать стандартный пример IRrecvDump. По поводу опечаток не пинайте сильно, сижу по ночам, буквы уже сливаются.