midi и neopixel
- Войдите на сайт для отправки комментариев
Сб, 04/04/2020 - 05:14
Доброго времени суток. Прошу не кидать тапками - только начинаю изучать ардуино. К Arduino Mega подключен Midi in (железный) и 4 RGB ленты (2812B).Цель - нажата нота c синтезатора, который подключен к midi in - загорается одна из лент (для начала просто белым цветом). Нота отжата - лента потухла.
при включении, на ленте горит 6-ой диод постоянно -все остальные диоды работают как задумал. Подскажите, в чем может быть проблема 6 диода.
#include <Adafruit_NeoPixel.h>
#include <MIDI.h>
#define PIN_A 4 // пин ардуино
#define count_led 6 // количество светодиодов
int brightness = 10; //Функция задает общую яркость светодиодной ленты
MIDI_CREATE_DEFAULT_INSTANCE();
Adafruit_NeoPixel strip = Adafruit_NeoPixel(count_led, PIN_A, NEO_GRB + NEO_KHZ800);
void setup() {
MIDI.begin(MIDI_CHANNEL_OMNI);
MIDI.setHandleNoteOn(NoteOnFunction);
MIDI.setHandleNoteOff(NoteOffFunction);
// MIDI.setHandleControlChange(CCFunction);
strip.begin();
}
void loop() {
MIDI.read();
}
void NoteOnFunction(byte channel, byte note, byte velocity)
{
if (note>0)
strip.setPixelColor(5, 255, 255, 255);
strip.setPixelColor(4, 255, 255, 255);
strip.setPixelColor(3, 255, 255, 255);
strip.setPixelColor(2, 255, 255, 255);
strip.setPixelColor(1, 255, 255, 255);
strip.setPixelColor(0, 255, 255, 255);
strip.setBrightness(brightness);
strip.show();
};
void NoteOffFunction(byte channel, byte note, byte velocity){
if (note<0)
strip.setPixelColor(5, 0, 0, 0);
strip.setPixelColor(4, 0, 0, 0);
strip.setPixelColor(3, 0, 0, 0);
strip.setPixelColor(2, 0, 0, 0);
strip.setPixelColor(1, 0, 0, 0);
strip.setPixelColor(0, 0, 0, 0);
strip.setBrightness(brightness);
strip.show();
};
Эти ленты постоянно выходят из строя с такими симптомами. Пробуй на другом отрезке.