ir + китай leonardo

Нет ответов
Maka
Offline
Зарегистрирован: 24.10.2015

Захотел включать - выключать компьютер ик пультом. Была у меня 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 не прошивается. Перезагрузка компьютера не помогает, а ресет ардуины восстанавливает работу на сутки примерно. То есть на следующий день воспользоваться плодами прогресса не удается. Когда писал скетч и смотрел коды кнопок заметил что ик приемник ловит помехи от энергосберегающей лампы люстры, видимо энергосберегайки фонят в ик диапазоне. Где ошибка?