diff --git a/app/display/emoji/emoji_16x16.py b/app/display/emoji/emoji_16x16.py index 8eb3482..657341c 100644 --- a/app/display/emoji/emoji_16x16.py +++ b/app/display/emoji/emoji_16x16.py @@ -1,516 +1,30 @@ -# Emoji symbols for LED matrix (16x16) emoji_16x16 = { - # === SMILEYS & EMOTIONS === - 'πŸ˜€': [ # Grinning Face - 0x07E0, - 0x1FF8, - 0x3FFC, - 0x7FFE, - 0x7FFE, - 0xFFFF, - 0xFFFF, - 0xFFFF, - 0xFFFF, - 0xFFFF, - 0x7FFE, - 0x7FFE, - 0x3FFC, - 0x1FF8, - 0x07E0, - 0x0000, - ], - '😊': [ # Smiling Face with Smiling Eyes - 0x07E0, - 0x1FF8, - 0x3FFC, - 0x7FFE, - 0x7C3E, - 0xF81F, - 0xF00F, - 0xF00F, - 0xF00F, - 0xF00F, - 0xF81F, - 0x7C3E, - 0x7FFE, - 0x3FFC, - 0x1FF8, - 0x07E0, - ], - 'πŸ˜‚': [ # Face with Tears of Joy - 0x07E0, - 0x1FF8, - 0x3FFC, - 0x7FFE, - 0x7C3E, - 0xF99F, - 0xF3CF, - 0xF3CF, - 0xF3CF, - 0xF3CF, - 0xF99F, - 0x7C3E, - 0x7FFE, - 0x3FFC, - 0x1FF8, - 0x07E0, - ], - '😍': [ # Smiling Face with Heart-Eyes - 0x07E0, - 0x1FF8, - 0x3FFC, - 0x7FFE, - 0x7C3E, - 0xF81F, - 0xF3CF, - 0xE7E7, - 0xE7E7, - 0xF3CF, - 0xF81F, - 0x7C3E, - 0x7FFE, - 0x3FFC, - 0x1FF8, - 0x07E0, - ], - '😎': [ # Smiling Face with Sunglasses - 0x07E0, - 0x1FF8, - 0x3FFC, - 0x7FFE, - 0x7FFE, - 0xFFFF, - 0xF00F, - 0xF00F, - 0xF00F, - 0xF00F, - 0xFFFF, - 0x7FFE, - 0x7FFE, - 0x3FFC, - 0x1FF8, - 0x07E0, - ], - '😒': [ # Crying Face - 0x07E0, - 0x1FF8, - 0x3FFC, - 0x7FFE, - 0x7C3E, - 0xF81F, - 0xF00F, - 0xF3CF, - 0xF3CF, - 0xF00F, - 0xF99F, - 0x7C3E, - 0x7FFE, - 0x3FFC, - 0x1FF8, - 0x07E0, - ], - '😠': [ # Angry Face - 0x07E0, - 0x1FF8, - 0x3FFC, - 0x7FFE, - 0x7C3E, - 0xF81F, - 0xF3CF, - 0xE667, - 0xE667, - 0xF3CF, - 0xF81F, - 0x7C3E, - 0x7FFE, - 0x3FFC, - 0x1FF8, - 0x07E0, - ], - # === HEARTS === - '❀️': [ # Red Heart - 0x0000, - 0x0000, - 0x0C30, - 0x1E78, - 0x3FFC, - 0x7FFE, - 0x7FFE, - 0xFFFE, - 0xFFFC, - 0x7FF8, - 0x7FF0, - 0x3FE0, - 0x1FC0, - 0x0F80, - 0x0700, - 0x0000, - ], - 'πŸ’™': [ # Blue Heart - 0x0000, - 0x0000, - 0x0C30, - 0x1E78, - 0x3FFC, - 0x7FFE, - 0x7FFE, - 0xFFFE, - 0xFFFC, - 0x7FF8, - 0x7FF0, - 0x3FE0, - 0x1FC0, - 0x0F80, - 0x0700, - 0x0000, - ], - # === WEATHER & NATURE === - 'β˜€οΈ': [ # Sun - 0x8001, - 0x4002, - 0x2004, - 0x1188, - 0x0DB0, - 0x07E0, - 0x03C0, - 0xFFFF, - 0xFFFF, - 0x03C0, - 0x07E0, - 0x0DB0, - 0x1188, - 0x2004, - 0x4002, - 0x8001, - ], - 'πŸŒ™': [ # Crescent Moon - 0x0000, - 0x1F80, - 0x3FC0, - 0x7FE0, - 0xFFF0, - 0xFFF8, - 0xFFF8, - 0xFFF0, - 0xFFE0, - 0xFFC0, - 0xFF80, - 0xFF00, - 0xFE00, - 0xFC00, - 0xF800, - 0x0000, - ], - '⭐': [ # Star - 0x0180, - 0x0180, - 0x03C0, - 0x03C0, - 0x07E0, - 0x0FF0, - 0x1FF8, - 0x3FFC, - 0x3FFC, - 0x1FF8, - 0x0FF0, - 0x07E0, - 0x03C0, - 0x03C0, - 0x0180, - 0x0180, - ], - '☁️': [ # Cloud - 0x0000, - 0x0000, - 0x0F00, - 0x1F80, - 0x3FC0, - 0x7FE0, - 0x7FE0, - 0xFFF0, - 0xFFF0, - 0xFFF0, - 0x7FE0, - 0x7FE0, - 0x3FC0, - 0x1F80, - 0x0F00, - 0x0000, - ], - # === TECHNOLOGY === - 'πŸ“±': [ # Mobile Phone - 0xFFFF, - 0x8001, - 0x8001, - 0x9FF9, - 0x9009, - 0x9009, - 0x9009, - 0x9009, - 0x9009, - 0x9009, - 0x9009, - 0x9009, - 0x9FF9, - 0x8001, - 0x8001, - 0xFFFF, - ], - 'πŸ’»': [ # Laptop - 0x0000, - 0x7FFE, - 0x4002, - 0x4002, - 0x4002, - 0x4002, - 0x4002, - 0x4002, - 0x4002, - 0x4002, - 0x4002, - 0x4002, - 0x7FFE, - 0x3FFC, - 0x1FF8, - 0x0000, - ], - 'πŸ”’': [ # Lock - 0x0FC0, - 0x1FE0, - 0x3FF0, - 0x3FF0, - 0x3FF0, - 0x3FF0, - 0x3FF0, - 0x3FF0, - 0x3FF0, - 0x3FF0, - 0x3FF0, - 0x3FF0, - 0x3FF0, - 0x3FF0, - 0x3FF0, - 0x3FF0, - ], - 'πŸ”‘': [ # Key - 0x0000, - 0x0000, - 0x0F00, - 0x1F80, - 0x3FC0, - 0x3FC0, - 0x3FC0, - 0x3FC0, - 0x3FC0, - 0x3FC0, - 0x3FC0, - 0x3FC0, - 0x3FC0, - 0x3FC0, - 0x3FC0, - 0x3FC0, - ], - # === ANIMALS === - '🐱': [ # Cat Face - 0x07E0, - 0x1FF8, - 0x3FFC, - 0x7FFE, - 0x7FFE, - 0x6FF6, - 0x6FF6, - 0x6FF6, - 0x6FF6, - 0x6FF6, - 0x7FFE, - 0x7FFE, - 0x3FFC, - 0x1FF8, - 0x07E0, - 0x0000, - ], - '🐢': [ # Dog Face - 0x07E0, - 0x1FF8, - 0x3FFC, - 0x7FFE, - 0x7FFE, - 0x6FF6, - 0x6FF6, - 0x6FF6, - 0x6FF6, - 0x6FF6, - 0x7FFE, - 0x7FFE, - 0x3FFC, - 0x1FF8, - 0x07E0, - 0x0000, - ], - '🐦': [ # Bird - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - ], - # === FOOD === - 'πŸ•': [ # Pizza - 0x07E0, - 0x1FF8, - 0x3FFC, - 0x7FFE, - 0x7FFE, - 0x7FFE, - 0x7FFE, - 0x7FFE, - 0x7FFE, - 0x7FFE, - 0x7FFE, - 0x7FFE, - 0x3FFC, - 0x1FF8, - 0x07E0, - 0x0000, - ], - '🍎': [ # Red Apple - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - ], - # === VEHICLES === - 'πŸš—': [ # Car - 0x0000, - 0x0000, - 0x0FC0, - 0x1FE0, - 0x3FF0, - 0x3FF0, - 0x3FF0, - 0x3FF0, - 0x3FF0, - 0x3FF0, - 0x3FF0, - 0x3FF0, - 0x1FE0, - 0x0FC0, - 0x0000, - 0x0000, - ], - '✈️': [ # Airplane - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - 0x0000, - ], - # === SPORTS === - '⚽': [ # Soccer Ball - 0x07E0, - 0x1FF8, - 0x3FFC, - 0x7FFE, - 0x7FFE, - 0x7FFE, - 0x7FFE, - 0x7FFE, - 0x7FFE, - 0x7FFE, - 0x7FFE, - 0x7FFE, - 0x3FFC, - 0x1FF8, - 0x07E0, - 0x0000, - ], - 'πŸ€': [ # Basketball - 0x07E0, - 0x1FF8, - 0x3FFC, - 0x7FFE, - 0x7FFE, - 0x7FFE, - 0x7FFE, - 0x7FFE, - 0x7FFE, - 0x7FFE, - 0x7FFE, - 0x7FFE, - 0x3FFC, - 0x1FF8, - 0x07E0, - 0x0000, - ], - # === HOLIDAYS === - 'πŸŽ„': [ # Christmas Tree - 0x0180, - 0x03C0, - 0x03C0, - 0x07E0, - 0x07E0, - 0x0FF0, - 0x0FF0, - 0x1FF8, - 0x1FF8, - 0x3FFC, - 0x3FFC, - 0x03C0, - 0x03C0, - 0x03C0, - 0x03C0, - 0x03C0, - ], - 'πŸŽƒ': [ # Jack-O-Lantern - 0x07E0, - 0x1FF8, - 0x3FFC, - 0x7FFE, - 0x7FFE, - 0x7FFE, - 0x7FFE, - 0x7FFE, - 0x7FFE, - 0x7FFE, - 0x7FFE, - 0x7FFE, - 0x3FFC, - 0x1FF8, - 0x07E0, - 0x0000, - ], + 'β˜€οΈ': [0x8001, 0x4002, 0x2004, 0x1188, 0xDB0, 0x7E0, 0x3C0, 0xFFFF, 0xFFFF, 0x3C0, 0x7E0, 0xDB0, 0x1188, 0x2004, 0x4002, 0x8001], + '☁️': [0x00, 0x00, 0xF0, 0x1F8, 0x3FC, 0x7FE, 0x7FE, 0xFFF, 0xFFF, 0xFFF, 0x7FE, 0x7FE, 0x3FC, 0x1F8, 0xF0, 0x00], + '⚽': [0x3F0, 0xFFC, 0x1FFE, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x1FFE, 0xFFC, 0x3F0, 0x00], + '✈️': [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], + '❀️': [0x00, 0x00, 0x618, 0xF3C, 0x1FFE, 0x3FFF, 0x3FFF, 0x7FFF, 0x7FFE, 0x3FFC, 0x3FF8, 0x1FF0, 0xFE0, 0x7C0, 0x380, 0x00], + '⭐': [0x60, 0x60, 0xF0, 0xF0, 0x1F8, 0x3FC, 0x7FE, 0xFFF, 0xFFF, 0x7FE, 0x3FC, 0x1F8, 0xF0, 0xF0, 0x60, 0x60], + 'πŸŒ™': [0x00, 0x3F0, 0x7F8, 0xFFC, 0x1FFE, 0x1FFF, 0x1FFF, 0x1FFE, 0x1FFC, 0x1FF8, 0x1FF0, 0x1FE0, 0x1FC0, 0x1F80, 0x1F00, 0x00], + '🍎': [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], + 'πŸ•': [0x3F0, 0xFFC, 0x1FFE, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x1FFE, 0xFFC, 0x3F0, 0x00], + 'πŸŽƒ': [0x3F0, 0xFFC, 0x1FFE, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x1FFE, 0xFFC, 0x3F0, 0x00], + 'πŸŽ„': [0x60, 0xF0, 0xF0, 0x1F8, 0x1F8, 0x3FC, 0x3FC, 0x7FE, 0x7FE, 0xFFF, 0xFFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0], + 'πŸ€': [0x3F0, 0xFFC, 0x1FFE, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x1FFE, 0xFFC, 0x3F0, 0x00], + '🐦': [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], + '🐱': [0x3F0, 0xFFC, 0x1FFE, 0x3FFF, 0x3FFF, 0x37FB, 0x37FB, 0x37FB, 0x37FB, 0x37FB, 0x3FFF, 0x3FFF, 0x1FFE, 0xFFC, 0x3F0, 0x00], + '🐢': [0x3F0, 0xFFC, 0x1FFE, 0x3FFF, 0x3FFF, 0x37FB, 0x37FB, 0x37FB, 0x37FB, 0x37FB, 0x3FFF, 0x3FFF, 0x1FFE, 0xFFC, 0x3F0, 0x00], + 'πŸ’™': [0x00, 0x00, 0x618, 0xF3C, 0x1FFE, 0x3FFF, 0x3FFF, 0x7FFF, 0x7FFE, 0x3FFC, 0x3FF8, 0x1FF0, 0xFE0, 0x7C0, 0x380, 0x00], + 'πŸ’»': [0x00, 0x3FFF, 0x2001, 0x2001, 0x2001, 0x2001, 0x2001, 0x2001, 0x2001, 0x2001, 0x2001, 0x2001, 0x3FFF, 0x1FFE, 0xFFC, 0x00], + 'πŸ“±': [0xFFFF, 0x8001, 0x8001, 0x9FF9, 0x9009, 0x9009, 0x9009, 0x9009, 0x9009, 0x9009, 0x9009, 0x9009, 0x9FF9, 0x8001, 0x8001, 0xFFFF], + 'πŸ”‘': [0x00, 0x00, 0x3C, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF], + 'πŸ”’': [0xFC, 0x1FE, 0x3FF, 0x3FF, 0x3FF, 0x3FF, 0x3FF, 0x3FF, 0x3FF, 0x3FF, 0x3FF, 0x3FF, 0x3FF, 0x3FF, 0x3FF, 0x3FF], + 'πŸ˜€': [0x7E0, 0x1FF8, 0x3FFC, 0x7FFE, 0x7FFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x7FFE, 0x7FFE, 0x3FFC, 0x1FF8, 0x7E0, 0x00], + 'πŸ˜‚': [0x7E0, 0x1FF8, 0x3FFC, 0x7FFE, 0x7C3E, 0xF99F, 0xF3CF, 0xF3CF, 0xF3CF, 0xF3CF, 0xF99F, 0x7C3E, 0x7FFE, 0x3FFC, 0x1FF8, 0x7E0], + '😊': [0x7E0, 0x1FF8, 0x3FFC, 0x7FFE, 0x7C3E, 0xF81F, 0xF00F, 0xF00F, 0xF00F, 0xF00F, 0xF81F, 0x7C3E, 0x7FFE, 0x3FFC, 0x1FF8, 0x7E0], + '😍': [0x7E0, 0x1FF8, 0x3FFC, 0x7FFE, 0x7C3E, 0xF81F, 0xF3CF, 0xE7E7, 0xE7E7, 0xF3CF, 0xF81F, 0x7C3E, 0x7FFE, 0x3FFC, 0x1FF8, 0x7E0], + '😎': [0x7E0, 0x1FF8, 0x3FFC, 0x7FFE, 0x7FFE, 0xFFFF, 0xF00F, 0xF00F, 0xF00F, 0xF00F, 0xFFFF, 0x7FFE, 0x7FFE, 0x3FFC, 0x1FF8, 0x7E0], + '😠': [0x7E0, 0x1FF8, 0x3FFC, 0x7FFE, 0x7C3E, 0xF81F, 0xF3CF, 0xE667, 0xE667, 0xF3CF, 0xF81F, 0x7C3E, 0x7FFE, 0x3FFC, 0x1FF8, 0x7E0], + '😒': [0x7E0, 0x1FF8, 0x3FFC, 0x7FFE, 0x7C3E, 0xF81F, 0xF00F, 0xF3CF, 0xF3CF, 0xF00F, 0xF99F, 0x7C3E, 0x7FFE, 0x3FFC, 0x1FF8, 0x7E0], + 'πŸš—': [0x00, 0x00, 0xFC, 0x1FE, 0x3FF, 0x3FF, 0x3FF, 0x3FF, 0x3FF, 0x3FF, 0x3FF, 0x3FF, 0x1FE, 0xFC, 0x00, 0x00], } diff --git a/app/display/neopixel_64x64.py b/app/display/neopixel_64x64.py index d71661d..a1eb5a9 100644 --- a/app/display/neopixel_64x64.py +++ b/app/display/neopixel_64x64.py @@ -43,8 +43,9 @@ class NeoPixel_64x64(NeoPixel): self.selected_font = font # HΓΆhe des Fonts, Anzahl der Zeilen fΓΌr jedes Zeichen - # wir holen den Wert aus "A" - self.font_height = len(self.selected_font['A']) + # wir holen den ersten Wert des Fonts + first_char = next(iter(self.selected_font)) + self.font_height = len(self.selected_font[first_char]) print(f'Font set: width: per char; height: {self.font_height}') def set_pixel(self, x, y, color): @@ -110,9 +111,7 @@ class NeoPixel_64x64(NeoPixel): [ # print(xpos, ypos) self.set_pixel(xpos, ypos, GRAY) - for xpos in range( - x, x + char_width - ) # 8 because full with of character representation + for xpos in range(x, x + char_width) # 8 because full with of character representation for ypos in range(y, y + self.font_height) ] @@ -157,9 +156,7 @@ class NeoPixel_64x64(NeoPixel): self.write() - def vertical_floating_text( - self, text, x, color=RAINBOW[0], float_range=3, speed=0.2, duration=10 - ): + def vertical_floating_text(self, text, x, color=RAINBOW[0], float_range=3, speed=0.2, duration=10): """ Vertical floating text animation @@ -190,9 +187,7 @@ class NeoPixel_64x64(NeoPixel): self.write() time.sleep(0.05) - def horizontal_floating_text( - self, text, y, color=RAINBOW[0], float_range=3, speed=0.2, duration=10 - ): + def horizontal_floating_text(self, text, y, color=RAINBOW[0], float_range=3, speed=0.2, duration=10): """ Horizontal floating text animation diff --git a/app/tryout/__init__.py b/app/tryout/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/tryout/emojis.py b/app/tryout/emojis.py new file mode 100644 index 0000000..9f6ffec --- /dev/null +++ b/app/tryout/emojis.py @@ -0,0 +1,17 @@ +import app.utils.colors as colors +import app.display.fonts.fonts_utils as fonts_utils + +from app.display.emoji.emoji_8x8 import emoji_8x8 +from app.display.emoji.emoji_16x16 import emoji_16x16 + + +def emojis_check(display): + display.clear() + + # try emoji + display.set_font(emoji_8x8) + display.write_text('πŸ˜€πŸ˜‚βœ…πŸ˜ŽπŸ’™', 0, 0, color=colors.GREEN) + + # try emoji + display.set_font(emoji_16x16) + display.write_text('πŸŒ™πŸ’™πŸ”‘', 0, 10, color=colors.ORANGE) diff --git a/main.py b/main.py index b37a812..d02fffc 100644 --- a/main.py +++ b/main.py @@ -7,6 +7,7 @@ from app.utils.colors import BLUE, GREEN, ORANGE, RAINBOW, RED, WHITE, YELLOW, G from app.utils.system_load import show_system_load import app.utils.utils as utils import app.display.fonts.fonts_utils as fonts_utils +from app.tryout.emojis import emojis_check from app.web.wlan import Wlan @@ -18,27 +19,6 @@ from app.display.fonts.font_16x16 import font_16x16 display = NeoPixel_64x64() -def emoji_test(): - display.clear() - - # try emoji - display.set_font(emoji_8x8) - display.write_text('πŸ˜€', 0, 0, color=GREEN) - display.write_text('πŸ˜‚', 0, 29) - # display.write_text('βœ…', 0, 38) - # display.write_text('😎', 0, 47, color=RED) - # display.write_text('πŸ’™', 10, 47) - # display.write_text('πŸ’š', 19, 47) - # display.write_text('πŸ’›', 28, 47) - - char_row = 'πŸ˜€' - fonts_utils.shift_letter_right(char_row, emoji_8x8[char_row]) - - # try emoji - display.set_font(emoji_16x16) - display.write_text('πŸŒ™', 0, 10, color=ORANGE) - - def weather_check(test_mode: bool = False): wlan = Wlan('WOKWI-Guest', '12345678') @@ -138,9 +118,9 @@ def bit_arrays(): if __name__ == '__main__': - # emoji_test() - font_test(font_16x16) - # bit_arrays() - # show_system_load() - font_pretty(font_16x16) - # weather_check(test_mode=True) + emojis_check(display) +# font_test(font_16x16) +# bit_arrays() +# show_system_load() +font_pretty(emoji_16x16) +# weather_check(test_mode=True)