Управление пиксельной светодиодной лентой ИК пультом
- Войдите на сайт для отправки комментариев
Чт, 28/04/2016 - 18:41
Здравствуйте!
Подскажите пожалуйста в чем дело. Хочу ик-пультом управлять эффектами на ленте. По отдельности ик приемник принимает стабильные значения кнопок, но если включить в loop() функцию анимации ленты, то на каждую кнопку пульта при нажатии приходят каждый раз разные значения, что делает невозможным их обработку
#include "FastLED.h" #include <IRremote.h> #define LED_COUNT 31 #define LED_PIN 3 #define RECV_PIN 11 struct CRGB leds[LED_COUNT]; uint8_t hue = 29; int del = 20; byte idex = 255; byte meteorLength = 30; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { delay(2000); LEDS.addLeds<WS2812B, LED_PIN, GRB>(leds, LED_COUNT); LEDS.setBrightness(200); Serial.begin(9600); irrecv.enableIRIn(); } void loop(){ irControll(); meteorShower(); } void irControll() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); switch ( results.value ) { case 0xF700FF: del +=10; break; case 0xFF02FD: del -=10; break; } irrecv.resume(); } } void meteorShower(){ // код анимации светодиодов delay(del); }
У меня та же проблема, только с библиотекой neomatrix. Я пробовал через другую атмегу подключать пульт, а её соеденять по uart, i2c... везде разные "грабли". Осталась идея - через nrf24 )). Я сделал панельку 8х24 и запустил на ней часы, плюс через nrf24 получает температуру за бортом. Так вот, с приёмом проблем нет и температура выводится без проблем, а значит можно принять любой параметр. Понимаю, что глупо звучит, но я уже замучался прикручивать ir пульт к матрице (
По отдельности ик приемник принимает стабильные значения кнопок, но если включить в loop() функцию анимации ленты, то на каждую кнопку пульта при нажатии приходят каждый раз разные значения, что делает невозможным их обработку
Видимо, Вы говорите о строке 28 - если её убрать, то всё тановится нормально?
Можно, сделать следующее:
1. Запустить код без этой строки, нажать несколько раз одну кнопку и выложить сюда то, что печатает строка 33.
2. Запустить код с этой строкой и опять же несколько раз одну кнопку и выложить сюда то, что печатает строка 33.
Сделайте и посмотрим.
да, именно так, пробовал и с другими функциями таже проблема, если включена каждый раз при нажатии разный набор сигналов получается с одной кнопки (FFFFFFFF если подольше подержать)
если закоментить, то более-менее нормально всё.. тоже есть некоторый разброс, но он стабильный и с ним можно работать
щас проверил еще, если из ф-ии анимации всё убрать кроме delay(del); , то нормально работает, сама анимация:
вот эта штука всё ломает
какой-то конфликт с библиотекой FastLED
... нагуглил инфу, типа не может обрабатываться одновременно и сигнал светодиодам и приниматься от ик-пульта, т.е. нужно их как-то разделить
....
ураа! проблема решена)
Ну, решена, так решена, с Победой!