#include <Adafruit_NeoPixel.h>
#define LED_PIN 4
#define RING_SIZE 16
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(RING_SIZE, LED_PIN, NEO_GRB + NEO_KHZ800);
void run_ring(uint8_t red, uint8_t green, uint8_t blue, uint16_t interval);
void setup() {
pixels.begin();
Serial.begin(115200);
Serial.println("Starting semaphore v3");
}
void loop() {
run_ring(255, 0, 0, 1000);
run_ring(0, 255, 0, 500);
run_ring(255, 255, 0, 250);
}
void run_ring(uint8_t red, uint8_t green, uint8_t blue, uint16_t interval) {
for (uint8_t i = 0; i < RING_SIZE; i++) {
pixels.setPixelColor(i, red, green, blue);
}
pixels.show();
delay(interval);
for (uint8_t i = 0; i < RING_SIZE - 1; i++) {
pixels.setPixelColor(i, 0, 0, 0);
pixels.show();
delay(interval);
}
pixels.clear();
pixels.show();
}