ir + китай leonardo
- Войдите на сайт для отправки комментариев
Захотел включать - выключать компьютер ик пультом. Была у меня https://ru.aliexpress.com/item/Free-Shipping-New-Pro-Micro-for-arduino-ATmega32U4-5V-16MHz-Module-with-2-row-pin-header/1348800135.html?spm=a2g0s.9042311.0.0.274233edv8iA5L и пульт с ик-приемником от тв-тюнера Beholder. Наваял такую суперпрограмму :
#include <HID-Project.h>
#include <HID-Settings.h>
#include <IRLibDecodeBase.h>
#include <IRLib_P01_NEC.h>
IRdecodeNEC myDecoder;
#define MYPROTOCOL NEC
#include <IRLibRecv.h>
#define Power_pin 14
IRrecv myReceiver(2); //pin number for the receiver
byte keyVolID;
long prevMillis;
bool flag;
void Pdelay() {
if (millis() - 2000 < prevMillis) flag = true;
else flag = false;
digitalWrite(Power_pin, flag);
}
void setup() {
myReceiver.enableIRIn(); // Start the receiver
pinMode(Power_pin, OUTPUT);
Consumer.begin();
}
void loop() {
if (myReceiver.getResults()) {
myDecoder.decode();
switch (myDecoder.value) {
case 0x61D630CF :
Consumer.write(MEDIA_VOLUME_UP);
break;
case 0x61D618E7 :
Consumer.write(MEDIA_VOLUME_DOWN);
break;
case 0x61D6D827 :
Consumer.write(MEDIA_PLAY_PAUSE);
break;
case 0x61D658A7 :
Consumer.write(MEDIA_STOP);
break;
case 0x61D6C837 :
Consumer.write(MEDIA_PREVIOUS);
break;
case 0x61D69867 :
Consumer.write(MEDIA_NEXT);
break;
case 0x61D67887 :
Consumer.write(MEDIA_FAST_FORWARD);
break;
case 0x61D6F807 :
Consumer.write(MEDIA_REWIND);
break;
case 0x61D68877 :
Consumer.write(MEDIA_VOLUME_MUTE);
break;
case 0x61D648B7 :
prevMillis = millis();
break;
}
myReceiver.enableIRIn(); // Re-enable receiver
}
Pdelay();
}
Подключена "леонарда" в системный блок на внутренний USB коннектор, на который питание +5 подается всегда, пока системник включен в розетку. Power_pin через оптрон замыкает кнопку питания. В общем работает, скетч простой, прямо из примеров, комп включается, громкость +- работает, треки переключаются. Только длится радость недолго, примерно сутки. Потом ардуина перестает реагировать на пульт, в системе видна под своим именем, и с помощью IDE не прошивается. Перезагрузка компьютера не помогает, а ресет ардуины восстанавливает работу на сутки примерно. То есть на следующий день воспользоваться плодами прогресса не удается. Когда писал скетч и смотрел коды кнопок заметил что ик приемник ловит помехи от энергосберегающей лампы люстры, видимо энергосберегайки фонят в ик диапазоне. Где ошибка?