Created
December 22, 2019 20:01
-
-
Save gilliangoud/363aa8b9da3b111c6a5786f23c3ab2ee to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#define FASTLED_ESP32_I2S true | |
//#define FASTLED_ALLOW_INTERRUPTS 0 | |
#define FASTLED_SHOW_CORE 0 | |
#include "src/FASTLED/FastLED.h" | |
#define LED_PIN 13 | |
#define N_LEDS 98 | |
#define BRIGHTNESS 20 //brightness (max 254) | |
#define N_LEDS_SEGMENT 7 | |
#define N_DISPLAYS 2 | |
CRGB leds[N_LEDS]; | |
static CRGB color = CRGB::White; | |
static CRGB colors[2] = {CRGB::White, CRGB::Red}; | |
void setup() { | |
FastLED.addLeds<WS2812B, LED_PIN, GRB>(leds, N_LEDS); | |
FastLED.setBrightness( BRIGHTNESS ); | |
delay(500); | |
} | |
// segments start at 1 | |
void setSegment(int segment, CRGB color) { | |
for(int i = ((segment - 1) * N_LEDS_SEGMENT); i < (segment * N_LEDS_SEGMENT); i++){ | |
leds[i] = color; | |
} | |
} | |
void setSegments(int segments[7], CRGB color){ | |
for(int i = 0; i < N_LEDS_SEGMENT; i++){ | |
if(segments[i] > 0){ | |
setSegment(segments[i], color); | |
} | |
} | |
} | |
// displays start at 0 | |
// segments start at 1 | |
void setNumber(int nDisplay, int number, CRGB color){ | |
int segmentOffset = nDisplay * 7; | |
int number0[7] = {1 + segmentOffset,2 + segmentOffset,3 + segmentOffset,4 + segmentOffset,5 + segmentOffset,6 + segmentOffset,0}; | |
int number1[7] = {3 + segmentOffset,4 + segmentOffset,0,0,0,0,0}; | |
int number2[7] = {2 + segmentOffset,3 + segmentOffset,5 + segmentOffset,6 + segmentOffset,7 + segmentOffset,0,0}; | |
int number3[7] = {2 + segmentOffset,3 + segmentOffset,4 + segmentOffset,5 + segmentOffset,7 + segmentOffset,0,0}; | |
int number4[7] = {1 + segmentOffset,3 + segmentOffset,4 + segmentOffset,7 + segmentOffset,0,0,0}; | |
int number5[7] = {1 + segmentOffset,2 + segmentOffset,4 + segmentOffset,5 + segmentOffset,7 + segmentOffset,0,0}; | |
int number6[7] = {1 + segmentOffset,2 + segmentOffset,4 + segmentOffset,5 + segmentOffset,6 + segmentOffset,7 + segmentOffset,0}; | |
int number7[7] = {2 + segmentOffset,3 + segmentOffset,4 + segmentOffset,0,0,0,0}; | |
int number8[7] = {1 + segmentOffset,2 + segmentOffset,3 + segmentOffset,4 + segmentOffset,5 + segmentOffset,6 + segmentOffset,7 + segmentOffset}; | |
int number9[7] = {1 + segmentOffset,2 + segmentOffset,3 + segmentOffset,4 + segmentOffset,5 + segmentOffset,7 + segmentOffset,0}; | |
switch(number){ | |
case 0: | |
setSegments(number0, color); | |
break; | |
case 1: | |
setSegments(number1, color); | |
break; | |
case 2: | |
setSegments(number2, color); | |
break; | |
case 3: | |
setSegments(number3, color); | |
break; | |
case 4: | |
setSegments(number4, color); | |
break; | |
case 5: | |
setSegments(number5, color); | |
break; | |
case 6: | |
setSegments(number6, color); | |
break; | |
case 7: | |
setSegments(number7, color); | |
break; | |
case 8: | |
setSegments(number8, color); | |
break; | |
case 9: | |
setSegments(number9, color); | |
break; | |
default: | |
break; | |
} | |
} | |
byte countDigits(int num){ | |
byte count=0; | |
while(num){ | |
num=num/10; | |
count++; | |
} | |
return count; | |
} | |
byte getDigit(unsigned int number, int digit) { | |
for (int i=0; i<digit-1; i++) { | |
number /= 10; | |
} | |
return number % 10; | |
} | |
void showNumber(int number, CRGB color[], bool toRight) { | |
FastLED.clear(); | |
int nDigits = countDigits(number); | |
// minus 1 because displays start at 0 | |
int j = 1; | |
for(int i = nDigits; i >= 0; i--){ | |
if(toRight && number < 10) { | |
setNumber(i, getDigit(number, j++), color[i]); | |
} else { | |
setNumber(i - 1, getDigit(number, j++), color[i-1]); | |
} | |
} | |
FastLED.show(); | |
} | |
int noemer = 0; | |
void loop() { | |
delay(1000); | |
showNumber(noemer, colors, true); | |
noemer++; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment