pull/1/head
Ondřej Hruška 10 years ago
parent b18243f19c
commit 5fe38bfa83
  1. 1
      pov-led-globe/globe-timed-experimental
  2. 154
      pov-led-globe/globe-timed-experimentalsd/Makefile
  3. 47
      pov-led-globe/globe-timed-experimentalsd/image/README.txt
  4. 321
      pov-led-globe/globe-timed-experimentalsd/image/aliensflip16.h
  5. 321
      pov-led-globe/globe-timed-experimentalsd/image/butt.h
  6. 401
      pov-led-globe/globe-timed-experimentalsd/image/checker3264.h
  7. BIN
      pov-led-globe/globe-timed-experimentalsd/image/checker3264.xcf
  8. 401
      pov-led-globe/globe-timed-experimentalsd/image/checker3264numbers.h
  9. BIN
      pov-led-globe/globe-timed-experimentalsd/image/checker3264numbers.xcf
  10. 73
      pov-led-globe/globe-timed-experimentalsd/image/getbytes.py
  11. 401
      pov-led-globe/globe-timed-experimentalsd/image/globus.h
  12. BIN
      pov-led-globe/globe-timed-experimentalsd/image/globus.xcf
  13. 289
      pov-led-globe/globe-timed-experimentalsd/image/logo16.h
  14. BIN
      pov-led-globe/globe-timed-experimentalsd/image/logo16.xcf
  15. 337
      pov-led-globe/globe-timed-experimentalsd/image/logo32.h
  16. BIN
      pov-led-globe/globe-timed-experimentalsd/image/logo32.xcf
  17. 289
      pov-led-globe/globe-timed-experimentalsd/image/pig.h
  18. 31
      pov-led-globe/globe-timed-experimentalsd/image/pig16.h
  19. BIN
      pov-led-globe/globe-timed-experimentalsd/image/pig16.xcf
  20. 289
      pov-led-globe/globe-timed-experimentalsd/image/snowflake.h
  21. BIN
      pov-led-globe/globe-timed-experimentalsd/image/snowflake.xcf
  22. BIN
      pov-led-globe/globe-timed-experimentalsd/image/some-aliens.xcf
  23. 289
      pov-led-globe/globe-timed-experimentalsd/image/test_narrow.h
  24. BIN
      pov-led-globe/globe-timed-experimentalsd/image/test_narrow.xcf
  25. 305
      pov-led-globe/globe-timed-experimentalsd/image/test_wide.h
  26. BIN
      pov-led-globe/globe-timed-experimentalsd/image/test_wide.xcf
  27. 49
      pov-led-globe/globe-timed-experimentalsd/image_aliensflip16.h
  28. 71
      pov-led-globe/globe-timed-experimentalsd/image_chk3264.h
  29. 71
      pov-led-globe/globe-timed-experimentalsd/image_chk3264numbers.h
  30. 65
      pov-led-globe/globe-timed-experimentalsd/image_globus32.h
  31. 23
      pov-led-globe/globe-timed-experimentalsd/image_logo16.h
  32. 39
      pov-led-globe/globe-timed-experimentalsd/image_logo32.h
  33. 23
      pov-led-globe/globe-timed-experimentalsd/image_pig16.h
  34. 22
      pov-led-globe/globe-timed-experimentalsd/image_snowflake16.h
  35. 11
      pov-led-globe/globe-timed-experimentalsd/image_test_narrow16.h
  36. 39
      pov-led-globe/globe-timed-experimentalsd/image_test_wide16.h
  37. 212
      pov-led-globe/globe-timed-experimentalsd/main.c
  38. 11
      pov-led-globe/globe-timed-experimentalsd/test_narrow16.h
  39. 14
      pov-led-globe/globe-timed-experimentalsd/utils.h

@ -1 +0,0 @@
Subproject commit 4eaff23a1d463fd916f5a983fd202e0707c12af7

