Как обойти IR приемник
- Войдите на сайт для отправки комментариев
Вс, 03/10/2021 - 18:12
Друзья, направьте на верный путь. Есть IR передатчик и IR приемник на 2-ух разных девайсах. Передатчик это ардуино с моим кодом. Приемник заводское устройство, надо передать на заводское устройство с ардуино по проводу "эмуляцию команды IR сигнала". По IR все работает но, надо что бы управление заводским девайсом было по проводам. Что почитать, что попробовать ?
Прочитать, как работают ir-приемники, и сделать сигнал.
http://arduino.ru/forum/apparatnye-voprosy/kak-peredat-ik-komandy-bez-uc...
Jeka_M, спасибо это почитал. Но я не использую IRremote, у меня другой код для отправки:
// Frequency calculations // carrier frequency: f = 56000 Hz // wave period: T = 1/f = 17.86 µs // half cycle period: T/2 = 8.93 µs // assuming carrier_interval_delay + instructions_delay = T/2 #define CARRIER_INTERVAL 4 // adjusted experimentally // MilesTag definitions // carrier off space: 600 µs // header pulse: 2400 µs // bit0 pulse: 600 µs // bit1 pulse: 1200 µs #define MLT_SPACE_INTERVAL 600 // header cycle count: 2400 / 17.86 = 134.3 #define MLT_HEADER_CYCLES 128 // adjusted experimentally // bit0 cycle count: 600 / 17.86 = 33.6 #define MLT_BIT0_CYCLES 32 // adjusted experimentally // bit1 cycle count: 1200 / 17.86 = 67.2 #define MLT_BIT1_CYCLES 64 // adjusted experimentally void setup() { pinMode(IR_PIN, OUTPUT); Serial.begin(9600); Serial.println("Ready..."); } void fire() { Serial.println("Fire!"); sendHeader(); sendByte(0x83); sendByte(0x05); sendByte(0xE8); } void sendHeader() { sendPulse(MLT_HEADER_CYCLES); delayMicroseconds(MLT_SPACE_INTERVAL); } void sendByte(byte x) { for(int i=0; i<8; i++) { if (x & 0x80) { sendPulse(MLT_BIT1_CYCLES); } else { sendPulse(MLT_BIT0_CYCLES); } x = x << 1; delayMicroseconds(MLT_SPACE_INTERVAL); } } void sendPulse(int cycles) { for (int i=0; i<cycles; i++ ) { digitalWrite(IR_PIN, HIGH); delayMicroseconds(CARRIER_INTERVAL); digitalWrite(IR_PIN, LOW); delayMicroseconds(CARRIER_INTERVAL); } }я понимаю что надо убрать несущую, но пока не вышло. Завтра попробую еще на одном варианте отправки кода поиграть. А так по сути мне нужно отправить sendByte(0x83);sendByte(0x05);sendByte(0xE8);
Ёмаё, автор, почитайте как работают ик приёмники. там демод с открытым коллектором. берёте RAW код и клацаете ноль единицу, без всякого delaymicroseconds, там оно нахер не надо. тайминги чуть ли не в миллисекундах. и по двум проводам изи.
Оптрон (pc817) рекомендую, чтобы не было выкрутасов из-за земляной петли.