Здравствуйте уважаемые форумчане. Крик души о помощи с написанием кода. Есть в автомобиле штатная подсветка, управляемая по шине данных Lin с головного устройства. Каждая такая подсветка содержит "приёмник с преобразованием в uart" с последующей отправкой в микроконтроллер, который в свою очередь управляет ключами. После ключей стоит RGB светодиод. Задумка такая, чтобы взять с каждой базы транзисторов сигнал и с помощью ардуины управлять лентой ws2812. Нашёл на просторах интернета нужный мне код
https://www.joyta.ru/17593-prostoj-draj ... ravleniem/ и всё бы хорошо, но есть проблема которую не знаю как решить (собственно по этому прошу помощи). При подключении к штатной подсветке, ws2812 начинает постоянно перебирать цвета. Скорее всего проблема в том, что ардуина каждый раз считывая значение с аналоговых входов не суммирует их в один цвет, а пытается отобразить их по отдельности. При включении какого-нибудь цвета, например красного, ws2812 время от времени помаргивает, скорее всего это опять же связано с выше описанной проблемой. Подтягивающие резисторы, проблему не решают.
Код: Выделить всё
#include <Adafruit_NeoPixel.h>
#define PIN 10 //линия данных на ленту
#define NUMPIXELS 30 //колличество диодов в ленте
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int red;
int green;
int blue;
void setup() {
pinMode(A0,INPUT); // вход красного цвета
pinMode(A1,INPUT); // вход зелёного цвета
pinMode(A2,INPUT); // вход синего цвета
pixels.begin();
}
void loop() {
red=map(analogRead(A1),0,1023,0,255);
green=map(analogRead(A2),0,1023,0,255);
blue=map(analogRead(A0),0,1023,0,255);
for(int i=0; i<NUMPIXELS; i++) {
pixels.setPixelColor(i, pixels.Color(red,green,blue));
pixels.show();
}
}