@ -0,0 +1,154 @@
MCU = attiny13
F_CPU = 9600000
LFUSE = 0x7A
HFUSE = 0xFF
EFUSE = 0x00
MAIN = main.c
## If you've split your program into multiple files,
## include the additional .c source (in same directory) here
## (and include the .h files in your foo.c)
LOCAL_SOURCE =
## Here you can link to one more directory (and multiple .c files)
# EXTRA_SOURCE_DIR = ../AVR-Programming-Library/
EXTRA_SOURCE_DIR =
EXTRA_SOURCE_FILES =
##########------------------------------------------------------##########
########## Programmer Defaults ##########
########## Set up once, then forget about it ##########
########## (Can override. See bottom of file.) ##########
##########------------------------------------------------------##########
PROGRAMMER_TYPE = dragon_isp
PROGRAMMER_ARGS =
##########------------------------------------------------------##########
########## Makefile Magic! ##########
########## Summary: ##########
########## We want a .hex file ##########
########## Compile source files into .elf ##########
########## Convert .elf file into .hex ##########
########## You shouldn't need to edit below. ##########
##########------------------------------------------------------##########
## Defined programs / locations
CC = avr-gcc
OBJCOPY = avr-objcopy
OBJDUMP = avr-objdump
AVRSIZE = avr-size
AVRDUDE = sudo avrdude
## Compilation options, type man avr-gcc if you're curious.
CFLAGS = -std=gnu99 -mmcu=$(MCU) -DF_CPU=$(F_CPU)UL -Os -I. -I$(EXTRA_SOURCE_DIR)
CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
CFLAGS += -Wall -Wstrict-prototypes
CFLAGS += -g2 -ggdb
CFLAGS += -ffunction-sections -fdata-sections -Wl,--gc-sections -Wl,--relax
CFLAGS += -std=gnu99
# CFLAGS += -lm
## CFLAGS += -Wl,-u,vfprintf -lprintf_flt -lm ## for floating-point printf
## CFLAGS += -Wl,-u,vfprintf -lprintf_min ## for smaller printf
## Lump target and extra source files together
TARGET = $(strip $(basename $(MAIN)))
SRC = $(TARGET).c
EXTRA_SOURCE = $(addprefix $(EXTRA_SOURCE_DIR), $(EXTRA_SOURCE_FILES))
SRC += $(EXTRA_SOURCE)
SRC += $(LOCAL_SOURCE)
## List of all header files
HEADERS = $(SRC:.c=.h)
## For every .c file, compile an .o object file
OBJ = $(SRC:.c=.o)
## Generic Makefile targets. (Only .hex file is necessary)
all: $(TARGET).hex size
%.hex: %.elf
$(OBJCOPY) -R .eeprom -O ihex $< $@
%.elf: $(SRC)
$(CC) $(CFLAGS) $(SRC) --output $@
%.eeprom: %.elf
$(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O ihex $< $@
debug:
@echo
@echo "Source files:" $(SRC)
@echo "MCU, F_CPU, BAUD:" $(MCU), $(F_CPU), $(BAUD)
@echo
# Optionally create listing file from .elf
# This creates approximate assembly-language equivalent of your code.
# Useful for debugging time-sensitive bits,
# or making sure the compiler does what you want.
disassemble: $(TARGET).lst
dis: disassemble
eeprom: $(TARGET).eeprom
%.lst: %.elf
$(OBJDUMP) -S $< > $@
# Optionally show how big the resulting program is
size: $(TARGET).elf
$(AVRSIZE) -C --mcu=$(MCU) $(TARGET).elf
clean:
rm -f $(TARGET).elf $(TARGET).hex $(TARGET).obj \
$(TARGET).o $(TARGET).d $(TARGET).eep $(TARGET).lst \
$(TARGET).lss $(TARGET).sym $(TARGET).map $(TARGET)~ \
$(TARGET).eeprom
squeaky_clean:
rm -f *.elf *.hex *.obj *.o *.d *.eep *.lst *.lss *.sym *.map *~
##########------------------------------------------------------##########
########## Programmer-specific details ##########
########## Flashing code to AVR using avrdude ##########
##########------------------------------------------------------##########
flash: $(TARGET).hex
$(AVRDUDE) -c $(PROGRAMMER_TYPE) -p $(MCU) $(PROGRAMMER_ARGS) -U flash:w:$<
flash_eeprom: $(TARGET).eeprom
$(AVRDUDE) -c $(PROGRAMMER_TYPE) -p $(MCU) $(PROGRAMMER_ARGS) -U eeprom:w:$<
terminal:
$(AVRDUDE) -c $(PROGRAMMER_TYPE) -p $(MCU) $(PROGRAMMER_ARGS) -nt
flash_dragon_isp: PROGRAMMER_TYPE = dragon_isp
flash_dragon_isp: PROGRAMMER_ARGS =
flash_dragon_isp: flash
##########------------------------------------------------------##########
########## Fuse settings and suitable defaults ##########
##########------------------------------------------------------##########
## Generic
FUSE_STRING = -U lfuse:w:$(LFUSE):m -U hfuse:w:$(HFUSE):m -U efuse:w:$(EFUSE):m
fuses:
$(AVRDUDE) -c $(PROGRAMMER_TYPE) -p $(MCU) \
$(PROGRAMMER_ARGS) $(FUSE_STRING)
show_fuses:
$(AVRDUDE) -c $(PROGRAMMER_TYPE) -p $(MCU) $(PROGRAMMER_ARGS) -nv
## Called with no extra definitions, sets to defaults
set_default_fuses: FUSE_STRING = -U lfuse:w:$(LFUSE):m -U hfuse:w:$(HFUSE):m -U efuse:w:$(EFUSE):m
set_default_fuses: fuses

@ -0,0 +1,47 @@
How to generate image header file
=================================
(intended for Linux - dunno how it works in Windoze)
1. Draw image in Gimp, with height a multiple of 8 (8, 16, 32... - how many
LEDs you have)
2. Set collor mode to indexed (black & white) - and make sure WHITE is where
you want your leds to light up, black where you want dark.
3. Export as C header file (eg. snowflake.h)
Now use the getbytes.py script to transform it:
$ python3 getbytes.py snowflake.h
#define ROWS 2
#define COLS 15
const uint8_t image[COLS][ROWS] PROGMEM = {
{ 0b00000001, 0b11000000 }, // ███
{ 0b00010000, 0b10000100 }, // █ █ █
{ 0b00111000, 0b10001110 }, // ███ █ ███
{ 0b00011101, 0b11001100 }, // ███ ███ ██
{ 0b00001100, 0b10011000 }, // ██ █ ██
{ 0b00000010, 0b10100000 }, // █ █ █
{ 0b01001001, 0b11001001 }, // █ █ ███ █ █
{ 0b11111111, 0b11111111 }, //████████████████
{ 0b01001001, 0b11001001 }, // █ █ ███ █ █
{ 0b00000010, 0b10100000 }, // █ █ █
{ 0b00001100, 0b10010000 }, // ██ █ █
{ 0b00011001, 0b11011100 }, // ██ ███ ███
{ 0b00111000, 0b10001110 }, // ███ █ ███
{ 0b00010000, 0b10000100 }, // █ █ █
{ 0b00000001, 0b11000000 }, // ███
};
That will show you the transformed header file.
To store it:
$ python3 getbytes.py snowflake.h > ../image_snowflake.h
Now, in your main.c file, just include it (remove the old image import).

@ -0,0 +1,321 @@
/* GIMP header image file format (INDEXED): /home/ondra/devel/elektro/avr/projects/c/led-display/image/aliensflip16.h */
static unsigned int width = 42;
static unsigned int height = 16;
/* Call this macro repeatedly. After each use, the pixel data can be extracted */
#define HEADER_PIXEL(data,pixel) {\
pixel[0] = header_data_cmap[(unsigned char)data[0]][0]; \
pixel[1] = header_data_cmap[(unsigned char)data[0]][1]; \
pixel[2] = header_data_cmap[(unsigned char)data[0]][2]; \
data ++; }
static char header_data_cmap[256][3] = {
{ 0, 0, 0},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255}
};
static char header_data[] = {
0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,
0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,
0,0,0,1,0,0,0,1,0,0,
0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,
0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,
0,0,0,0,1,0,1,0,0,0,
0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,
1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,
0,0,0,1,1,1,1,1,0,0,
0,1,0,0,1,0,0,1,0,0,0,1,1,0,1,1,
1,0,1,1,0,0,1,1,0,1,1,1,0,1,1,0,
0,0,1,0,0,1,0,0,1,0,
1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0,1,1,1,1,1,1,1,1,1,
1,0,1,1,1,1,1,0,1,0,1,0,1,1,1,1,
1,1,1,0,1,1,0,1,1,1,1,1,1,1,0,1,
0,1,0,1,1,1,1,1,0,1,
1,0,1,0,0,0,1,0,1,0,1,0,1,0,0,0,
0,0,1,0,1,1,0,1,0,0,0,0,0,1,0,1,
0,1,0,1,0,0,0,1,0,1,
0,0,0,1,0,1,0,0,0,0,0,0,0,1,1,0,
1,1,0,0,0,0,0,0,1,1,0,1,1,0,0,0,
0,0,0,0,1,0,1,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,
1,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,1,0,1,0,0,0,0,0,0,0,1,1,1,
1,1,0,0,0,0,0,0,1,1,1,1,1,0,0,0,
0,0,0,0,1,0,1,0,0,0,
0,0,1,1,1,1,1,0,0,0,0,0,1,0,0,1,
0,0,1,0,0,0,0,1,0,0,1,0,0,1,0,0,
0,0,0,1,1,1,1,1,0,0,
0,0,1,0,1,0,1,0,0,0,0,0,1,1,1,1,
1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,
0,0,0,1,0,1,0,1,0,0,
0,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,
1,1,0,0,0,0,0,0,1,1,1,1,1,0,0,0,
0,0,1,1,1,1,1,1,1,0,
1,1,0,1,0,1,0,1,1,0,0,0,1,0,1,0,
1,0,1,0,0,0,0,1,0,1,0,1,0,1,0,0,
0,1,1,0,1,0,1,0,1,1,
0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,
0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,
0,0,0,0,0,0,0,0,0,0
};

@ -0,0 +1,321 @@
/* GIMP header image file format (INDEXED): /home/ondra/devel/elektro/avr/projects/c/globus/image/butt.h */
static unsigned int width = 46;
static unsigned int height = 16;
/* Call this macro repeatedly. After each use, the pixel data can be extracted */
#define HEADER_PIXEL(data,pixel) {\
pixel[0] = header_data_cmap[(unsigned char)data[0]][0]; \
pixel[1] = header_data_cmap[(unsigned char)data[0]][1]; \
pixel[2] = header_data_cmap[(unsigned char)data[0]][2]; \
data ++; }
static char header_data_cmap[256][3] = {
{ 0, 0, 0},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255}
};
static char header_data[] = {
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,
0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
1,1,0,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,
0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
1,1,0,1,1,1,1,1,1,1,1,1,1,1,
0,1,1,1,0,0,1,1,1,0,0,0,0,1,1,1,
0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,
1,1,0,1,1,0,0,1,1,1,0,0,1,1,
0,1,1,1,0,0,1,1,1,0,0,0,0,1,1,1,
0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,
1,1,0,1,1,0,0,1,1,1,0,0,1,1,
0,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,
0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,
1,1,0,1,1,0,0,1,1,1,0,0,1,1,
0,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,
0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,
0,0,0,0,0,0,0,1,1,1,0,0,0,0,
0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,
0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,
0,0,0,0,0,0,0,1,1,1,0,0,0,0,
0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,
0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,
0,0,0,0,0,0,0,1,1,1,0,0,0,0,
0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,
0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,
0,0,0,0,0,0,0,1,1,1,0,0,0,0,
1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,
1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,
0,0,0,0,0,1,1,1,1,1,1,1,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1
};

