Re: Управление компьютером, любым ИК пультом.
спасибо, но помоему дело не в размере,на сколько я смог понять с прерываниями
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp: In member function 'void IRsend::mark(int)':
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp:258: error: 'TCCR2A' was not declared in this scope
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp:258: error: 'COM2B1' was not declared in this scope
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp: In member function 'void IRsend::space(int)':
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp:267: error: 'TCCR2A' was not declared in this scope
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp:267: error: 'COM2B1' was not declared in this scope
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp: In member function 'void IRsend::enableIROut(int)':
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp:286: error: 'TIMSK2' was not declared in this scope
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp:295: error: 'TCCR2A' was not declared in this scope
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp:296: error: 'TCCR2B' was not declared in this scope
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp:296: error: 'WGM22' was not declared in this scope
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp:299: error: 'OCR2A' was not declared in this scope
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp:300: error: 'OCR2B' was not declared in this scope
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp: In member function 'void IRrecv::enableIRIn()':
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp:314: error: 'TCCR2A' was not declared in this scope
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp:319: error: 'TCCR2B' was not declared in this scope
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp:324: error: 'TIMSK2' was not declared in this scope
Re: Управление компьютером, любым ИК пультом.
У меня приемник будет находится от Ардуино на расстоянии 2м. Где лучше размещать фильтр питания? Непосредственно возле приемника, или возле ардуино?
Re: Управление компьютером, любым ИК пультом.
Непосредственно возле приемника
Re: Управление компьютером, любым ИК пультом.
Цитата:
Сообщение от
SilverRain
спасибо, но помоему дело не в размере,на сколько я смог понять с прерываниями
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp: In member function 'void IRsend::mark(int)':
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp:258: error: 'TCCR2A' was not declared in this scope
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp:258: error: 'COM2B1' was not declared in this scope
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp: In member function 'void IRsend::space(int)':
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp:267: error: 'TCCR2A' was not declared in this scope
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp:267: error: 'COM2B1' was not declared in this scope
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp: In member function 'void IRsend::enableIROut(int)':
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp:286: error: 'TIMSK2' was not declared in this scope
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp:295: error: 'TCCR2A' was not declared in this scope
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp:296: error: 'TCCR2B' was not declared in this scope
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp:296: error: 'WGM22' was not declared in this scope
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp:299: error: 'OCR2A' was not declared in this scope
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp:300: error: 'OCR2B' was not declared in this scope
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp: In member function 'void IRrecv::enableIRIn()':
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp:314: error: 'TCCR2A' was not declared in this scope
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp:319: error: 'TCCR2B' was not declared in this scope
C:\Robo\arduino-0022\arduino-0022\libraries\IRremote\IRremote.cpp:324: error: 'TIMSK2' was not declared in this scope
Похоже что несовместимость с таймером Timer2
Re: Управление компьютером, любым ИК пультом.
Еще вопрос...
У меня на выводах 3 и 11 подключены светодиоды, которые при определенных собитиях плавно вкл. и откл.. Но после подключения этой библиотеки, ШИМ на этих выводах почему-то отключился... и они резко акл. и откл. Что может быть?
P.S. в коде естественно сделал int RECV_PIN = 12;
Re: Управление компьютером, любым ИК пультом.
Подключи светодиоды на 5 ,6 выводы они тоже могут выдавать хардверный ШИМ на другом таймере
Pins 5 and 6: controlled by Timer 0
Pins 9 and 10: controlled by timer 1
Pins 11 and 3: controlled by timer 2
Re: Управление компьютером, любым ИК пультом.
Цитата:
Сообщение от
Chip
Подключи светодиоды на 5 ,6 выводы они тоже могут выдавать хардверный ШИМ на другом таймере
Pins 5 and 6: controlled by Timer 0
Pins 9 and 10: controlled by timer 1
Pins 11 and 3: controlled by timer 2
на выводах 5,6,9 и 10 естественно тоже подключены светодиоды... но каких-либо ньюансов в их работе не заметил...
т.э. получается не выйдет использовать шим на выводах 11 и 3 при подключеной этой библиотеки?
Re: Управление компьютером, любым ИК пультом.
Выводы 11 и 3 используют таймер2, этот же таймер используется для читалки пульта
Re: Управление компьютером, любым ИК пультом.
Переделал скетч, чтобы удержание кнопки на пульте давало другой код. Пока нашел этому 2 применения: кнопка "положить трубку" при удержании закрывает активное окно (в Girder на это событие нужно включить антиповтор, чтобы все окна разом не закрыть)), а кнопки "вперед" / "назад" при удержании включают перемотку в AIMP. Очень удобно!
Пульт от пионера, при нажатии кнопок телефона, всегда сначала шлет код 0xB54AE916, а потом код клавиши. Это было учтено в алгоритме.
Скетч затачивался под Girder33, поэтому для использования в других программах нужно будет изменить код функции printIR.
PHP код:
#include <IRremote.h>
//вход ИК приемника
#define RECV_PIN 11
// Задержка на повтор клавиши
#define REPEAT_DELAY 500
// Время ожидания повторения
#define REPEAT_WAIT 100
//----------------------------
IRrecv irrecv(RECV_PIN);
decode_results result;
unsigned long IR_old; // предыдущий принятый код
unsigned long pressTime; // время, когда впервые нажалась кнопка пульта
unsigned long rcTime;
boolean IR_received;
void setup()
{
Serial.begin(115200);
IR_old = 0;
irrecv.enableIRIn(); // включить приемник
}
void loop() {
IR_received = false;
if (irrecv.decode(&result)) {
if (result.value > 0) {
// Код годится.
if (IR_old == result.value || result.value == 0xB54AE916) {
// Получили тот же код, что в последний раз
if ((millis() - pressTime) > REPEAT_DELAY && result.value != 0xB54AE916) {
// Шлем код удержания
printIR(result.value, true);
}
} else {
if (result.value != 0xB54AE916) {
IR_old = result.value;
}
pressTime = millis();
}
IR_received = true;
rcTime = millis();
}
irrecv.resume();
}
if (!IR_received && IR_old > 0) {
// Если в течении определенного времени никакой код не пришел, отсылаем последний из кеша
if ((millis() - rcTime) > REPEAT_WAIT) {
if ((millis() - pressTime) <= REPEAT_DELAY) {
printIR(IR_old, false);
}
IR_old = 0;
}
}
}
void printIR(unsigned long code, boolean repeat) {
Serial.print("IR:");
Serial.print(repeat ? "R" : "N");
Serial.print(code, HEX);
Serial.print(13, BYTE);
}
Вложений: 1
Re: Управление компьютером, любым ИК пультом.
Заново переписанная программа, скетч из шапки, настройки аналогичны Joystick
Возможности программы:
1-Программа при запуске прячется в трей и если устройство не подключено то перечеркивает иконку в трее красными линиями.
2-Программа запустится даже без подключенного устройства, после подключения устройства программа начнет автоматически работать.
3-Программа работает только с устройством Joystik и не конфликтует с другими устройствами программами работающих с драйвером FTDI
Тоесть Вы можете подключить еще Carduino,Pultik и другие устройства параллельно.
4-Программа имеет всего один *.exe фаил, настройки горячих клавиш осуществляются в программе.
5-Программа автоматически переключает раскладку клавиатуры в (EN) при получении команды нажатия горячих клавиш.
6-Программа автоматически прописывается(удаляется) в автозагрузку нажатием 1 кнопки.
7-Программа имеет кнопку отключения звукового сопровождения
8-При потере сигнала от USB к которому подключено устройство, программа прячется в трей и ждет когда устройство появится то есть его подключат к ПК, после появления устройства в системе программа автоматически подхватит его и продолжит работу.
9-Программа при выходе из сна производит переподключение устройства к USB порту. Для гарантированной работы устройства
10-Программа стала универсальной и имеет возможность работать с большим количеством устройств(буду выкладывать прошивки по мере возможности)