Привет! У меня есть проект в котором надо по нажатию кнопки менять цвет на светодиодном кольце. Сначала идет эффект бегущей строки в функции load(), а в switch идут цвета, по кнопке происходит инкремент в переменную от которой зависит цвет. Проблема в том, что по нажатию на кнопку ничего не происходит, возможно это из за delay. Как можно это исправить, чтобы сохранить эффект бегущей строки(может mills? но не могу в них разобраться). Заранее спасибо!
Код:
#include <FastLED.h>
#include "Ultrasonic.h"
#include "GyverButton.h"
#define NUM_LEDS 12
#define DATA_PIN 10
CRGB leds[NUM_LEDS];
Ultrasonic ultrasonic(6, 7);
int chooseLight;
byte mode;
GButton lightButt(3);
void setup()
{
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
FastLED.setBrightness(100);
Serial.begin(9600);
chooseLight, mode = 0;
}
void loop()
{
lightButt.tick();
if (lightButt.isPress())
{
Serial.println("pressed!");
chooseLight++;
}
if (chooseLight >= 4) chooseLight = 0;
if (mode >= 5) mode = 0;
Light();
}
void liner()
{
float dist_cm = ultrasonic.Ranging(CM); //Получить дистанцию
Serial.println("Distance to object: ");
Serial.println(dist_cm); //Вывод дистанции
}
void Light()
{
switch(chooseLight)
{
case 0:
load();
break;
case 1:
FastLED.setBrightness(150);
for (byte countLED = 0; countLED < 12; countLED++)
{
leds[countLED] = CRGB::White;
FastLED.show();
}
break;
case 2:
FastLED.setBrightness(25);
for (byte countLED = 0; countLED < 12; countLED++)
{
leds[countLED] = CRGB::Red;
FastLED.show();
}
break;
case 3:
FastLED.setBrightness(100);
for (byte countLED = 0; countLED < 12; countLED++)
{
leds[countLED] = CRGB::Blue;
FastLED.show();
}
break;
}
}
//Эффект загрузки
void load() {
FastLED.setBrightness(50);
for (byte countLED = 0; countLED < 12; countLED++) {
leds[countLED] = CRGB::DarkViolet;
FastLED.show();
delay(100);
}
for (byte countLED = 0; countLED < 12; countLED++) {
leds[countLED] = CRGB::Black;
delay(100);
}
for (byte countLED = 0; countLED < 12; countLED++) {
leds[countLED] = CRGB::DarkViolet;
FastLED.show();
delay(100);
leds[countLED] = CRGB::Black;
}
}