@ -0,0 +1,401 @@
/* GIMP header image file format (INDEXED): /home/ondra/devel/avr/projects/c/led-display/image/checker3264.h */
static unsigned int width = 64;
static unsigned int height = 32;
/* Call this macro repeatedly. After each use, the pixel data can be extracted */
#define HEADER_PIXEL(data,pixel) {\
pixel[0] = header_data_cmap[(unsigned char)data[0]][0]; \
pixel[1] = header_data_cmap[(unsigned char)data[0]][1]; \
pixel[2] = header_data_cmap[(unsigned char)data[0]][2]; \
data ++; }
static char header_data_cmap[256][3] = {
{ 0, 0, 0},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255}
};
static char header_data[] = {
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0
};

@ -0,0 +1,401 @@
/* GIMP header image file format (INDEXED): /home/ondra/devel/avr/projects/c/led-display/image/checker3264numbers.h */
static unsigned int width = 64;
static unsigned int height = 32;
/* Call this macro repeatedly. After each use, the pixel data can be extracted */
#define HEADER_PIXEL(data,pixel) {\
pixel[0] = header_data_cmap[(unsigned char)data[0]][0]; \
pixel[1] = header_data_cmap[(unsigned char)data[0]][1]; \
pixel[2] = header_data_cmap[(unsigned char)data[0]][2]; \
data ++; }
static char header_data_cmap[256][3] = {
{ 0, 0, 0},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255}
};
static char header_data[] = {
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,1,0,0,0,0,1,1,0,0,1,1,1,1,
0,0,1,1,0,0,0,0,1,0,1,1,1,1,1,1,
0,0,1,1,1,1,0,0,1,1,0,0,0,1,1,1,
0,1,1,1,1,0,0,0,1,1,0,0,0,0,1,1,
0,0,1,1,0,0,0,0,1,0,1,1,0,1,1,1,
0,1,0,0,1,0,0,0,1,0,1,0,1,1,1,1,
0,0,1,0,0,0,0,0,1,0,1,1,1,1,1,1,
0,1,0,0,1,0,0,0,1,1,0,1,1,0,1,1,
0,0,0,1,0,0,0,0,1,1,1,1,0,1,1,1,
0,0,0,1,1,0,0,0,1,0,0,0,0,1,1,1,
0,0,1,1,1,1,0,0,1,0,1,1,1,1,1,1,
0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,1,
0,0,0,1,0,0,0,0,1,1,1,0,1,1,1,1,
0,0,0,0,1,0,0,0,1,1,1,0,1,1,1,1,
0,0,0,0,0,1,0,0,1,0,0,0,0,1,1,1,
0,0,1,1,1,1,1,0,1,0,1,1,1,0,1,1,
0,0,0,1,0,0,0,0,1,1,0,1,1,1,1,1,
0,1,0,0,1,0,0,0,1,1,1,0,1,1,1,1,
0,1,0,0,0,1,0,0,1,0,1,1,0,1,1,1,
0,0,0,0,1,0,0,0,1,0,1,1,1,0,1,1,
0,0,1,1,1,0,0,0,1,0,0,0,0,1,1,1,
0,1,1,1,0,0,0,0,1,1,1,0,1,1,1,1,
0,0,1,1,1,0,0,0,1,0,0,0,0,1,1,1,
0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,0,
1,0,1,0,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,1,0,1,0,
1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0
};

@ -0,0 +1,73 @@
#!/bin/env python3
import sys
import re
file = open(sys.argv[1], 'r')
src = file.read()
matches = re.search(r'static unsigned int width = (\d*);', src)
width = int(matches.groups(1)[0])
matches = re.search(r'static unsigned int height = (\d*);', src)
height = int(matches.groups(1)[0])
matches = re.search(r'static char header_data_cmap\[\d+\]\[\d+\] = \{\n\s*(\{.*?\}),\s*(\{.*?\})', src, flags=re.S)
s = matches.groups(1)[0]
t = matches.groups(1)[1]
if s == '{255,255,255}' and t == '{ 0, 0, 0}':
inverted=True
elif s == '{ 0, 0, 0}' and t == '{255,255,255}':
inverted=False
else:
raise Exception('Wrong colors')
matches = re.search(r'static char header_data\[\] = \{(.*?)\};', src, flags=re.S)
s = matches.groups(1)[0]
# clean up - leave only numbers
s = re.sub(r'[\s,]', '', s).strip()
s = [s[x:x+width] for x in range(0,width*height,width)]
cols = [''.join(i) for i in zip(*s)]
bc = 0
print("""
#define ROWS {r}
#define COLS {c}
const uint8_t image[COLS][ROWS] PROGMEM = {{""".format(r=int(height/8), c=width))
for c in cols:
# convert colors based on pallete
if inverted:
c=c.translate({
ord('0'): ord('1'),
ord('1'): ord('0')
})
bytz = ['0b{}'.format(c[x:x+8]) for x in range(0,len(c),8)]
print('\t{ ', end="")
print(', '.join(bytz), end="")
print(' }, //', end="")
print(c.translate({
ord('0'): ord(' '),
ord('1'): ord('')
}))
print('};\n')

@ -0,0 +1,401 @@
/* GIMP header image file format (INDEXED): /home/ondra/devel/elektro/avr/projects/c/led-display/image/globus.h */
static unsigned int width = 58;
static unsigned int height = 32;
/* Call this macro repeatedly. After each use, the pixel data can be extracted */
#define HEADER_PIXEL(data,pixel) {\
pixel[0] = header_data_cmap[(unsigned char)data[0]][0]; \
pixel[1] = header_data_cmap[(unsigned char)data[0]][1]; \
pixel[2] = header_data_cmap[(unsigned char)data[0]][2]; \
data ++; }
static char header_data_cmap[256][3] = {
{ 0, 0, 0},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255}
};
static char header_data[] = {
0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,1,0,0,0,0,1,1,1,1,0,0,0,
0,1,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,1,1,1,0,1,0,1,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,1,0,0,0,0,1,1,1,1,1,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,
1,1,1,0,0,0,0,0,0,0,
0,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,
0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,0,1,0,0,0,
0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,0,
0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,
1,0,0,0,0,0,0,1,1,0,0,0,0,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,0,0,
0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,
1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,0,0,
0,1,1,0,1,1,1,1,1,1,1,1,0,0,1,1,
1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,0,1,1,0,0,0,0,
0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,
1,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,0,0,0,1,0,0,0,0,0,
0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,
1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,
1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,
1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,
0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,
0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,0,
0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,
1,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,1,1,1,0,0,1,0,
0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
1,1,1,1,1,0,1,1,1,1,1,1,1,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
1,1,1,1,0,0,1,1,0,0,1,1,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,
1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,
1,1,1,0,0,0,0,1,0,0,0,1,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,
1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,
1,1,1,0,0,0,0,0,0,0,0,0,1,1,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,
1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,
1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,
0,1,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,
1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,
1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,
1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,1,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,
1,0,1,0,0,0,0,0,0,0,0,0,0,1,1,1,
1,1,1,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,
1,1,1,1,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,
0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,
1,1,1,1,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,1,1,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0
};

@ -0,0 +1,289 @@
/* GIMP header image file format (INDEXED): /home/ondra/devel/elektro/avr/projects/c/globus/image/logo16.h */
static unsigned int width = 16;
static unsigned int height = 16;
/* Call this macro repeatedly. After each use, the pixel data can be extracted */
#define HEADER_PIXEL(data,pixel) {\
pixel[0] = header_data_cmap[(unsigned char)data[0]][0]; \
pixel[1] = header_data_cmap[(unsigned char)data[0]][1]; \
pixel[2] = header_data_cmap[(unsigned char)data[0]][2]; \
data ++; }
static char header_data_cmap[256][3] = {
{255,255,255},
{ 0, 0, 0},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255}
};
static char header_data[] = {
1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,
1,1,1,0,1,1,0,1,1,0,1,1,0,1,1,1,
1,1,0,1,0,1,0,1,1,0,1,0,1,0,1,1,
1,0,1,1,1,0,0,1,1,0,0,1,1,1,0,1,
1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,
1,1,1,0,1,1,1,1,1,0,1,1,0,0,0,1,
0,0,0,0,1,1,1,1,0,0,1,0,0,0,1,0,
0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,
0,1,1,0,1,1,0,0,0,0,0,0,1,1,1,0,
0,0,1,0,1,0,0,1,0,0,0,1,0,0,0,0,
1,1,1,0,0,0,1,1,0,0,1,1,0,1,1,1,
1,1,0,0,0,1,1,1,1,1,1,1,1,0,1,1,
1,1,0,0,0,0,0,1,1,0,0,1,1,1,0,1,
1,0,0,0,0,1,1,1,1,0,1,0,1,0,1,1,
1,0,1,1,1,1,0,1,1,0,1,1,0,1,1,1,
1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1
};

