Есть код для Arduino. К ней подключена лента и инфракрасный приемник для ИК пульта. Схема собрана правильно, проверял на многих скетчах. Вот код:
По идее, в void loop при условии if( ir.available() ) в консоль должна выводиться информация, полученная с пульта. И она выводится каждый раз, когда я нажимаю на кнопку на пульте, но только в том случае, если удалить код ниже, отвечающий за зажигание 1 пикселя на ленте (нужно удалить именно strip.show()). Если же код strip.show() не удалять, программа зависает на strip.show(), и причем ничего не выводит в консоль.
Почему так, и как сделать, чтобы и обрабатывалась информация с датчика, выводилась в консоль, и зажигался светодиод?
Вся программа:
#include "Adafruit_NeoPixel.h" //подключаем библиотеку для ленты
#include <NecDecoder.h> //подключаем библиотеку для ИК транзистора
NecDecoder ir;
Adafruit_NeoPixel strip (84, 5, NEO_GRB + NEO_KHZ800);
void setup(){
strip.begin(); //инициализируем объект NeoPixel
strip.show(); //отключаем все пиксели на ленте
strip.setBrightness(50); //указываем яркость (максимум 255)
Serial.begin(9600);
attachInterrupt(0, irIsr, FALLING);
}
void irIsr(){
ir.tick();
}
int mode;
void loop(){
if(ir.available()){ //проверка "если поступили данные на ИК транзистор"
mode = ir.readCommand(); //присваиваем значению переменной значение с ИК транзистора
Serial.println(mode); //выводим в порт значение с ИК транзистора
}
strip.setPixelColor(1, strip.Color(0, 0, 255)); //помечаем 1 пиксел синим цветом
strip.show(); //подаем сигнал на ленту
}
Почему так, и как сделать, чтобы и обрабатывалась информация с датчика, выводилась в консоль, и зажигался светодиод?