//Segment Clock Project - YJ
#include <FastLED.h>
#define LED_PIN 7
#define NUM_LEDS 30
CRGB leds[NUM_LEDS];
// : - 7, 8
// 0 - 0, 1, 2, 3, 4, 5 segmentIndex = [1, 1, 1, 1, 1, 1, 0]
// 1 - 1, 2 segmentIndex = [0, 1, 1, 0, 0, 0, 0]
// 2 - 0, 1, 3, 4, 6 segmentIndex = [1, 1, 0, 1, 1, 0, 1]
// 3 - 0, 1, 2, 3, 6 segmentIndex = [1, 1, 1, 1, 0, 0, 1]
// 4 - 1, 2, 5, 6 segmentIndex = [0, 1, 1, 0, 0, 1, 1]
// 5 - 0, 2, 3, 5, 6 segmentIndex = [1, 0, 1, 1, 0, 1, 1]
// 6 - 0, 2, 3, 4, 5, 6 segmentIndex = [1, 0, 1, 1, 1, 1, 1]
// 7 - 0, 1, 2 segmentIndex = [1, 1, 1, 0, 0, 0, 0]
// 8 - 0, 1, 2, 3, 4, 5, 6 segmentIndex = [1, 1, 1, 1, 1, 1, 1]
// 9 - 0, 1, 2, 3, 5, 6 segmentIndex = [1, 1, 1, 1, 0, 1, 1]
int segmentIndex[10][7] = {{1, 1, 1, 1, 1, 1, 0},
{0, 1, 1, 0, 0, 0, 0},
{1, 1, 0, 1, 1, 0, 1},
{1, 1, 1, 1, 0, 0, 1},
{0, 1, 1, 0, 0, 1, 1},
{1, 0, 1, 1, 0, 1, 1},
{1, 0, 1, 1, 1, 1, 1},
{1, 1, 1, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 0, 1, 1}};
int value = 0;
bool numberUpdate = false;
int minuteOnes = 8;
int minuteTens = 0;
int hourOnes = 0;
int hourTens = 1;
//-------------------------------------------------------------------------------------------------------------
void setup() {
FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
// colon always on
FastLED.clear();
leds[14] = CRGB(150, 0, 255);
leds[15] = CRGB(150, 0, 255);
FastLED.show();
}
//-------------------------------------------------------------------------------------------------------------
void loop() {
if (numberUpdate == true) {
// hourTens
for (int i = 0; i < 7; i++) {
if (segmentIndex[hourTens][i] == 1) {
leds[i] = CRGB(150, 0, 255);
FastLED.show();
}
}
// hourOnes
for (int i = 0; i < 7; i++) {
if (segmentIndex[hourOnes][i] == 1) {
leds[i + 7] = CRGB(150, 0, 255);
FastLED.show();
}
}
// minuteTens
for (int i = 0; i < 7; i++) {
if (segmentIndex[minuteTens][i] == 1) {
leds[i + 16] = CRGB(150, 0, 255);
FastLED.show();
}
}
// minuteOnes
for (int i = 0; i < 7; i++) {
if (segmentIndex[minuteOnes][i] == 1) {
leds[i + 23] = CRGB(150, 0, 255);
FastLED.show();
}
}
numberUpdate = false;
}
}