@ -0,0 +1,337 @@
/* GIMP header image file format (INDEXED): /home/ondra/devel/elektro/avr/projects/c/globus/image/logo32.h */
static unsigned int width = 32;
static unsigned int height = 32;
/* Call this macro repeatedly. After each use, the pixel data can be extracted */
#define HEADER_PIXEL(data,pixel) {\
pixel[0] = header_data_cmap[(unsigned char)data[0]][0]; \
pixel[1] = header_data_cmap[(unsigned char)data[0]][1]; \
pixel[2] = header_data_cmap[(unsigned char)data[0]][2]; \
data ++; }
static char header_data_cmap[256][3] = {
{ 0, 0, 0},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255}
};
static char header_data[] = {
0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,
1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,
0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,
0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,
0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,
1,1,1,1,1,1,0,0,1,1,0,0,0,0,0,0,
0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,0,
0,1,1,0,0,1,1,1,1,1,1,0,0,0,0,0,
0,0,0,0,1,1,0,0,0,0,0,0,0,1,1,0,
0,1,0,0,0,0,0,1,1,0,1,1,0,0,0,0,
0,0,0,1,1,0,0,0,1,1,0,0,0,1,0,0,
1,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,
0,0,1,1,0,0,0,1,1,1,1,0,0,1,0,0,
1,0,0,0,0,1,1,1,1,0,0,0,1,1,0,0,
0,1,1,1,0,0,1,1,0,0,1,1,1,1,0,1,
0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,0,
0,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,
0,0,0,0,1,0,0,0,1,0,0,0,0,1,1,0,
0,1,1,0,0,0,0,1,1,0,0,0,0,0,1,0,
0,0,0,1,0,0,0,1,1,0,0,0,0,1,1,0,
0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,
0,0,1,0,0,0,1,1,0,0,0,0,0,0,1,0,
1,1,0,0,0,0,0,0,1,1,0,0,1,1,0,0,
0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,
1,1,0,0,0,1,1,1,1,1,1,1,1,0,0,1,
1,1,1,1,0,0,1,1,1,1,1,0,0,0,1,1,
1,0,0,0,1,1,0,0,0,0,1,1,0,0,1,0,
0,0,0,1,1,1,1,1,0,0,0,1,0,0,0,1,
1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,
0,0,0,0,0,1,0,0,0,0,0,1,1,0,0,1,
1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,
0,1,0,0,1,0,0,0,0,0,0,1,1,0,0,1,
1,1,0,0,1,1,1,1,0,0,0,1,1,1,1,1,
1,0,0,1,0,0,0,1,1,1,1,1,0,0,0,1,
1,1,0,0,0,0,0,1,1,0,0,0,0,0,0,1,
0,0,1,1,0,0,1,1,1,0,0,0,0,0,1,1,
1,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,
0,0,1,0,0,0,1,1,0,0,0,0,0,0,1,1,
0,1,0,0,0,0,0,0,1,0,0,0,1,0,1,0,
0,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,
0,1,1,0,0,0,0,1,1,0,0,1,0,1,0,0,
1,1,1,0,0,0,0,1,1,0,0,0,0,1,1,0,
0,1,1,0,0,0,1,1,0,0,0,1,0,0,0,0,
1,0,1,1,1,0,0,0,1,0,0,0,0,1,1,0,
0,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0,
0,0,1,0,1,1,0,0,1,0,0,0,1,1,0,0,
0,0,1,1,0,0,0,1,1,1,1,1,0,0,0,0,
1,1,1,0,0,1,1,1,1,0,0,0,1,1,0,0,
0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,1,
1,0,1,0,0,0,0,0,0,0,0,1,1,0,0,0,
0,0,0,0,1,1,0,0,0,0,0,1,0,1,1,0,
0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,
0,0,0,0,0,1,1,0,0,0,0,1,1,1,0,1,
1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,
0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,
0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,
0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,
1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0
};

@ -0,0 +1,289 @@
/* GIMP header image file format (INDEXED): /home/ondra/devel/elektro/avr/projects/c/globus/image/piig.h */
static unsigned int width = 16;
static unsigned int height = 16;
/* Call this macro repeatedly. After each use, the pixel data can be extracted */
#define HEADER_PIXEL(data,pixel) {\
pixel[0] = header_data_cmap[(unsigned char)data[0]][0]; \
pixel[1] = header_data_cmap[(unsigned char)data[0]][1]; \
pixel[2] = header_data_cmap[(unsigned char)data[0]][2]; \
data ++; }
static char header_data_cmap[256][3] = {
{ 0, 0, 0},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255}
};
static char header_data[] = {
1,1,1,0,0,0,0,1,0,1,0,0,0,0,0,0,
1,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,
1,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,
0,0,1,1,1,1,0,0,0,0,0,1,0,0,0,0,
0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,0,
0,0,1,0,0,0,0,1,1,0,0,1,0,0,0,1,
0,0,1,0,0,0,0,0,0,0,0,1,0,1,0,1,
0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,
0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,
0,0,1,0,0,0,0,0,0,0,0,1,0,1,0,1,
0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,
0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,
0,0,1,0,1,0,1,0,0,1,0,0,0,0,0,0,
0,0,1,0,1,0,1,0,0,1,0,0,0,0,0,0,
0,1,1,0,1,0,1,1,0,1,1,0,0,0,0,0
};

@ -0,0 +1,31 @@
/* GIMP header image file format (RGB): /home/ondra/devel/elektro/avr/projects/c/globus/image/pig16.h */
static unsigned int width = 16;
static unsigned int height = 16;
/* Call this macro repeatedly. After each use, the pixel data can be extracted */
#define HEADER_PIXEL(data,pixel) {\
pixel[0] = (((data[0] - 33) << 2) | ((data[1] - 33) >> 4)); \
pixel[1] = ((((data[1] - 33) & 0xF) << 4) | ((data[2] - 33) >> 2)); \
pixel[2] = ((((data[2] - 33) & 0x3) << 6) | ((data[3] - 33))); \
data += 4; \
}
static char *header_data =
"````````````!!!!!!!!!!!!!!!!````!!!!````!!!!!!!!!!!!!!!!!!!!!!!!"
"````!!!!````!!!!!!!!!!!!````!!!!````!!!!````!!!!!!!!!!!!!!!!!!!!"
"````!!!!!!!!!!!!!!!!!!!!````!!!!````!!!!````!!!!!!!!!!!!!!!!!!!!"
"````````````````````````````````````````````````!!!!!!!!!!!!!!!!"
"!!!!!!!!````````````````!!!!!!!!!!!!!!!!!!!!````!!!!!!!!!!!!!!!!"
"!!!!!!!!````````!!!!!!!!!!!!````````!!!!!!!!!!!!````````````!!!!"
"!!!!!!!!````!!!!!!!!!!!!!!!!````````!!!!!!!!````!!!!!!!!!!!!````"
"!!!!!!!!````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````!!!!````!!!!````"
"!!!!!!!!````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````!!!!!!!!!!!!````"
"!!!!!!!!````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````!!!!!!!!!!!!````"
"!!!!!!!!````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````!!!!````!!!!````"
"!!!!!!!!````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````!!!!!!!!!!!!````"
"!!!!!!!!````````````````````````````````````````````````````!!!!"
"!!!!!!!!````!!!!````!!!!````!!!!!!!!````!!!!!!!!!!!!!!!!!!!!!!!!"
"!!!!!!!!````!!!!````!!!!````!!!!!!!!````!!!!!!!!!!!!!!!!!!!!!!!!"
"!!!!````````!!!!````!!!!````````!!!!````````!!!!!!!!!!!!!!!!!!!!"
"";

