Как отсослать Unknown encoding код ПДУ

alexnet135
Offline
Зарегистрирован: 08.02.2016


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 не выполняются (диод не загорается) подскажите как в мой скетч прописать неизв кодировки.

 

 

alexnet135
Offline
Зарегистрирован: 08.02.2016
#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;
  }}

 

a5021
Offline
Зарегистрирован: 07.07.2013

Ну и названьице темы -- "как отсослать". Впрочем, содержание не лучше.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

alexnet135 пишет:

Необходимо при нажатии кнопки отсылать сигнал на фотодиод и управлять так другим устройством.

Вы можете объяснить что означает "отсылать сигнал на фотодиод". Как он его (сигнал) примет? Или Вы собрались на него фонариком светить?

Logik
Offline
Зарегистрирован: 05.08.2014

Как отсослать Unknown

Спасибо, поржал ))) Считайте что уже здесь отсослали ;)

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

alexnet135, мне не доводилось работать с IRRemote в режиме RAW, так что я не понимаю цифры (почему есть отрицательные? што, переполнение через ноль? или это так длительность показывается? длительност чего, mark или space?), но в общем и целом можете пользовать прямую запись в порт:

PORTD|=B00001000; // вкл. светодиод, выход D3
delayMicroseconds(1800); // длительность/mark
PORTD&=B11110111; // выкл
delayMicroseconds(800); // пауза/space

номера остальных PORTB, PORTC и т. п. по выходам читать в Cyberlib.h (гуглится, рекомендую качнуть). Но вообще D3 стандартный.

 

alexnet135
Offline
Зарегистрирован: 08.02.2016

IR диод подключен к 3 dig. выходу ардуино. Фактически весь проект это пульт дистанционного управления. При нажатии определенной клавиши отсылаем определенный сигнал на  IR диод а другой фотодиод принимает этот сигнал. Цифры так выводятся на мониторе порта если использовать стандартный пример IRrecvDump. По поводу опечаток не пинайте сильно, сижу по ночам, буквы уже сливаются.