Библиотека IRremote, irsend
- Войдите на сайт для отправки комментариев
Чт, 25/10/2012 - 20:24
Доброе время суток всем!
Использую Библотеку IRremote
В ней есть пример IRsendDemo подача ик сигнала на 3 пин, проблемма в том что мне нужно выводить сигнал не на 3 пин, а на 12 или на друго. Вопрос, как изменить порт вывода?
подскажите пожалуйста.
в самом IRremote.cpp (файл идущий вместе с библиотекой) есть строка типа // The IR output will be on pin 3 (OC2B). А ниже
pinMode(3, OUTPUT);
digitalWrite(3, LOW); // When not sending PWM, we want it low
Это и есть настройка пина(внутри библиотеки, поэтому она и работает только с 3)
Таким образом может стоит 3 заменить на ваш пин.
я пробовал, 3 заменять на нужный мне порт, но это не дало результата,
TCCR2A |= _BV(COM2B1); // Enable pin 3 PWM output
TCCR2A &= ~(_BV(COM2B1)); // Disable pin 3 PWM output
вот эти строки меня смущают. Есть еще какие идеи?
Дело в том, что код "заточен" под 3 пин. Можно перевесить на другой с PWM, но нужно будет менять, например, эти строки, которые Вас смущают. Нужно смотреть, какой таймер и какой канал этого таймера работает с нужной Вам ногой.
На 12 вывод принципиально не получится (если у Вас не МЕГА) - там нет PWM
Например, для 11 вывода нужно будет написать:
TCCR2A |= _BV(COM2A1); // Enable pin 11 PWM output
TCCR2A &= ~(_BV(COM2A1)); // Disable pin 11 PWM output
Потому что 11 вывод сидит на том же таймере, но на канале А
Читайте pin mapping, еще здесь
А для atmega8 библотеку IRremote никто непробовал переписывать?
А для atmega8 библотеку IRremote никто непробовал переписывать?
а чё с ней не так? должна работать.
некомпилируется чегото под мегу 8 под все остальное пожалуста а мега 8 шиш
IDE чё пишет, когда ошибка?
D:\Program Files\arduino-1.0\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega8 -DF_CPU=16000000L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=101 -ID:\Program Files\arduino-1.0\hardware\arduino\cores\arduino -ID:\Program Files\arduino-1.0\hardware\arduino\variants\standard -ID:\Program Files\arduino-1.0\libraries\IRremote -ID:\Program Files\arduino-1.0\libraries\EEPROM C:\DOCUME~1\86C2~1\LOCALS~1\Temp\build8536526822206511613.tmp\Switch_IR_PDU_ino.cpp -o C:\DOCUME~1\86C2~1\LOCALS~1\Temp\build8536526822206511613.tmp\Switch_IR_PDU_ino.cpp.o
In file included from Switch_IR_PDU_ino.cpp:2:
d:/program files/arduino-1.0/hardware/tools/avr/lib/gcc/../../avr/include/avr/delay.h:36:2: warning: #warning "This file has been moved to <util/delay.h>."
D:\Program Files\arduino-1.0\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega8 -DF_CPU=16000000L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=101 -ID:\Program Files\arduino-1.0\hardware\arduino\cores\arduino -ID:\Program Files\arduino-1.0\hardware\arduino\variants\standard -ID:\Program Files\arduino-1.0\libraries\IRremote -ID:\Program Files\arduino-1.0\libraries\EEPROM -ID:\Program Files\arduino-1.0\libraries\IRremote\utility D:\Program Files\arduino-1.0\libraries\IRremote\IRremote.cpp -o C:\DOCUME~1\86C2~1\LOCALS~1\Temp\build8536526822206511613.tmp\IRremote\IRremote.cpp.o
D:\Program Files\arduino-1.0\libraries\IRremote\IRremote.cpp: In member function 'void IRsend::enableIROut(int)':
D:\Program Files\arduino-1.0\libraries\IRremote\IRremote.cpp:200: error: 'TIMSK1' was not declared in this scope
D:\Program Files\arduino-1.0\libraries\IRremote\IRremote.cpp: In member function 'void IRrecv::enableIRIn()':
D:\Program Files\arduino-1.0\libraries\IRremote\IRremote.cpp:229: error: 'TIMSK1' was not declared in this scope
Это если юзатьтаймер 1
а если таймер 2 то
D:\Program Files\arduino-1.0\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega8 -DF_CPU=16000000L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=101 -ID:\Program Files\arduino-1.0\hardware\arduino\cores\arduino -ID:\Program Files\arduino-1.0\hardware\arduino\variants\standard -ID:\Program Files\arduino-1.0\libraries\IRremote -ID:\Program Files\arduino-1.0\libraries\EEPROM C:\DOCUME~1\86C2~1\LOCALS~1\Temp\build8536526822206511613.tmp\Switch_IR_PDU_ino.cpp -o C:\DOCUME~1\86C2~1\LOCALS~1\Temp\build8536526822206511613.tmp\Switch_IR_PDU_ino.cpp.o
In file included from Switch_IR_PDU_ino.cpp:2:
d:/program files/arduino-1.0/hardware/tools/avr/lib/gcc/../../avr/include/avr/delay.h:36:2: warning: #warning "This file has been moved to <util/delay.h>."
D:\Program Files\arduino-1.0\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega8 -DF_CPU=16000000L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=101 -ID:\Program Files\arduino-1.0\hardware\arduino\cores\arduino -ID:\Program Files\arduino-1.0\hardware\arduino\variants\standard -ID:\Program Files\arduino-1.0\libraries\IRremote -ID:\Program Files\arduino-1.0\libraries\EEPROM -ID:\Program Files\arduino-1.0\libraries\IRremote\utility D:\Program Files\arduino-1.0\libraries\IRremote\IRremote.cpp -o C:\DOCUME~1\86C2~1\LOCALS~1\Temp\build8536526822206511613.tmp\IRremote\IRremote.cpp.o
D:\Program Files\arduino-1.0\libraries\IRremote\IRremote.cpp: In member function 'void IRsend::mark(int)':
D:\Program Files\arduino-1.0\libraries\IRremote\IRremote.cpp:174: error: 'TCCR2A' was not declared in this scope
D:\Program Files\arduino-1.0\libraries\IRremote\IRremote.cpp:174: error: 'COM2B1' was not declared in this scope
D:\Program Files\arduino-1.0\libraries\IRremote\IRremote.cpp: In member function 'void IRsend::space(int)':
D:\Program Files\arduino-1.0\libraries\IRremote\IRremote.cpp:182: error: 'TCCR2A' was not declared in this scope
D:\Program Files\arduino-1.0\libraries\IRremote\IRremote.cpp:182: error: 'COM2B1' was not declared in this scope
D:\Program Files\arduino-1.0\libraries\IRremote\IRremote.cpp: In member function 'void IRsend::enableIROut(int)':
D:\Program Files\arduino-1.0\libraries\IRremote\IRremote.cpp:200: error: 'TIMSK2' was not declared in this scope
D:\Program Files\arduino-1.0\libraries\IRremote\IRremote.cpp:210: error: 'TCCR2A' was not declared in this scope
D:\Program Files\arduino-1.0\libraries\IRremote\IRremote.cpp:210: error: 'TCCR2B' was not declared in this scope
D:\Program Files\arduino-1.0\libraries\IRremote\IRremote.cpp:210: error: 'WGM22' was not declared in this scope
D:\Program Files\arduino-1.0\libraries\IRremote\IRremote.cpp:210: error: 'OCR2A' was not declared in this scope
D:\Program Files\arduino-1.0\libraries\IRremote\IRremote.cpp:210: error: 'OCR2B' was not declared in this scope
D:\Program Files\arduino-1.0\libraries\IRremote\IRremote.cpp: In member function 'void IRrecv::enableIRIn()':
D:\Program Files\arduino-1.0\libraries\IRremote\IRremote.cpp:226: error: 'TCCR2A' was not declared in this scope
D:\Program Files\arduino-1.0\libraries\IRremote\IRremote.cpp:226: error: 'TCCR2B' was not declared in this scope
D:\Program Files\arduino-1.0\libraries\IRremote\IRremote.cpp:226: error: 'OCR2A' was not declared in this scope
D:\Program Files\arduino-1.0\libraries\IRremote\IRremote.cpp:229: error: 'TIMSK2' was not declared in this scope
D:\Program Files\arduino-1.0\libraries\IRremote\IRremote.cpp:229: error: 'OCIE2A' was not declared in this scope
D:\Program Files\arduino-1.0\libraries\IRremote\IRremote.cpp: At global scope:
D:\Program Files\arduino-1.0\libraries\IRremote\IRremote.cpp:258: warning: 'TIMER2_COMPA_vect' appears to be a misspelled signal handler
не совсем компетентен в этом деле. почему-то переменные не декларированы....
попробуй скачать arduino ide 022 например, т.е. старую версию. видать твоя либа под старую иде написана.
есть у меня таковая таже исторя либу я подправил под 1,0
таким образом вместо #include "WProgram.h"
#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif
Ну а ругается на TCCR2A' was not declared in this scope потому что у 8й меги 2йтаймер подругому обзывается к примеру
TCNT2
OCR2 По идее надо переписывать все упоминания в либе но непонятно почему неработает с 1м таймером там то всё как у 168меги
Мда а ларчик просто открывался использовал таймер1 ну и поправил строчки #define TIMER_ENABLE_INTR (TIMSK = _BV(OCIE1A))
#define TIMER_DISABLE_INTR (TIMSK = 0) у атмеги8 TIMSK1 обзывается просто TIMSK Теперь правда проблемка невмещяется код в атмегу 8 наверно прийдется под себя резануть либу наверняка там много лишнего
hi all, что бы не создавать ещё одну тему напишу тут.
Пробую сократить код библиотеки, вернее от неё избавится чтоб всё в одном скетче было, ненужные функции выкинуть. А нужно чтобы при нажатии на кнопку просто отправлялась команда на устройство. с помошью примера к библиотеке(IRrecord) я считал коды - тип NEC длина 32 значение 551063. Пытаюсь уместить всё в один файл без библиотеки выдернул вроде всё но есть ошибки, сделал так:
При компиляции появляются следующие ошибки:
Я так понимаю это какие то константы которые для каждого типа контроллера разные. Подскажите как быть с этим? Цель такая - хочу уместить код в ATtiny85, можно ли это сделать?
del
del
del
посмотрите здесь http://ubiyubix.wordpress.com/2012/05/05/porting-the-arduino-irremote-library-to-the-attiny4313/
извиняюсь за кучу продублированных постов, сервер писал ошибка SMTP нельзя почту мол отправить =(
.