@ -0,0 +1,289 @@
/* GIMP header image file format (INDEXED): /home/ondra/devel/elektro/avr/projects/c/globus/image/snowflake.h */
static unsigned int width = 15;
static unsigned int height = 16;
/* Call this macro repeatedly. After each use, the pixel data can be extracted */
#define HEADER_PIXEL(data,pixel) {\
pixel[0] = header_data_cmap[(unsigned char)data[0]][0]; \
pixel[1] = header_data_cmap[(unsigned char)data[0]][1]; \
pixel[2] = header_data_cmap[(unsigned char)data[0]][2]; \
data ++; }
static char header_data_cmap[256][3] = {
{ 0, 0, 0},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255}
};
static char header_data[] = {
0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,
0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,
0,1,1,1,0,0,0,1,0,0,0,1,1,1,0,
0,0,1,1,1,0,1,1,1,0,1,1,1,0,0,
0,0,0,1,1,0,0,1,0,0,1,0,0,0,0,
0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,
1,0,0,1,0,0,1,1,1,0,0,1,0,0,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,0,0,1,0,0,1,1,1,0,0,1,0,0,1,
0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,
0,0,0,0,1,0,0,1,0,0,1,1,0,0,0,
0,0,1,1,1,0,1,1,1,0,0,1,1,0,0,
0,1,1,1,0,0,0,1,0,0,0,1,1,1,0,
0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,
0,0,0,0,0,0,1,1,1,0,0,0,0,0,0
};

@ -0,0 +1,289 @@
/* GIMP header image file format (INDEXED): /home/ondra/devel/avr/projects/c/led-display/image/test_narrow.h */
static unsigned int width = 4;
static unsigned int height = 16;
/* Call this macro repeatedly. After each use, the pixel data can be extracted */
#define HEADER_PIXEL(data,pixel) {\
pixel[0] = header_data_cmap[(unsigned char)data[0]][0]; \
pixel[1] = header_data_cmap[(unsigned char)data[0]][1]; \
pixel[2] = header_data_cmap[(unsigned char)data[0]][2]; \
data ++; }
static char header_data_cmap[256][3] = {
{ 0, 0, 0},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255}
};
static char header_data[] = {
1,1,0,0,
0,0,0,0,
1,1,0,0,
0,0,0,0,
1,1,0,0,
0,0,0,0,
1,1,1,0,
0,1,1,0,
0,1,1,0,
0,1,1,1,
0,0,0,0,
0,0,1,1,
0,0,0,0,
0,0,1,1,
0,0,0,0,
0,0,1,1
};

@ -0,0 +1,305 @@
/* GIMP header image file format (INDEXED): /home/ondra/devel/avr/projects/c/led-display/image/test_wide.h */
static unsigned int width = 32;
static unsigned int height = 16;
/* Call this macro repeatedly. After each use, the pixel data can be extracted */
#define HEADER_PIXEL(data,pixel) {\
pixel[0] = header_data_cmap[(unsigned char)data[0]][0]; \
pixel[1] = header_data_cmap[(unsigned char)data[0]][1]; \
pixel[2] = header_data_cmap[(unsigned char)data[0]][2]; \
data ++; }
static char header_data_cmap[256][3] = {
{ 0, 0, 0},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255},
{255,255,255}
};
static char header_data[] = {
1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,
1,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,1,
1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,
0,1,0,1,0,1,0,1,0,1,1,0,1,0,0,0,
1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,
0,1,0,1,0,1,0,1,0,1,1,0,1,0,0,0,
1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,
0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,1,
1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,
0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,
1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,
1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,
1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,
1,0,1,1,1,1,1,0,1,0,0,0,0,0,0,0,
0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
1,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,
0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,1,
1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,
0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,
1,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,
0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,
1,0,1,1,1,1,1,0,1,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1
};

@ -0,0 +1,49 @@
#define ROWS 2
#define COLS 42
const uint8_t image[COLS][ROWS] PROGMEM = {
{ 0b00001110, 0b00000010 }, // ███ █
{ 0b00011000, 0b00000110 }, // ██ ██
{ 0b10101110, 0b00011100 }, //█ █ ███ ███
{ 0b01101101, 0b00110110 }, // ██ ██ █ ██ ██
{ 0b00111100, 0b00011100 }, // ████ ███
{ 0b01101101, 0b00110110 }, // ██ ██ █ ██ ██
{ 0b10101110, 0b00011100 }, //█ █ ███ ███
{ 0b00011000, 0b00000110 }, // ██ ██
{ 0b00001110, 0b00000010 }, // ███ █
{ 0b00000000, 0b00000000 }, //
{ 0b00001110, 0b00000000 }, // ███
{ 0b00011000, 0b00000001 }, // ██ █
{ 0b10111110, 0b00011010 }, //█ █████ ██ █
{ 0b01101101, 0b00101100 }, // ██ ██ █ █ ██
{ 0b00111101, 0b01101110 }, // ████ █ ██ ███
{ 0b00111100, 0b01111100 }, // ████ █████
{ 0b00111101, 0b01101110 }, // ████ █ ██ ███
{ 0b01101101, 0b00101100 }, // ██ ██ █ █ ██
{ 0b10111110, 0b00011010 }, //█ █████ ██ █
{ 0b00011000, 0b00000001 }, // ██ █
{ 0b00001110, 0b00000000 }, // ███
{ 0b00001110, 0b00000000 }, // ███
{ 0b00011000, 0b00000001 }, // ██ █
{ 0b10111110, 0b00011010 }, //█ █████ ██ █
{ 0b01101101, 0b00101100 }, // ██ ██ █ █ ██
{ 0b00111101, 0b01101110 }, // ████ █ ██ ███
{ 0b00111100, 0b01111100 }, // ████ █████
{ 0b00111101, 0b01101110 }, // ████ █ ██ ███
{ 0b01101101, 0b00101100 }, // ██ ██ █ █ ██
{ 0b10111110, 0b00011010 }, //█ █████ ██ █
{ 0b00011000, 0b00000001 }, // ██ █
{ 0b00001110, 0b00000000 }, // ███
{ 0b00000000, 0b00000000 }, //
{ 0b00001110, 0b00000010 }, // ███ █
{ 0b00011000, 0b00000110 }, // ██ ██
{ 0b10101110, 0b00011100 }, //█ █ ███ ███
{ 0b01101101, 0b00110110 }, // ██ ██ █ ██ ██
{ 0b00111100, 0b00011100 }, // ████ ███
{ 0b01101101, 0b00110110 }, // ██ ██ █ ██ ██
{ 0b10101110, 0b00011100 }, //█ █ ███ ███
{ 0b00011000, 0b00000110 }, // ██ ██
{ 0b00001110, 0b00000010 }, // ███ █
};

@ -0,0 +1,71 @@
#define ROWS 4
#define COLS 64
const uint8_t image[COLS][ROWS] PROGMEM = {
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
};

