Привет коллеги. Сначала собрал схему на симуляторе всё работает. Собрал на стенде и нарисовалась проблема. При нажатии кнопки загорается цепочка из светодиодов определённого цвета. При отпускании кнопки цепочка не гаснет сразу вся, а поочерёдно каждый светодиод. Как устранить данную траблу. Код прилагается.
C++:
#include <Adafruit_NeoPixel.h>
#define Pin1 10
#define button1 4
#define button2 7
#define button3 8
#define Diody 60
#define led1 11
#define led2 10
#define led3 10
int NUMPIXELS1[]{1,2,3,4,5,6,7,8,9,10};
int NUMPIXELS2[]{7,13,19,25,31,37,43,49,55};
int NUMPIXELS3[]{3,8,15,21,27,33,39,45,51,59};
Adafruit_NeoPixel strip1(Diody,Pin1, NEO_GRB+NEO_KHZ800);
void setup() {
strip1.begin(); // put your setup code here, to run once:
strip1.setBrightness(255);
pinMode(4, INPUT);
pinMode(7, INPUT);
pinMode(8, INPUT);
}
void loop() {
if (digitalRead(4) == HIGH)
{
for(int i=0;i<led1;i++)
{
strip1.setPixelColor(NUMPIXELS1[i],strip1.Color(255,0,0));
strip1.show();
delay(5);
}
}
else
{
for(int i=0;i<led1;i++)
{
strip1.setPixelColor(NUMPIXELS1[i],strip1.Color(255,255,255));
strip1.show();
delay(5);
if (digitalRead(7) == HIGH)
{
for(int i=0;i<led2;i++)
{
strip1.setPixelColor(NUMPIXELS2[i],strip1.Color(0,255,0));
strip1.show();
delay(5);
}
}
else
{
for(int i=0;i<led2;i++)
{
strip1.setPixelColor(NUMPIXELS2[i],strip1.Color(255,255,255));
strip1.show();
delay(5);
if (digitalRead(8) == HIGH)
{
for(int i=0;i<led3;i++)
{
strip1.setPixelColor(NUMPIXELS3[i],strip1.Color(0,0,255));
strip1.show();
delay(5);
}
}
else
{
for(int i=0;i<led3;i++)
{
strip1.setPixelColor(NUMPIXELS3[i],strip1.Color(255,255,255));
strip1.show();
delay(5);
}
}
}
}
}
}
}
Изменено: