Cleanup, reorganization

This commit is contained in:
2014-12-23 01:12:21 +01:00
parent e78d91a900
commit dbdcefea38
223 changed files with 1260 additions and 660 deletions
@@ -0,0 +1,153 @@
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 += -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/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,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,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,65 @@
#define ROWS 4
#define COLS 58
const uint8_t image[COLS][ROWS] PROGMEM = {
{ 0b00000000, 0b00000000, 0b00000000, 0b00000000 }, //
{ 0b00000100, 0b00000000, 0b00000000, 0b00000000 }, // █
{ 0b00000111, 0b00000000, 0b00000000, 0b00000000 }, // ███
{ 0b00001111, 0b00000000, 0b00000000, 0b00000000 }, // ████
{ 0b00000111, 0b10000000, 0b00000000, 0b00000000 }, // ████
{ 0b00001111, 0b11000000, 0b00000000, 0b00000000 }, // ██████
{ 0b00001111, 0b00000000, 0b00000000, 0b11000000 }, // ████ ██
{ 0b00011111, 0b10000000, 0b00000001, 0b11100000 }, // ██████ ████
{ 0b01011111, 0b10110100, 0b00001011, 0b11100000 }, // █ ██████ ██ █ █ █████
{ 0b00011111, 0b11111110, 0b00000011, 0b11000000 }, // ████████████ ████
{ 0b00011111, 0b11111100, 0b00000011, 0b11000000 }, // ███████████ ████
{ 0b00011111, 0b11111111, 0b00000101, 0b11000000 }, // █████████████ █ ███
{ 0b00011111, 0b11111111, 0b00011101, 0b11000000 }, // █████████████ ███ ███
{ 0b01111111, 0b11111111, 0b10011000, 0b00000000 }, // ████████████████ ██
{ 0b11111111, 0b11111111, 0b11101000, 0b00000000 }, //███████████████████ █
{ 0b01111111, 0b11111111, 0b11000000, 0b00000000 }, // █████████████████
{ 0b01111111, 0b11111111, 0b10000000, 0b00000000 }, // ████████████████
{ 0b00111111, 0b11111111, 0b10000000, 0b00000000 }, // ███████████████
{ 0b00011111, 0b11111111, 0b11100000, 0b00000000 }, // ████████████████
{ 0b00011111, 0b11111111, 0b11000000, 0b00000000 }, // ███████████████
{ 0b00001111, 0b11111111, 0b00000000, 0b00000000 }, // ████████████
{ 0b01001111, 0b11111111, 0b10000000, 0b00000000 }, // █ █████████████
{ 0b00110111, 0b11111111, 0b11000000, 0b00000000 }, // ██ █████████████
{ 0b00000111, 0b11111111, 0b11110011, 0b00000000 }, // ███████████████ ██
{ 0b00000111, 0b11111111, 0b11111110, 0b00000000 }, // ██████████████████
{ 0b00000111, 0b11111101, 0b11111111, 0b10000000 }, // █████████ ██████████
{ 0b00001111, 0b11111101, 0b11111111, 0b11000000 }, // ██████████ ███████████
{ 0b00001111, 0b01111011, 0b11111111, 0b11000000 }, // ████ ████ ████████████
{ 0b00000111, 0b10111001, 0b11111111, 0b10000000 }, // ████ ███ ██████████
{ 0b00000001, 0b10111011, 0b11110000, 0b00000000 }, // ██ ███ ██████
{ 0b00000000, 0b00111111, 0b11110000, 0b00000000 }, // ██████████
{ 0b00000000, 0b01101111, 0b11110000, 0b00000000 }, // ██ ████████
{ 0b00000000, 0b00000001, 0b11110000, 0b00000000 }, // █████
{ 0b00000010, 0b00000000, 0b11000000, 0b00000000 }, // █ ██
{ 0b00000010, 0b00000000, 0b00000000, 0b00000000 }, // █
{ 0b00000000, 0b00000000, 0b00000000, 0b00000000 }, //
{ 0b00000000, 0b00000000, 0b00000100, 0b00000000 }, // █
{ 0b00000000, 0b00000000, 0b00001111, 0b00000000 }, // ████
{ 0b00000000, 0b00000000, 0b00001111, 0b10000000 }, // █████
{ 0b00000000, 0b00100000, 0b00011111, 0b11000000 }, // █ ███████
{ 0b00000000, 0b01110000, 0b00111111, 0b11100000 }, // ███ █████████
{ 0b00000111, 0b11111000, 0b00111111, 0b11111110 }, // ████████ █████████████
{ 0b00001111, 0b11111000, 0b00111110, 0b00011000 }, // █████████ █████ ██
{ 0b00011001, 0b11111111, 0b00011100, 0b00000000 }, // ██ █████████ ███
{ 0b01111110, 0b01111110, 0b00100000, 0b00000000 }, // ██████ ██████ █
{ 0b11011111, 0b01111110, 0b01000000, 0b00000000 }, //██ █████ ██████ █
{ 0b11110111, 0b11111111, 0b11000000, 0b00000000 }, //████ █████████████
{ 0b01011111, 0b11111111, 0b10000000, 0b00000000 }, // █ ██████████████
{ 0b01111111, 0b11111111, 0b00000000, 0b00000000 }, // ███████████████
{ 0b11111111, 0b11111110, 0b00000000, 0b00000000 }, //███████████████
{ 0b00111111, 0b11111000, 0b00000000, 0b00000000 }, // ███████████
{ 0b00001111, 0b11100000, 0b00000000, 0b00000000 }, // ███████
{ 0b00000111, 0b10000000, 0b00000000, 0b00000000 }, // ████
{ 0b00001111, 0b10000000, 0b00000000, 0b00000000 }, // █████
{ 0b00001111, 0b00000000, 0b00000000, 0b00000000 }, // ████
{ 0b00001111, 0b10000000, 0b00000000, 0b00000000 }, // █████
{ 0b00001111, 0b10000000, 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,153 @@
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <util/delay.h>
#include <stdint.h>
#include <stdbool.h>
#include "utils.h"
// Change to the image you want:
#include "image_globus32_reverse.h"
/**
* +--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 sendByte function.
*/
// timing config (microseconds)
#define LIGHT_US 1500
#define GAP_US 200
// pins config
#define PIN_DATA PB0
#define PIN_STROBE PB1
#define PIN_CLOCK PB2
#define PIN_TRIGGER PB3
#define increment_wrap(var, max) if ((var) >= (max)) { (var)=0; } else { (var)++; }
#define decrement_wrap(var, max) if ((var) > 0) { (var)--; } else { (var)=(max); }
/** Initialize IO ports. */
void init_io(void) SECTION(".init8");
void 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) | _BV(CS01); // prescaler 0
OCR0A = 150; // interrupt every 1 ms
sbi(TIMSK0, OCIE0A);
// initialize external interrupt
PCMSK = _BV(PCINT3);
sbi(GIMSK, PCIE); // pin change interrupt enable
sei();
}
volatile bool want_stop = 1;
volatile uint8_t col_start = 0;
volatile uint8_t ms_counter = 0;
/** timer 0 interrupt vector */
ISR(PCINT0_vect)
{
want_stop = 1; // request to stop cycle
}
/** timer 0 interrupt vector */
ISR(TIM0_COMPA_vect)
{
if(++ms_counter >= 150) {
ms_counter = 0;
increment_wrap(col_start, COLS - 1);
}
}
/** send one byte into registers */
void sendByte(uint8_t b)
{
for(uint8_t i=0; i<8; i++) {
setBit(PORTB, PIN_DATA, getBit(b, i));
// pulse
busPulse(PORTB, PIN_CLOCK);
}
}
/** send STROBE pulse */
#define display() busPulse(PORTB, PIN_STROBE)
/**
* Main function
*/
int main(void)
{
while(1) {
while(1 == getBit(PINB, PIN_TRIGGER)); // wait for LOW on trigger
_delay_ms(3); // debounce delay
while(0 == getBit(PINB, PIN_TRIGGER)); // wait for trigger to be released
_delay_ms(3); // delay before start of image
want_stop = 0; // clear flag
uint8_t col = col_start;
for(uint8_t i = 0; i < COLS; i++) {
if (want_stop) break;
increment_wrap(col, COLS - 1);
// +++ light +++
for(int8_t row=ROWS-1; row>=0; row--) {
uint8_t b = pgm_read_byte(&image[col][row]);
sendByte(b);
}
display();
// Duration of pixel
_delay_us(LIGHT_US);
// +++ dark +++
for(int8_t row=ROWS-1; row>=0; row--)
sendByte(0);
display();
// Delay between pixels
// (remove to get continuous lines)
_delay_us(GAP_US);
}
}
}
@@ -0,0 +1,153 @@
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <util/delay.h>
#include <stdint.h>
#include <stdbool.h>
#include "utils.h"
// Change to the image you want:
#include "image_globus32.h"
/**
* +--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 sendByte function.
*/
// timing config (microseconds)
#define LIGHT_US 1500
#define GAP_US 200
// pins config
#define PIN_DATA PB0
#define PIN_STROBE PB1
#define PIN_CLOCK PB2
#define PIN_TRIGGER PB3
#define increment_wrap(var, max) if ((var) >= (max)) { (var)=0; } else { (var)++; }
#define decrement_wrap(var, max) if ((var) > 0) { (var)--; } else { (var)=(max); }
/** Initialize IO ports. */
void init_io(void) SECTION(".init8");
void 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) | _BV(CS01); // prescaler 0
OCR0A = 150; // interrupt every 1 ms
sbi(TIMSK0, OCIE0A);
// initialize external interrupt
PCMSK = _BV(PCINT3);
sbi(GIMSK, PCIE); // pin change interrupt enable
sei();
}
volatile bool want_stop = 1;
volatile uint8_t col_start = 0;
volatile uint8_t ms_counter = 0;
/** timer 0 interrupt vector */
ISR(PCINT0_vect)
{
want_stop = 1; // request to stop cycle
}
/** timer 0 interrupt vector */
ISR(TIM0_COMPA_vect)
{
if(++ms_counter >= 150) {
ms_counter = 0;
increment_wrap(col_start, COLS - 1);
}
}
/** send one byte into registers */
void sendByte(uint8_t b)
{
for(uint8_t i=0; i<8; i++) {
setBit(PORTB, PIN_DATA, getBit(b, i));
// pulse
busPulse(PORTB, PIN_CLOCK);
}
}
/** send STROBE pulse */
#define display() busPulse(PORTB, PIN_STROBE)
/**
* Main function
*/
int main(void)
{
while(1) {
while(1 == getBit(PINB, PIN_TRIGGER)); // wait for LOW on trigger
_delay_ms(3); // debounce delay
while(0 == getBit(PINB, PIN_TRIGGER)); // wait for trigger to be released
_delay_ms(3); // delay before start of image
want_stop = 0; // clear flag
uint8_t col = col_start;
for(uint8_t i = 0; i < COLS; i++) {
if (want_stop) break;
increment_wrap(col, COLS - 1);
// +++ light +++
for(int8_t row=ROWS-1; row>=0; row--) {
uint8_t b = pgm_read_byte(&image[col][row]);
sendByte(b);
}
display();
// Duration of pixel
_delay_us(LIGHT_US);
// +++ dark +++
for(int8_t row=ROWS-1; row>=0; row--)
sendByte(0);
display();
// Delay between pixels
// (remove to get continuous lines)
_delay_us(GAP_US);
}
}
}
@@ -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 setBit(port, bit, value) (port) = (((port) & ~_BV(bit)) | ((value) << (bit)))
#define getBit(port, bit) (((port) >> (bit)) & 1)
#define busPulse(port, bit) { sbi(port, bit); cbi(port, bit); }