#include <FastLED.h>
#define NUM_LEDS 25 // Number of LEDs in your strip
#define DATA_PIN 13 // Data pin for WS2812B LEDs
#define BCD_PIN_A0 A0 // BCD input pin 1 (LSB)
#define BCD_PIN_A1 A1 // BCD input pin 2
#define BCD_PIN_A2 A2 // BCD input pin 3
#define BCD_PIN_A3 A3 // BCD input pin 4 (MSB)
CRGB leds[NUM_LEDS];
int lowBrightness = 10; // Low brightness level
int highBrightness = 240;
void setup() {
FastLED.addLeds<WS2812B, DATA_PIN, BRG>(leds, NUM_LEDS);
pinMode(BCD_PIN_A0, INPUT_PULLUP);
pinMode(BCD_PIN_A1, INPUT_PULLUP);
pinMode(BCD_PIN_A2, INPUT_PULLUP);
pinMode(BCD_PIN_A3, INPUT_PULLUP);
}
void loop() {
int bcd = readBCD();
FastLED.setBrightness(lowBrightness); // Set brightness for inactive "if" cases
updateLEDs(bcd);
FastLED.show();
}
int readBCD() {
int bcd = 0;
bcd |= !digitalRead(BCD_PIN_A0);
bcd |= !digitalRead(BCD_PIN_A1) << 1;
bcd |= !digitalRead(BCD_PIN_A2) << 2;
bcd |= !digitalRead(BCD_PIN_A3) << 3;
return bcd;
}
void updateLEDs(int bcd) {
// Clear all LEDs to blue
fill_solid(leds, NUM_LEDS, CRGB(246, 7, 7));
// Set the specified LEDs to white based on BCD value
if (bcd == 1) {
leds[0] = leds[1] = CRGB(255, 255, 255);
} else if (bcd == 2) {
leds[2] = leds[3] = leds[4] = CRGB(255, 255, 255);
} else if (bcd == 3) {
leds[5] = leds[6] = CRGB(255, 255, 255);
} else if (bcd == 4) {
leds[7] = leds[8] = CRGB(255, 255, 255);
} else if (bcd == 5) {
leds[9] = leds[10] = CRGB(255, 255, 255);
} else if (bcd == 6) {
leds[11] = leds[12] = CRGB(255, 255, 255);
} else if (bcd == 7) {
leds[13] = leds[14] = CRGB(255, 255, 255);
} else if (bcd == 8) {
leds[15] = leds[16] = CRGB(255, 255, 255);
} else if (bcd == 9) {
leds[17] = leds[18] = CRGB(255, 255, 255);
} else if (bcd == 10) {
leds[19] = leds[20] = CRGB(255, 255, 255);
} else if (bcd == 11) {
leds[21] = leds[22] = CRGB(255, 255, 255);
} else if (bcd == 12) {
leds[23] = leds[24] = CRGB(255, 255, 255);
// Set brightness for active "if" case
FastLED.setBrightness(highBrightness);
}
// You can add additional cases or actions as needed.
}