@ -0,0 +1,71 @@
#define ROWS 4
#define COLS 64
const uint8_t image[COLS][ROWS] PROGMEM = {
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11110001 }, // ████████ ████ █
{ 0b00100010, 0b11111111, 0b00000000, 0b11110101 }, // █ █ ████████ ████ █ █
{ 0b01111110, 0b11111111, 0b00000000, 0b11110001 }, // ██████ ████████ ████ █
{ 0b00000010, 0b11111111, 0b00000000, 0b11111111 }, // █ ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11011101, 0b00000000, 0b11111111, 0b00000000 }, //██ ███ █ ████████
{ 0b10111001, 0b00000000, 0b11111111, 0b00000000 }, //█ ███ █ ████████
{ 0b10110101, 0b00000000, 0b11111111, 0b00000000 }, //█ ██ █ █ ████████
{ 0b11001101, 0b00000000, 0b11111111, 0b00000000 }, //██ ██ █ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00100110, 0b11111111, 0b00000000, 0b11111111 }, // █ ██ ████████ ████████
{ 0b01000010, 0b11111111, 0b00000000, 0b11111111 }, // █ █ ████████ ████████
{ 0b01010010, 0b11111111, 0b00000000, 0b11111111 }, // █ █ █ ████████ ████████
{ 0b00111100, 0b11111111, 0b00000000, 0b11111111 }, // ████ ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b10001111, 0b00000000, 0b11111111, 0b00000000 }, //█ ████ ████████
{ 0b11101111, 0b00000000, 0b11111111, 0b00000000 }, //███ ████ ████████
{ 0b11000001, 0b00000000, 0b11111111, 0b00000000 }, //██ █ ████████
{ 0b11101111, 0b00000000, 0b11111111, 0b00000000 }, //███ ████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000100, 0b11111111, 0b00000000, 0b11111111 }, // █ ████████ ████████
{ 0b01110010, 0b11111111, 0b00000000, 0b11111111 }, // ███ █ ████████ ████████
{ 0b01010010, 0b11111111, 0b00000000, 0b11111111 }, // █ █ █ ████████ ████████
{ 0b01010010, 0b11111111, 0b00000000, 0b11111111 }, // █ █ █ ████████ ████████
{ 0b01011100, 0b11111111, 0b00000000, 0b11111111 }, // █ ███ ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11000001, 0b00000000, 0b11111111, 0b00000000 }, //██ █ ████████
{ 0b10110101, 0b00000000, 0b11111111, 0b00000000 }, //█ ██ █ █ ████████
{ 0b10110101, 0b00000000, 0b11111111, 0b00000000 }, //█ ██ █ █ ████████
{ 0b10110001, 0b00000000, 0b11111111, 0b00000000 }, //█ ██ █ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b01100000, 0b11111111, 0b00000000, 0b11111111 }, // ██ ████████ ████████
{ 0b01001000, 0b11111111, 0b00000000, 0b11111111 }, // █ █ ████████ ████████
{ 0b01001000, 0b11111111, 0b00000000, 0b11111111 }, // █ █ ████████ ████████
{ 0b01111110, 0b11111111, 0b00000000, 0b11111111 }, // ██████ ████████ ████████
{ 0b00001000, 0b11111111, 0b00000000, 0b11111111 }, // █ ████████ ████████
{ 0b00001000, 0b11111111, 0b00000000, 0b11111111 }, // █ ████████ ████████
{ 0b00000000, 0b11111111, 0b00000000, 0b11111111 }, // ████████ ████████
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
{ 0b11100001, 0b00000000, 0b11111111, 0b00000000 }, //███ █ ████████
{ 0b10001101, 0b00000000, 0b11111111, 0b00000000 }, //█ ██ █ ████████
{ 0b10101101, 0b00000000, 0b11111111, 0b00000000 }, //█ █ ██ █ ████████
{ 0b10101101, 0b00000000, 0b11111111, 0b00001110 }, //█ █ ██ █ ████████ ███
{ 0b10000001, 0b00000000, 0b11111111, 0b00001010 }, //█ █ ████████ █ █
{ 0b11111111, 0b00000000, 0b11111111, 0b00001110 }, //████████ ████████ ███
{ 0b11111111, 0b00000000, 0b11111111, 0b00000000 }, //████████ ████████
};

@ -0,0 +1,65 @@
#define ROWS 4
#define COLS 58
const uint8_t image[COLS][ROWS] PROGMEM = {
{ 0b00000000, 0b00000000, 0b00000000, 0b00000000 }, //
{ 0b00001111, 0b10000000, 0b00000000, 0b00000000 }, // █████
{ 0b00001111, 0b10000000, 0b00000000, 0b00000000 }, // █████
{ 0b00001111, 0b00000000, 0b00000000, 0b00000000 }, // ████
{ 0b00001111, 0b10000000, 0b00000000, 0b00000000 }, // █████
{ 0b00000111, 0b10000000, 0b00000000, 0b00000000 }, // ████
{ 0b00001111, 0b11100000, 0b00000000, 0b00000000 }, // ███████
{ 0b00111111, 0b11111000, 0b00000000, 0b00000000 }, // ███████████
{ 0b11111111, 0b11111110, 0b00000000, 0b00000000 }, //███████████████
{ 0b01111111, 0b11111111, 0b00000000, 0b00000000 }, // ███████████████
{ 0b01011111, 0b11111111, 0b10000000, 0b00000000 }, // █ ██████████████
{ 0b11110111, 0b11111111, 0b11000000, 0b00000000 }, //████ █████████████
{ 0b11011111, 0b01111110, 0b01000000, 0b00000000 }, //██ █████ ██████ █
{ 0b01111110, 0b01111110, 0b00100000, 0b00000000 }, // ██████ ██████ █
{ 0b00011001, 0b11111111, 0b00011100, 0b00000000 }, // ██ █████████ ███
{ 0b00001111, 0b11111000, 0b00111110, 0b00011000 }, // █████████ █████ ██
{ 0b00000111, 0b11111000, 0b00111111, 0b11111110 }, // ████████ █████████████
{ 0b00000000, 0b01110000, 0b00111111, 0b11100000 }, // ███ █████████
{ 0b00000000, 0b00100000, 0b00011111, 0b11000000 }, // █ ███████
{ 0b00000000, 0b00000000, 0b00001111, 0b10000000 }, // █████
{ 0b00000000, 0b00000000, 0b00001111, 0b00000000 }, // ████
{ 0b00000000, 0b00000000, 0b00000100, 0b00000000 }, // █
{ 0b00000000, 0b00000000, 0b00000000, 0b00000000 }, //
{ 0b00000010, 0b00000000, 0b00000000, 0b00000000 }, // █
{ 0b00000010, 0b00000000, 0b11000000, 0b00000000 }, // █ ██
{ 0b00000000, 0b00000001, 0b11110000, 0b00000000 }, // █████
{ 0b00000000, 0b01101111, 0b11110000, 0b00000000 }, // ██ ████████
{ 0b00000000, 0b00111111, 0b11110000, 0b00000000 }, // ██████████
{ 0b00000001, 0b10111011, 0b11110000, 0b00000000 }, // ██ ███ ██████
{ 0b00000111, 0b10111001, 0b11111111, 0b10000000 }, // ████ ███ ██████████
{ 0b00001111, 0b01111011, 0b11111111, 0b11000000 }, // ████ ████ ████████████
{ 0b00001111, 0b11111101, 0b11111111, 0b11000000 }, // ██████████ ███████████
{ 0b00000111, 0b11111101, 0b11111111, 0b10000000 }, // █████████ ██████████
{ 0b00000111, 0b11111111, 0b11111110, 0b00000000 }, // ██████████████████
{ 0b00000111, 0b11111111, 0b11110011, 0b00000000 }, // ███████████████ ██
{ 0b00110111, 0b11111111, 0b11000000, 0b00000000 }, // ██ █████████████
{ 0b01001111, 0b11111111, 0b10000000, 0b00000000 }, // █ █████████████
{ 0b00001111, 0b11111111, 0b00000000, 0b00000000 }, // ████████████
{ 0b00011111, 0b11111111, 0b11000000, 0b00000000 }, // ███████████████
{ 0b00011111, 0b11111111, 0b11100000, 0b00000000 }, // ████████████████
{ 0b00111111, 0b11111111, 0b10000000, 0b00000000 }, // ███████████████
{ 0b01111111, 0b11111111, 0b10000000, 0b00000000 }, // ████████████████
{ 0b01111111, 0b11111111, 0b11000000, 0b00000000 }, // █████████████████
{ 0b11111111, 0b11111111, 0b11101000, 0b00000000 }, //███████████████████ █
{ 0b01111111, 0b11111111, 0b10011000, 0b00000000 }, // ████████████████ ██
{ 0b00011111, 0b11111111, 0b00011101, 0b11000000 }, // █████████████ ███ ███
{ 0b00011111, 0b11111111, 0b00000101, 0b11000000 }, // █████████████ █ ███
{ 0b00011111, 0b11111100, 0b00000011, 0b11000000 }, // ███████████ ████
{ 0b00011111, 0b11111110, 0b00000011, 0b11000000 }, // ████████████ ████
{ 0b01011111, 0b10110100, 0b00001011, 0b11100000 }, // █ ██████ ██ █ █ █████
{ 0b00011111, 0b10000000, 0b00000001, 0b11100000 }, // ██████ ████
{ 0b00001111, 0b00000000, 0b00000000, 0b11000000 }, // ████ ██
{ 0b00001111, 0b11000000, 0b00000000, 0b00000000 }, // ██████
{ 0b00000111, 0b10000000, 0b00000000, 0b00000000 }, // ████
{ 0b00001111, 0b00000000, 0b00000000, 0b00000000 }, // ████
{ 0b00000111, 0b00000000, 0b00000000, 0b00000000 }, // ███
{ 0b00000100, 0b00000000, 0b00000000, 0b00000000 }, // █
{ 0b00000000, 0b00000000, 0b00000000, 0b00000000 }, //
};

@ -0,0 +1,23 @@
#define ROWS 2
#define COLS 16
const uint8_t image[COLS][ROWS] PROGMEM = {
{ 0b00000011, 0b11000000 }, // ████
{ 0b00010010, 0b01000110 }, // █ █ █ ██
{ 0b00101010, 0b00011100 }, // █ █ █ ███
{ 0b01000110, 0b11111100 }, // █ ██ ██████
{ 0b00100000, 0b00111100 }, // █ ████
{ 0b00010000, 0b01101000 }, // █ ██ █
{ 0b11110000, 0b11001011 }, //████ ██ █ ██
{ 0b10000001, 0b10000001 }, //█ ██ █
{ 0b10000011, 0b11100001 }, //█ █████ █
{ 0b11110111, 0b11101111 }, //████ ██████ ████
{ 0b00010001, 0b11001000 }, // █ ███ █
{ 0b00100011, 0b10000100 }, // █ ███ █
{ 0b01000111, 0b01100010 }, // █ ███ ██ █
{ 0b00101110, 0b01010100 }, // █ ███ █ █ █
{ 0b00011100, 0b01001000 }, // ███ █ █
{ 0b00001011, 0b11000000 }, // █ ████
};

@ -0,0 +1,39 @@
#define ROWS 4
#define COLS 32
const uint8_t image[COLS][ROWS] PROGMEM = {
{ 0b00000000, 0b00001111, 0b11110000, 0b00000000 }, // ████████
{ 0b00000000, 0b11111100, 0b01111110, 0b00000000 }, // ██████ ██████
{ 0b00000001, 0b11100000, 0b00000111, 0b10000000 }, // ████ ████
{ 0b00000011, 0b10000001, 0b10000001, 0b11000000 }, // ███ ██ ███
{ 0b00000110, 0b00000010, 0b01000000, 0b01100000 }, // ██ █ █ ██
{ 0b00001100, 0b00000110, 0b01000000, 0b00110000 }, // ██ ██ █ ██
{ 0b00011000, 0b10000100, 0b01000011, 0b00011000 }, // ██ █ █ █ ██ ██
{ 0b00110001, 0b11100100, 0b01100111, 0b10001100 }, // ██ ████ █ ██ ████ ██
{ 0b01100011, 0b00111100, 0b00111100, 0b10001100 }, // ██ ██ ████ ████ █ ██
{ 0b01100011, 0b00001100, 0b00000000, 0b10000110 }, // ██ ██ ██ █ ██
{ 0b01000001, 0b10000111, 0b10000001, 0b10000110 }, // █ ██ ████ ██ ██
{ 0b01000000, 0b10000110, 0b01000111, 0b11110110 }, // █ █ ██ █ ███████ ██
{ 0b11000000, 0b10001100, 0b01001000, 0b00010010 }, //██ █ ██ █ █ █ █
{ 0b10000111, 0b10011000, 0b01000100, 0b00110011 }, //█ ████ ██ █ █ ██ ██
{ 0b10001100, 0b01100010, 0b01011000, 0b00100011 }, //█ ██ ██ █ █ ██ █ ██
{ 0b10010000, 0b10000100, 0b01100000, 0b01010011 }, //█ █ █ █ ██ █ █ ██
{ 0b10010011, 0b00000100, 0b01000110, 0b11010011 }, //█ █ ██ █ █ ██ ██ █ ██
{ 0b10011100, 0b00001100, 0b10001100, 0b10010011 }, //█ ███ ██ █ ██ █ █ ██
{ 0b10011000, 0b00010100, 0b00111111, 0b11100011 }, //█ ██ █ █ █████████ ██
{ 0b11010000, 0b00100110, 0b01100010, 0b00000010 }, //██ █ █ ██ ██ █ █
{ 0b01010000, 0b01000010, 0b10000011, 0b00000010 }, // █ █ █ █ █ ██ █
{ 0b01011001, 0b10000011, 0b00000001, 0b10000110 }, // █ ██ ██ ██ ██ ██
{ 0b01101011, 0b00011110, 0b00110000, 0b10000110 }, // ██ █ ██ ████ ██ █ ██
{ 0b00101111, 0b00110110, 0b01111100, 0b10001100 }, // █ ████ ██ ██ █████ █ ██
{ 0b00111101, 0b11100100, 0b01100111, 0b10001100 }, // ████ ████ █ ██ ████ ██
{ 0b00011000, 0b00000100, 0b01000000, 0b00011000 }, // ██ █ █ ██
{ 0b00001100, 0b00000100, 0b01000000, 0b00110000 }, // ██ █ █ ██
{ 0b00000110, 0b00000011, 0b11000000, 0b01100000 }, // ██ ████ ██
{ 0b00000011, 0b10000001, 0b10000001, 0b11000000 }, // ███ ██ ███
{ 0b00000001, 0b11100000, 0b00000111, 0b10000000 }, // ████ ████
{ 0b00000000, 0b01111100, 0b00111110, 0b00000000 }, // █████ █████
{ 0b00000000, 0b00001111, 0b11110000, 0b00000000 }, // ████████
};

@ -0,0 +1,23 @@
#define ROWS 2
#define COLS 16
const uint8_t image[COLS][ROWS] PROGMEM = {
{ 0b11110000, 0b00000000 }, //████
{ 0b10010000, 0b00000001 }, //█ █ █
{ 0b11011111, 0b11111111 }, //██ █████████████
{ 0b00011100, 0b00001000 }, // ███ █
{ 0b00011000, 0b00001111 }, // ██ ████
{ 0b00011000, 0b00001000 }, // ██ █
{ 0b01110000, 0b00001111 }, // ███ ████
{ 0b10010110, 0b00001001 }, //█ █ ██ █ █
{ 0b01110110, 0b00001000 }, // ███ ██ █
{ 0b10010000, 0b00001111 }, //█ █ ████
{ 0b01110000, 0b00001001 }, // ███ █ █
{ 0b00011011, 0b11111000 }, // ██ ███████
{ 0b00000100, 0b00001000 }, // █ █
{ 0b00000101, 0b00101000 }, // █ █ █ █
{ 0b00000100, 0b00001000 }, // █ █
{ 0b00000011, 0b11110000 }, // ██████
};

@ -0,0 +1,22 @@
#define ROWS 2
#define COLS 15
const uint8_t image[COLS][ROWS] PROGMEM = {
{ 0b00000001, 0b11000000 }, // ███
{ 0b00010000, 0b10000100 }, // █ █ █
{ 0b00111000, 0b10001110 }, // ███ █ ███
{ 0b00011101, 0b11001100 }, // ███ ███ ██
{ 0b00001100, 0b10011000 }, // ██ █ ██
{ 0b00000010, 0b10100000 }, // █ █ █
{ 0b01001001, 0b11001001 }, // █ █ ███ █ █
{ 0b11111111, 0b11111111 }, //████████████████
{ 0b01001001, 0b11001001 }, // █ █ ███ █ █
{ 0b00000010, 0b10100000 }, // █ █ █
{ 0b00001100, 0b10010000 }, // ██ █ █
{ 0b00011001, 0b11011100 }, // ██ ███ ███
{ 0b00111000, 0b10001110 }, // ███ █ ███
{ 0b00010000, 0b10000100 }, // █ █ █
{ 0b00000001, 0b11000000 }, // ███
};

@ -0,0 +1,11 @@
#define ROWS 2
#define COLS 4
const uint8_t image[COLS][ROWS] PROGMEM = {
{ 0b10101010, 0b00000000 }, //█ █ █ █
{ 0b10101011, 0b11000000 }, //█ █ █ ████
{ 0b00000011, 0b11010101 }, // ████ █ █ █
{ 0b00000000, 0b01010101 }, // █ █ █ █
};

@ -0,0 +1,39 @@
#define ROWS 2
#define COLS 32
const uint8_t image[COLS][ROWS] PROGMEM = {
{ 0b11111111, 0b11111111 }, //████████████████
{ 0b11000000, 0b00000000 }, //██
{ 0b11100000, 0b00111110 }, //███ █████
{ 0b11100000, 0b00100010 }, //███ █ █
{ 0b01110000, 0b00101010 }, // ███ █ █ █
{ 0b01110000, 0b00100010 }, // ███ █ █
{ 0b00111000, 0b00111110 }, // ███ █████
{ 0b00111000, 0b00000000 }, // ███
{ 0b00011100, 0b00111110 }, // ███ █████
{ 0b00011100, 0b00000000 }, // ███
{ 0b00001110, 0b00011100 }, // ███ ███
{ 0b00001110, 0b00000000 }, // ███
{ 0b00000111, 0b00001000 }, // ███ █
{ 0b00000111, 0b00000000 }, // ███
{ 0b00000011, 0b10001000 }, // ███ █
{ 0b00000011, 0b10000000 }, // ███
{ 0b00000001, 0b11000000 }, // ███
{ 0b00011001, 0b11000000 }, // ██ ███
{ 0b00000000, 0b11100000 }, // ███
{ 0b00011000, 0b11100000 }, // ██ ███
{ 0b00000000, 0b01110000 }, // ███
{ 0b00111100, 0b01110000 }, // ████ ███
{ 0b00000000, 0b00111000 }, // ███
{ 0b01111110, 0b00111000 }, // ██████ ███
{ 0b01000010, 0b00011100 }, // █ █ ███
{ 0b01011010, 0b00011100 }, // █ ██ █ ███
{ 0b01011010, 0b00001110 }, // █ ██ █ ███
{ 0b01000010, 0b00001110 }, // █ █ ███
{ 0b01111110, 0b00000111 }, // ██████ ███
{ 0b00000000, 0b00000111 }, // ███
{ 0b00000000, 0b00000011 }, // ██
{ 0b00100100, 0b10010011 }, // █ █ █ █ ██
};

@ -0,0 +1,212 @@
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <util/delay.h>
#include <stdint.h>
#include <math.h>
#include "utils.h"
// Change to the image you want:
#include "image_chk3264numbers.h"
#define DEBOUNCE_MS 3
/**
* +--u--+
* RST --| |-- Vcc
* TRIGGER : PB3 --| t13 |-- PB2 : CLOCK ->
* N.C. : PB4 --| |-- PB1 : STROBE -> to chained 74HC4094's
* GND --| |-- PB0 : DATA ->
* +-----+
*
* TRIGGER is connected to ground by spring switch
* that gets activated at start of swing to right.
* (It's a metal contact with weight)
*
* LEDs are connected to 74HC4094 outputs by anodes.
* To use cathodes, invert byte in send_byte function.
*/
// pins config
#define PIN_DATA PB0
#define PIN_STROBE PB1
#define PIN_CLOCK PB2
#define PIN_TRIGGER PB3
#define trigger_on() (0 == get_bit(PINB, PIN_TRIGGER))
/** Measure counter 10 usec */
volatile uint16_t measure_counter;
volatile uint8_t waiting_for_trigger = 1;
/** Computed pixel timing */
uint16_t t_light = 50; // 5 ms
uint16_t t_gap = 10; // 1 ms
void measure_start(void);
void measure_stop(void);
void send_byte(uint8_t);
void display(void);
int main(void);
/** Initialize IO ports. */
// void init_io(void) ;
void SECTION(".init8") init_io(void)
{
// set output pins
DDRB = _BV(PIN_DATA) | _BV(PIN_STROBE) | _BV(PIN_CLOCK);
// pullups
PORTB = _BV(PIN_TRIGGER);
// initialize the timer
TCCR0B = _BV(CS00); // prescaler 0
OCR0A = 96; // interrupt every 10 us
sbi(TIMSK0, OCIE0A);
// initialize external interrupt
PCMSK = _BV(PCINT3);
sbi(GIMSK, PCIE); // pin change interrupt enable
}
/** timer 0 interrupt vector */
ISR(PCINT0_vect)
{
if (waiting_for_trigger && trigger_on()) {
measure_stop();
}
}
/** timer 0 interrupt vector */
ISR(TIM0_COMPA_vect)
{
// increment only if not too high
if (waiting_for_trigger && measure_counter < 0xFFFF) {
measure_counter++;
}
}
/** Start counting time of interval */
void
measure_start()
{
measure_counter = 0; // reset the counter
waiting_for_trigger = 1; // start waiting for trigger -> stop.
// enable CompMatch A interrupt
}
/** Stop measuring, compute timing values */
void
measure_stop()
{
uint16_t prec = (measure_counter / (COLS));
t_light = ((prec*7)/100);
t_gap = ((prec*3)/100);
// if (t_light == 0) t_light=25;
// if (t_gap == 0) t_gap=5;
waiting_for_trigger = 0; // stop waiting for trigger (new loop may start)
}
/** send one byte into registers */
void
send_byte(uint8_t b)
{
for (uint8_t i=0; i<8; i++) {
set_bit(PORTB, PIN_DATA, get_bit(b, i));
bus_pulse(PORTB, PIN_CLOCK); // strobe
}
}
/** send STROBE pulse */
void
display()
{
bus_pulse(PORTB, PIN_STROBE);
}
/**
* Main function
*/
int
main()
{
sei();
while (1) {
// while (waiting_for_trigger); // wait for interrupt on TRIGGER
// _delay_ms(DEBOUNCE_MS); // debounce
// while (trigger_on()); // wait for trigger to turn off
// _delay_ms(DEBOUNCE_MS); // debounce
// measure_start();
for(uint8_t i = DEBOUNCE_MS; i > 0; i--) {
while (trigger_on());
_delay_ms(1);
}
measure_start();
for (uint8_t col = 0; col < COLS; col++) {
if(trigger_on()) break; // emergency exit
// +++ light +++
// send light values
for(uint8_t row = ROWS; row > 0; row--) {
send_byte(pgm_read_byte(&image[col][row-1]));
}
// send STROBE
display();
// Wait
for(uint16_t i = t_light; i > 0; i--) {
_delay_us(100);
}
// +++ dark +++
// send zeros
for(uint8_t row = ROWS; row > 0; row--) {
send_byte(0);
}
// send STROBE
display();
// Wait
for(uint16_t i = t_gap; i > 0; i--) {
_delay_us(100);
}
}
}
}

@ -0,0 +1,11 @@
#define ROWS 2
#define COLS 4
const uint8_t image[COLS][ROWS] PROGMEM = {
{ 0b10101010, 0b00000000 }, //█ █ █ █
{ 0b10101011, 0b11000000 }, //█ █ █ ████
{ 0b00000011, 0b11010101 }, // ████ █ █ █
{ 0b00000000, 0b01010101 }, // █ █ █ █
};

@ -0,0 +1,14 @@
#pragma once
// general macros
#define SECTION(pos) __attribute__((naked, used, section(pos)))
// pin manipulation
#define sbi(port, bit) (port) |= _BV(bit)
#define cbi(port, bit) (port) &= ~ _BV(bit)
#define set_bit(port, bit, value) (port) = (((port) & ~_BV(bit)) | ((value) << (bit)))
#define get_bit(port, bit) (((port) >> (bit)) & 1)
#define bus_pulse(port, bit) { sbi(port, bit); cbi(port, bit); }
Loading…
Cancel
Save