ESP8266 wled with 24 bit LED ring help

IDE 2’s been around since 2022 yeah

dang, idk how I never knew that…

did the code now work @mr_chef1 ?
dont forget to use the old bootloder settings if you run on nano or Clone in the menue from the device

Serial Monitor gives you then the choice as of "L R B S "
start with B first to set correct levels

the code you sent me unfortunately didn’t work for me, I got it to upload but the LEDs didn’t do anything, I did however get the code worked out and the bike tail light is now ready to be installed on the bike, all I have to do is get all the wires to the right length, zip tie it to my bike (for now), and test it! after that,if it all goes well, I’ll be 3D modeling some housing and maybe see if I could sell it to some people (I like to build things and sell them as I don’t have a job yet, but if this goes really well, maybe it could be my job idk)

oh yeah, and this is the code!

#include <Adafruit_NeoPixel.h>

#define LED_PIN 11 // Digital pin connected to the LED ring
#define LED_COUNT 24 // Number of LEDs in the LED ring

#define RIGHT_BUTTON_PIN 12 // Pin for the right button
#define LEFT_BUTTON_PIN 13 // Pin for the left button

Adafruit_NeoPixel pixels(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);

int Mode = 1; // Mode variable, initialized to 1
int turnSignal = 1; // Turn signal direction variable, initialized to 1

void setup() {
Serial.begin(9600);
pixels.begin();
pixels.show(); // Initialize all pixels to ‘off’

pinMode(RIGHT_BUTTON_PIN, INPUT_PULLUP);
pinMode(LEFT_BUTTON_PIN, INPUT_PULLUP);
}

void loop() {
Serial.println(Mode);
Serial.println(turnSignal);
// Read the state of the right button
if (digitalRead(RIGHT_BUTTON_PIN) == LOW) {
// Increment Mode, ensuring it stays within the range of 1 to 3
Mode++;
if (Mode > 3) {
Mode = 1;
}
// Add any additional functionality here for Mode changes
delay(250); // Debounce delay
}

// Read the state of the left button
if (digitalRead(LEFT_BUTTON_PIN) == LOW) {
// Toggle turnSignal between 1 and 2
turnSignal = (turnSignal == 1) ? 2 : 1;
// Add any additional functionality here for turnSignal changes
delay(250); // Debounce delay
}

// LED display patterns based on Mode and turnSignal
if (Mode == 1) {
standByMode();
} else if (Mode == 2) {
brakesMode();
} else if (Mode == 3) {
turnSignalMode();
}
}

void standByMode() {
// Turn on purple LEDs
pixels.setPixelColor(0, pixels.Color(55, 0, 55)); // LED 1
pixels.setPixelColor(11, pixels.Color(55, 0, 55)); // LED 12
pixels.setPixelColor(12, pixels.Color(55, 0, 55)); // LED 13
pixels.setPixelColor(23, pixels.Color(55, 0, 55)); // LED 24

// Flashing red LEDs for brakes (250ms on, 250ms off)
if (millis() % 500 < 250) { // 250ms on, 250ms off
for (int i = 1; i <= 10; i++) { // LEDs 2-11
pixels.setPixelColor(i, pixels.Color(255, 0, 0)); // Red color
}
} else {
for (int i = 1; i <= 10; i++) { // LEDs 2-11
pixels.setPixelColor(i, pixels.Color(0, 0, 0)); // LEDs off
}
}

// Turn off LEDs for turn signals
for (int i = 13; i <= 22; i++) { // LEDs 14-23
pixels.setPixelColor(i, pixels.Color(0, 0, 0));
}

pixels.show();
}

void brakesMode() {
// Turn on purple LEDs
pixels.setPixelColor(0, pixels.Color(55, 0, 55)); // LED 1
pixels.setPixelColor(11, pixels.Color(55, 0, 55)); // LED 12
pixels.setPixelColor(12, pixels.Color(55, 0, 55)); // LED 13
pixels.setPixelColor(23, pixels.Color(55, 0, 55)); // LED 24

// Solid red LEDs for brakes
for (int i = 1; i <= 10; i++) { // LEDs 2-11
pixels.setPixelColor(i, pixels.Color(255, 0, 0)); // Red color
}

// Turn off LEDs for turn signals
for (int i = 13; i <= 22; i++) { // LEDs 14-23
pixels.setPixelColor(i, pixels.Color(0, 0, 0));
}

pixels.show();
}

void turnSignalMode() {
// Turn on purple LEDs
pixels.setPixelColor(0, pixels.Color(55, 0, 55)); // LED 1
pixels.setPixelColor(11, pixels.Color(55, 0, 55)); // LED 12
pixels.setPixelColor(12, pixels.Color(55, 0, 55)); // LED 13
pixels.setPixelColor(23, pixels.Color(55, 0, 55)); // LED 24

// Flashing red LEDs for brakes (250ms on, 250ms off)
if (millis() % 500 < 250) { // 250ms on, 250ms off
for (int i = 1; i <= 10; i++) { // LEDs 2-11
pixels.setPixelColor(i, pixels.Color(255, 0, 0)); // Red color
}
} else {
for (int i = 1; i <= 10; i++) { // LEDs 2-11
pixels.setPixelColor(i, pixels.Color(0, 0, 0)); // LEDs off
}
}

// Flashing orange LEDs for turn signals (250ms on, 250ms off)
if (millis() % 500 < 250) { // 250ms on, 250ms off
if (turnSignal == 1) { // Left turn signal
for (int i = 18; i <= 22; i++) { // LEDs 19-23
pixels.setPixelColor(i, pixels.Color(255, 55, 0)); // Orange color
}
for (int i = 13; i <= 17; i++) { // LEDs 14-18
pixels.setPixelColor(i, pixels.Color(0, 0, 0)); // LEDs off
}
} else { // Right turn signal
for (int i = 13; i <= 17; i++) { // LEDs 14-18
pixels.setPixelColor(i, pixels.Color(255, 55, 0)); // Orange color
}
for (int i = 18; i <= 22; i++) { // LEDs 19-23
pixels.setPixelColor(i, pixels.Color(0, 0, 0)); // LEDs off
}
}
} else {
if (turnSignal == 1) { // Left turn signal
for (int i = 18; i <= 22; i++) { // LEDs 19-23
pixels.setPixelColor(i, pixels.Color(0, 0, 0)); // LEDs off
}
} else { // Right turn signal
for (int i = 13; i <= 17; i++) { // LEDs 14-18
pixels.setPixelColor(i, pixels.Color(0, 0, 0)); // LEDs off
}
}
}

pixels.show();
}

I’ll be adding stuff as I go but this is really all the code you would need for it

cool
Consider a 8x8 at 5USD can give you mutch more at smaler size
and the WLED will do cool things on this as 2D

also with LEDmapping you can go for view segments

and as you are out of EU you can make it ART Smilie

HAVE fun

Thank you, sounds fun!

Hi your code can be more pro if you define colors and segments to run true not only single
and you shout use CLEAR in the subroutines

pixels.clear(); // Set all pixel colors to 'off'

predefind Colors

//color
uint32_t red = pixels.Color(255, 0,0);
static uint32_t green = pixels.Color(0, 255,0);
//use 
 pixels.setPixelColor(i,green);

SEGMENTS to run thrue like a Error or limply left rigth top down

// segments
int leftpixels[7]={0,1,2,3,4,5,6};
int toppixels[6]={7,8,9,10,11,12};
int rightpixels[6]={13,14,15,16,17,18};
int downpixels[6]={19,20,21,22,23,24};

ule like this

void right(){
  pixels.clear(); // Set all pixel colors to 'off'
  for (int i=0;i<sizeof(rightpixels)/sizeof(int);i++){
    pixels.setPixelColor(rightpixels[i], 0xFFAA00);  
  }
  pixels.show();
  }

@mr_chef1 great work