Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Adafruit_NeoPixel.h>
- #define PIN 13
- #define NUM_LEDS 69
- #define WHITE_COLOR 255, 255, 255
- #define BLUE_COLOR 0, 0, 255
- #define RED_COLOR 255, 0, 0
- #define SEGMENT_LENGTH 23
- #define DELAY_MS 100 // Микрозадержка между шагами
- Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);
- bool whiteSegment[NUM_LEDS] = {0};
- bool blueSegment[NUM_LEDS] = {0};
- bool redSegment[NUM_LEDS] = {0};
- void setup() {
- strip.begin();
- strip.show();
- }
- void loop() {
- int whiteSegmentPos = 0;
- int blueSegmentPos = 0;
- int redSegmentPos = 0;
- while (whiteSegmentPos < SEGMENT_LENGTH || blueSegmentPos < SEGMENT_LENGTH || redSegmentPos < SEGMENT_LENGTH) {
- // Обнуляем предыдущий шаг
- for (int i = 0; i < NUM_LEDS; i++) {
- if (whiteSegment[i]) {
- strip.setPixelColor(i, WHITE_COLOR);
- }
- if (blueSegment[i]) {
- strip.setPixelColor(i, BLUE_COLOR);
- }
- if (redSegment[i]) {
- strip.setPixelColor(i, RED_COLOR);
- }
- }
- // Белый сегмент
- if (whiteSegmentPos < SEGMENT_LENGTH) {
- whiteSegment[whiteSegmentPos] = true;
- whiteSegmentPos++;
- }
- // Синий сегмент
- if (blueSegmentPos < SEGMENT_LENGTH) {
- blueSegment[NUM_LEDS / 3 + blueSegmentPos] = true;
- blueSegmentPos++;
- }
- // Красный сегмент
- if (redSegmentPos < SEGMENT_LENGTH) {
- redSegment[2 * NUM_LEDS / 3 + redSegmentPos] = true;
- redSegmentPos++;
- }
- strip.show();
- delay(DELAY_MS);
- }
- // Обнуляем все светодиоды перед следующей анимацией
- for (int i = 0; i < NUM_LEDS; i++) {
- whiteSegment[i] = false;
- blueSegment[i] = false;
- redSegment[i] = false;
- strip.setPixelColor(i, 0, 0, 0);
- }
- strip.show();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement