This commit is contained in:
parent
81433310f9
commit
a88f7b5ec2
@ -43,3 +43,27 @@ class Clock : public Effect {
|
|||||||
drawNumber(ntpClient.getSeconds(), 8, 8, color_colon);
|
drawNumber(ntpClient.getSeconds(), 8, 8, color_colon);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class SmallClock : public Effect {
|
||||||
|
private:
|
||||||
|
CRGB color_h = CRGB(0xFF0000);
|
||||||
|
CRGB color_m = CRGB(0x00FF00);
|
||||||
|
CRGB color_colon = CRGB(0xFFFF00);
|
||||||
|
|
||||||
|
public:
|
||||||
|
SmallClock() {}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
clear();
|
||||||
|
int h = ntpClient.getHours();
|
||||||
|
drawDigit(numbers3x5, 3, 5, 0, 11, h/10, color_h);
|
||||||
|
drawDigit(numbers3x5, 3, 5, 4, 11, h%10, color_h);
|
||||||
|
int m = ntpClient.getMinutes();
|
||||||
|
drawDigit(numbers3x5, 3, 5, 9, 11, m/10, color_m);
|
||||||
|
drawDigit(numbers3x5, 3, 5, 13, 11, m%10, color_m);
|
||||||
|
if (ntpClient.getSeconds() & 1) {
|
||||||
|
leds[XYsafe(7, 12)] = color_colon;
|
||||||
|
leds[XYsafe(7, 14)] = color_colon;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
@ -36,15 +36,17 @@ void setup() {
|
|||||||
|
|
||||||
Sinematrix3 effect_sinematrix3;
|
Sinematrix3 effect_sinematrix3;
|
||||||
Clock effect_clock;
|
Clock effect_clock;
|
||||||
|
SmallClock effect_small_clock;
|
||||||
Bell effect_bell;
|
Bell effect_bell;
|
||||||
Static effect_off(CRGB(0x000000));
|
Static effect_off(CRGB(0x000000));
|
||||||
Effect* current_effect = &effect_clock;
|
Effect* current_effect = &effect_small_clock;
|
||||||
|
|
||||||
#define NUM_EFFECTS 4
|
#define NUM_EFFECTS 5
|
||||||
EffectEntry effects[NUM_EFFECTS] = {
|
EffectEntry effects[NUM_EFFECTS] = {
|
||||||
{"bell", &effect_bell},
|
{"bell", &effect_bell},
|
||||||
{"sinematrix3", &effect_sinematrix3},
|
{"sinematrix3", &effect_sinematrix3},
|
||||||
{"clock", &effect_clock},
|
{"clock", &effect_clock},
|
||||||
|
{"small_clock", &effect_small_clock},
|
||||||
{"off", &effect_off}
|
{"off", &effect_off}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
59
text.h
59
text.h
@ -1,4 +1,4 @@
|
|||||||
static unsigned char Font5x7[] = {
|
static unsigned char font5x7[] = {
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00,// (space)
|
0x00, 0x00, 0x00, 0x00, 0x00,// (space)
|
||||||
0x00, 0x00, 0x5F, 0x00, 0x00,// !
|
0x00, 0x00, 0x5F, 0x00, 0x00,// !
|
||||||
0x00, 0x07, 0x00, 0x07, 0x00,// "
|
0x00, 0x07, 0x00, 0x07, 0x00,// "
|
||||||
@ -105,40 +105,43 @@ static unsigned char numbers4x7[] = {
|
|||||||
0x18, 0x14, 0x7F, 0x10,// 4
|
0x18, 0x14, 0x7F, 0x10,// 4
|
||||||
0x27, 0x45, 0x45, 0x39,// 5
|
0x27, 0x45, 0x45, 0x39,// 5
|
||||||
0x3C, 0x4A, 0x49, 0x30,// 6
|
0x3C, 0x4A, 0x49, 0x30,// 6
|
||||||
0x01, 0x71, 0x09, 0x05, // 7
|
0x01, 0x71, 0x09, 0x05,// 7
|
||||||
0x36, 0x49, 0x49, 0x36,// 8
|
0x36, 0x49, 0x49, 0x36,// 8
|
||||||
0x06, 0x49, 0x29, 0x1E// 9
|
0x06, 0x49, 0x29, 0x1E // 9
|
||||||
};
|
};
|
||||||
|
|
||||||
unsigned char* Char(unsigned char* font, char c) {
|
static unsigned char numbers3x5[] = {
|
||||||
return &font[(c - 32) * 5];
|
B01110, B10001, B01110, // 0
|
||||||
}
|
B01000, B11111, B00000, // 1
|
||||||
|
B01001, B10011, B01101, // 2
|
||||||
|
B10001, B10101, B01110, // 3
|
||||||
|
B11100, B00100, B11111, // 4
|
||||||
|
B11101, B10101, B10111, // 5
|
||||||
|
B01110, B10101, B10110, // 6
|
||||||
|
B10000, B10011, B11100, // 7
|
||||||
|
B11111, B10101, B11111, // 8
|
||||||
|
B11101, B10101, B11111, // 9
|
||||||
|
};
|
||||||
|
|
||||||
void DrawSprite(unsigned char* sprite, int length, int xOffset, int yOffset, CRGB color) {
|
void drawTextSprite(unsigned char* sprite, int w, int h, int xPos, int yPos, CRGB color) {
|
||||||
// leds[ XYsafe(x, y) ] = CHSV(0, 0, 255);
|
for (byte y=0; y<h; y++) for (byte x=0; x<w; x++) {
|
||||||
for ( byte y = 0; y < 7; y++) {
|
bool on = (sprite[x]>>(h-1-y)&1)*255;
|
||||||
for ( byte x = 0; x < 5; x++) {
|
if (on) leds[XYsafe(x+xPos, y+yPos)] = color;
|
||||||
bool on = (sprite[x] >> y & 1) * 255;
|
|
||||||
if (on) {
|
|
||||||
leds[ XYsafe(x + xOffset, y + yOffset) ] = color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawText(char *text, int x, int y, CRGB color) {
|
void drawChar(unsigned char* font, int w, int h, int x, int y, char c, CRGB color) {
|
||||||
|
unsigned char* sprite = &font[(c-32)*w];
|
||||||
|
drawTextSprite(sprite, w, h, x, y, color);
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawDigit(unsigned char* font, int w, int h, int x, int y, int digit, CRGB color) {
|
||||||
|
unsigned char* sprite = &font[digit*w];
|
||||||
|
drawTextSprite(sprite, w, h, x, y, color);
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawText(char *font, int w, int h, char *text, int x, int y, CRGB color) {
|
||||||
for (int i = 0; i < strlen(text); i++) {
|
for (int i = 0; i < strlen(text); i++) {
|
||||||
DrawSprite(Char(Font5x7, text[i]), 5, x + i * 6, y, color);
|
drawChar(font5x7, 5, 7, x+i*(w+1), y, text[i], color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawTextOneFrame(char *text, int xOffset, int yOffset, CRGB color) {
|
|
||||||
DrawText(text, xOffset, yOffset, color);
|
|
||||||
}
|
|
||||||
|
|
||||||
void DrawNumberOneFrame(uint32_t number, int xOffset, int yOffset, CRGB color) {
|
|
||||||
char buffer[7];
|
|
||||||
//itoa(number,buffer,10);
|
|
||||||
sprintf(buffer, "%02d", number);
|
|
||||||
DrawTextOneFrame(buffer, xOffset, yOffset, color);
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user