Здравствуйте, решил сделать подсветку с управлением из приложения. Использовал по большей части код от урока по PyQt. Но вот проблема: есть эффект радуги, для него нужен цикл, если его сделать, то понятное дело, другие задачи выполняться не будут, пока цикл не будет завершен, а мне нужно мониторить serial. О существовании millis я знаю, но не совсем понял как его можно прикрутить. Огромное спасибо тем, кто поможет.
Скрипт:
#include "FastLED.h"
#include "Parser.h"
#include "AsyncStream.h"
#define NUM_LEDS 30
#define PIN 2
CRGB leds[NUM_LEDS];
byte counter;
AsyncStream<50> serial(&Serial, ';');
void setup() {
Serial.begin(115200);
FastLED.addLeds<WS2812, PIN, GRB>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
FastLED.setBrightness(50);
}
void loop() {
parsing();
}
void parsing() {
if (serial.available()) {
Parser data(serial.buf, ','); // отдаём парсеру
int ints[10]; // массив для численных данных
data.parseInts(ints); // парсим в него
switch (ints[0]) {
case 0:
for (int i = 0; i < NUM_LEDS; i++ ) { // от 0 до первой трети
leds[i].setRGB(ints[1], ints[2], ints[3]);
}
FastLED.show();
break;
case 1:
FastLED.setBrightness(ints[1]);
FastLED.show();
break;
case 2:
while(loop){
for (int i = 0; i < NUM_LEDS; i++ ) { // от 0 до первой трети
leds[i] = CHSV(counter + i * 2, 255, 255);
}
counter++; // counter меняется от 0 до 255 (тип данных byte)
FastLED.show();
delay(5); // скорость движения радуги
}
}
}
}