#include <U8g2lib.h>
// Sprites
static const unsigned char SPRITE_alarm [] PROGMEM = {
0xee, 0x00, 0x39, 0x01, 0x45, 0x01, 0x93, 0x01, 0x9a, 0x00, 0x82, 0x00, 0x44, 0x00, 0xba, 0x00};
static const unsigned char SPRITE_book [] PROGMEM = {
0x03, 0x06, 0x8d, 0x05, 0x71, 0x04, 0x25, 0x05, 0xa9, 0x04, 0x25, 0x05, 0xa9, 0x04, 0x23, 0x06, 0xac, 0x01, 0x70, 0x00};
static const unsigned char SPRITE_heart [] PROGMEM = {
0x8c, 0x01, 0xde, 0x03, 0xff, 0x07, 0xff, 0x07, 0xff, 0x07, 0xfe, 0x03, 0xfc, 0x01, 0xf8, 0x00, 0x70, 0x00, 0x20, 0x00};
static const unsigned char SPRITE_color [] PROGMEM = {
0xf8, 0x00, 0xac, 0x01, 0x56, 0x03, 0xab, 0x06, 0x55, 0x05, 0xab, 0x06, 0x55, 0x05, 0xaa, 0x02, 0x54, 0x01, 0xf8, 0x00};
static const unsigned char SPRITE_smily [] PROGMEM = {
0xf8, 0x00, 0x04, 0x01, 0x02, 0x02, 0x89, 0x04, 0x89, 0x04, 0x01, 0x04, 0x89, 0x04, 0x72, 0x02, 0x04, 0x01, 0xf8, 0x00};
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); // initalize the display
// Variables
char lightModTitle [20] = "default";
int stringWidth = 0;
static unsigned char *sprite;
void setup() {
// OLED Setup
u8g2.begin();
}
void loop() {
int lastPreset = 31;
switch (lastPreset) {
case 21:
strcpy (lightModTitle, "Warm");
sprite = SPRITE_book;
break;
case 22:
strcpy (lightModTitle, "Medium Warm");
sprite = SPRITE_book;
break;
case 23:
strcpy (lightModTitle, "Medium Cold");
sprite = SPRITE_book;
break;
case 24:
strcpy (lightModTitle, "Cold");
sprite = SPRITE_book;
break;
case 31:
strcpy (lightModTitle, "Fireplace");
sprite = SPRITE_heart;
break;
case 32:
strcpy (lightModTitle, "Mood - 2");
sprite = SPRITE_heart;
break;
case 33:
strcpy (lightModTitle, "Mood - 3");
sprite = SPRITE_heart;
break;
case 34:
strcpy (lightModTitle, "Mood - 4");
sprite = SPRITE_heart;
break;
case 41:
strcpy (lightModTitle, "Color - 1");
sprite = SPRITE_color;
break;
case 42:
strcpy (lightModTitle, "Color - 2");
sprite = SPRITE_color;
break;
case 43:
strcpy (lightModTitle, "Color - 3");
sprite = SPRITE_color;
break;
case 44:
strcpy (lightModTitle, "Color - 4");
sprite = SPRITE_color;
break;
case 51:
strcpy (lightModTitle, "Trippy - 1");
sprite = SPRITE_smily;
break;
case 52:
strcpy (lightModTitle, "Trippy - 2");
sprite = SPRITE_smily;
break;
case 53:
strcpy (lightModTitle, "Trippy - 3");
sprite = SPRITE_smily;
break;
case 54:
strcpy (lightModTitle, "Trippy - 4");
sprite = SPRITE_smily;
break;
case 99:
strcpy (lightModTitle, "RESTARTED");
break;
}
u8g2.firstPage();
do {
u8g2.setDrawColor(1);
// --- Topline ---
u8g2.setFont(u8g2_font_profont12_tf);
stringWidth = u8g2.getStrWidth(lightModTitle);
u8g2.drawXBMP(54-((stringWidth)/2), 3, 11, 10, sprite);
u8g2.setCursor(71-((stringWidth)/2), 12);
u8g2.print(lightModTitle);
// --- Clock ---
u8g2.setFont(u8g2_font_profont29_tf);
u8g2.setCursor(64-((u8g2.getStrWidth("00:00"))/2), 40);
u8g2.print(13);
u8g2.print(":");
u8g2.print(58);
// --- Subline ---
u8g2.drawXBMP(39, 49, 9, 8, SPRITE_alarm);
u8g2.setFont(u8g2_font_profont12_tf);
u8g2.setCursor(52, 57);
u8g2.print(12);
u8g2.print(":");
u8g2.print(15);
}
while (u8g2.nextPage());
}