Проблема с выводом кода полученного по IR
- Войдите на сайт для отправки комментариев
Ср, 31/07/2013 - 05:22
Помогите плиз с такой задачей.
есть телик, хочу сделать ик-удлинитель (в идеале прикрутить к нему блютуз, но т.к. блютуз еще в пути, код принимается с пульта, но суть проблемы не меняется) .
проблема в том что немогу отослать принятый с пульта код на телик...
сериалпорт выставлен на 800бит/с (т.к. в даташите на ик-приемник).
минус и ТХ соответственно подключены на место где раньше в телике стоял ик приемник.
должен дублировать принятый код на телик, но этого не происходит....
буду очень благодарен за помощь.
#include <IRremote.h>
int RECV_PIN = 11;
unsigned long BUT;
IRrecv irrecv(RECV_PIN); // ик приемник
decode_results results;
void setup()
{
Serial.begin(800);
irrecv.enableIRIn(); // включаем приемник ик
}
void loop() {
delay(200);
if (irrecv.decode(&results)) {
BUT = results.value;
Serial.println(BUT,HEX);
}
irrecv.resume(); //продолаем принимать ик
}
пользуйтесь на здоровье, всего 8 баксов :)
http://www.aliexpress.com/item/Infrared-Remote-Control-Extender-IR-Repeater-System-Kit-With-4-Emitter-1-Receiver-Free-Shippping-TK0147/806182213.html
Это что это за такой ИК-приемник, который работает по UART'у ??? не покажите ли этот даташит откуда вы это вычитали...
Даташит
http://www.chipfind.ru/datasheet/vishay/tsop48xx.htm
в программировании новичок, буду очень благодарен если поможете разобраться и разъясните в этом вопросе))
http://arduino.ru/forum/programmirovanie/arduino-rgb-kontroller-podklyuchenie-cherez-provod
Только вот почему бы просто не сделать из дуины ретранслятор ИК сигнала?
а в чем смысл? если можно купить готовый ретраслятор за 8 баксов? и не морочиться
в дальнейшем хочу использовать вместо пульта телефон на андроиде по блютузу (прога пишется в App Inventor буквально за вечер даже таким новичом в программировании как я).
притом обычный ретранслятор создает неудобства. вариант если рядом со штатным ик-приемником поставить излучатель с ардуины то будет ограниченный функцилнал и куча неудобств.
плюс получилась бы универсальная прога для управления многими устройствами в обход ик-приемника.
так и зачем вам подпаиватся к телевизеру то? нельзя на ардуине поставить диод инфракрасный и мигать им куда хочется хоть с телефона хоть с интернета..? таких решений уже мешок и телега.. готовых...
В общем что бы напрямую подключиться в обход ИК-приемника (при этом приемник обязательно нужно выпаять) нужно редактировать библиотеку, а именно - убрать модуляции.
с одним вопросом значит разобрался, а то пытался слать данные по уарту, спасибо maksim за подсказки :)
возникает другой, редактирование библиотеки.
Примерно так , в файле ...\arduino-1.0\libraries\IRremote\IRremote.cpp меняете эти 3 функции:
void IRsend::mark(int time) { // Sends an IR mark for the specified number of microseconds. // The mark output is modulated at the PWM frequency. //TIMER_ENABLE_PWM; // Enable pin 3 PWM output PORTD &= ~(1<<3); delayMicroseconds(time); } /* Leave pin off for time (given in microseconds) */ void IRsend::space(int time) { // Sends an IR space for the specified number of microseconds. // A space is no output, so the PWM output is disabled. //TIMER_DISABLE_PWM; // Disable pin 3 PWM output PORTD |= 1<<3; delayMicroseconds(time); } void IRsend::enableIROut(int khz) { // Enables IR output. The khz value controls the modulation frequency in kilohertz. // The IR output will be on pin 3 (OC2B). // This routine is designed for 36-40KHz; if you use it for other values, it's up to you // to make sure it gives reasonable results. (Watch out for overflow / underflow / rounding.) // TIMER2 is used in phase-correct PWM mode, with OCR2A controlling the frequency and OCR2B // controlling the duty cycle. // There is no prescaling, so the output frequency is 16MHz / (2 * OCR2A) // To turn the output on and off, we leave the PWM running, but connect and disconnect the output pin. // A few hours staring at the ATmega documentation and this will all make sense. // See my Secrets of Arduino PWM at <a data-cke-saved-href="http://arcfn.com/2009/07/secrets-of-arduino-pwm.html" href="http://arcfn.com/2009/07/secrets-of-arduino-pwm.html" rel="nofollow">http://arcfn.com/2009/07/secrets-of-arduino-pwm.html</a> for details. // Disable the Timer2 Interrupt (which is used for receiving IR) //TIMER_DISABLE_INTR; //Timer2 Overflow Interrupt pinMode(3, OUTPUT); digitalWrite(3, HIGH); // When not sending PWM, we want it low // COM2A = 00: disconnect OC2A // COM2B = 00: disconnect OC2B; to send signal set to 10: OC2B non-inverted // WGM2 = 101: phase-correct PWM with OCRA as top // CS2 = 000: no prescaling // The top value for the timer. The modulation frequency will be SYSCLOCK / 2 / OCR2A. //TIMER_CONFIG_KHZ(khz); }так же быть может надо поменять местами выделенные строки. Подключаться надо по прежнему к 3 выводу дуины.
радио-удлинитель ИК пультов
// урок от Дмитрия Осипова - радио-удлинитель ИК пультов #include <IRremote.h> // это скачанная библиотека // ВАЖНО !!! (PIN 3;) вЫход ИК передатчика ((PIN 3;)на другой пин изменить нельзя) #define PanasonicAddress 0x4004 // Panasonic address (Pre data) #define P1 0x1000809 //ВАЖНО !!! ( 1000809 ) это код кнопки №1 - моего пульта от телевизора Panasonic - у вашего пульта будет другой код - замените на свой #define P2 0x1008889 #define P3 0x1004849 #define P4 0x100C8C9 #define P5 0x1002829 #define P6 0x100A8A9 #define JVC1 0xFB05 //( FB05 ) это код кнопки пульта от видеокамеры JVC (ZOOM) #define JVC2 0xFB85 IRsend irsend; #define button1 9 // пины куда подключен радио приёмник, от радио пульта #define button2 10 #define button3 11 #define button4 12 void setup() { } void loop() { if (digitalRead(button1) == HIGH) // при нажатии одной кнопки на радио пульте, выполняются 6 ИК команд { irsend.sendPanasonic(PanasonicAddress,P1); delay(400); irsend.sendPanasonic(PanasonicAddress,P2); delay(600); irsend.sendPanasonic(PanasonicAddress,P3); delay(800); irsend.sendPanasonic(PanasonicAddress,P4); delay(1200); irsend.sendPanasonic(PanasonicAddress,P5); delay(1500); irsend.sendPanasonic(PanasonicAddress,P6); } if (digitalRead(button2) == HIGH) //одной радио кнопкой, включить по ИК, телевизор Panasonic и видеокамеру JVC { irsend.sendPanasonic(PanasonicAddress,P1);delay(10);irsend.sendJVC(JVC1, 16,0);} if (digitalRead(button3) == HIGH) irsend.sendJVC(JVC1, 16,0); if (digitalRead(button4) == HIGH) irsend.sendJVC(JVC2, 16,0); }Бот засрал форум, а админам похуй?
да похоже бот постарался. но если не робот то отвечу раз написал.
за ссылки спасибо, но описание того что нужно есть в вверху, тоесть обойти ик приемник. а просто передавать код ни каких проблем не возникает.
до сих пор не решил проблему, жду когда приедет вторая ардуина..