ИК упровление пк и другим оборудоваием (нужна помощь!)

Timofei Green X
Offline
Зарегистрирован: 06.09.2013

Доброго времени суток! Помогите дописать программу чтобы можно было упролять не только оборудованием но и ПК

есть вот такая программа по упровлению к примеру светодиодами, при удержании на кнопки ИК пульта горит светодиод

так вот помогите дописать код что-бы при нажатии на другую кнопку пульта компьютер воспринимал как нажатие клавиши на клавиатуре, также и движени курсора

#include <IRremote.h>

 
int RECV_PIN = 11; //вход ИК приемника
IRrecv irrecv(RECV_PIN);
decode_results results;
unsigned long eventTime=0; //eventTime, для паузы,  вместо delay,будем использовать функцию millis. 
int timer = 10;//индикация таймера
 
int L13 = 13; //пины
int L12 = 12;
 
void setup(){
  irrecv.enableIRIn(); // включить приемник
 
  pinMode(L13, OUTPUT); // назначаем пины как выходы
  pinMode(L12, OUTPUT);
 
  pinMode(timer, OUTPUT);
void loop() {
  if (digitalRead(RECV_PIN) == LOW) 
    //  Если обнаружен отрицательный сигнал запускаем таймер,и включаем таймерПИН //(timer, HIGH);
    eventTime=millis(),digitalWrite(timer, HIGH);
  //  Продолжительность работы таймера >100 миллисекунд. И ТаймерПИН выключаем //(timer, LOW)
  if(millis()-eventTime>100) digitalWrite(timer, LOW)
    //  и вЫключаем все
    digitalWrite(L13, LOW),digitalWrite(L12, LOW);
 
  if (irrecv.decode(&results)) {
 
    if (results.value == 0xC1C738C7 && (digitalRead(timer) == HIGH) )digitalWrite(L13, HIGH); //вперед
    if (results.value == 0xC1C7B847 && (digitalRead(timer) == HIGH) )digitalWrite(L12, HIGH); //назад
    if (results.value == 0xC1C7807F && (digitalRead(timer) == HIGH) )digitalWrite(L12, HIGH); //play
 
    irrecv.resume(); 
  }
}
как вы поняли работает с бибиотекой IRremote.h
Life23
Offline
Зарегистрирован: 10.08.2013

Сейчас Вас тут закидают камнями за то что не правильно вставили код.. ))

 

Клапауций
Offline
Зарегистрирован: 10.02.2013

Timofei Green X пишет:

как вы поняли работает с бибиотекой IRremote.h

Поняли - теперь идёте в папку arduino-x.x.x\examples\09.USB и смотрите примеры реализации клавиатуры и мыши как устройств ввода.

Life23
Offline
Зарегистрирован: 10.08.2013

А каким "макаром" ПК понимает, что это USB устройство Мишь или Клавиатура?  я так понимаю что эти примеры только для плат Arduino Leonardo и Micro?

Если у меня Diecimila. на ней стоит FTDI USB chip между Atmega и USB портом ПК, то я так понимаю мне можно забыть о реализации клавиатуры и мыши как устройств ввода?

Тогда у меня возникает вопрос к знающим - каким образом работает Leonardo и Micro?

Простите, что не в тему.. наверно надо было в разделе "Апаратные вопросы". Но я думаю топик стартеру эта инфа тоже будет полезна..

Life23
Offline
Зарегистрирован: 10.08.2013

Arduino Leonardo — контроллер на базе ATmega32u4

Почитал даташит на данный камень: таки да.. у этого чипа уже внутри контроллер USB. Теперь стало понятно, каким образом Arduina превращается в "мишь" или "клавиатуру". 

Клапауций
Offline
Зарегистрирован: 10.02.2013

Life23 пишет:
А каким "макаром" ПК понимает, что это USB устройство Мишь или Клавиатура?  я так понимаю что эти примеры только для плат Arduino Leonardo и Micro?

Согласно спецификации USB устройство передаёт системе VID/PID-идентификатор, получив который система уже решает, что делать с устройством

Life23 пишет:
Если у меня Diecimila. на ней стоит FTDI USB chip между Atmega и USB портом ПК, то я так понимаю мне можно забыть о реализации клавиатуры и мыши как устройств ввода?

Если очень нужно, то можно подключить к дуино обычную клаву и мышь - т.е. нажимать на кнопы клавы ногами дуино. Или написать софт, который будет преобразовывать сигналы передаваемые по компорту в клавиатурные/мышиные.

Или пробовать велосипед V-USB.

Life23 пишет:
Тогда у меня возникает вопрос к знающим - каким образом работает Leonardo и Micro?

Контроллеры этих дуино имеют на борту аппаратный USB, что позволяет представиться в принципе любым устройством USB.

Life23
Offline
Зарегистрирован: 10.08.2013

Клапауций

Спасибо за ответ! ;) Не зря подозревал, что не все так просто.. :)