epd-emit
works like the standard word emit
. It blocks the calling thread, as long as the character is not written to the EPD display. Horizontal (x) position is in pixel (0 to 249), vertical position (y) is in lines, a line consists of 8 pixels. 0, 0 is upper left corner. Larger fonts takes more than one line.
epd-emit ( c -- ) Emits a character (writes a character to the EPD framebuffer) epd-emit? ( -- ? ) EPD ready to get a character (SPI not busy) hook-emit ( -- a ) Hooks for redirecting terminal IO on the fly hook-emit? ( -- a ) epdpos! ( x y -- ) Set EPD cursor position, x horizontal position, pixel resolution, e.g. 0 to 249 for 250x122 displays. y vertical position (line), max. 15 for 250x122 displays. epdpos@ ( -- x y ) Get the current EPD cursor position epdclr ( -- ) Clears the EPD display, sets the cursor to 0, 0 epdfont ( u -- ) Select the font, u: 0 6x8, 1 8x8, 2 8X16 , 3 12X16 epdupdate ( -- ) Update the display (copy the framebuffer to the display) epdstartpart ( -- ) Start the partial update for the EPD display epdupdatepart ( -- ) Update part of the EPD display epdcmd ( a -- ) Send command to the EPD controller SSD1680. First byte contains the length of the command. epdsleep ( -- ) enter deep sleep mode epdwakeup ( -- ) wake up EPD epdpixel! ( ? x y -- ) not implemented yet epdpixel@ ( x y -- ? ) not implemented yet epdcolumn! ( u -- ) Write a column (8 pixels) to the current position. Increment position. Bit 0 on top epdcolumn@ ( -- u ) Read a column (8 pixels) from the current position >epd ( -- a1 a2 ) redirect to EPD *) >term ( a1 a2 -- ) terminate redirection *) *) part of redirection.fs
: epd-hallo ( -- ) hook-emit @ \ save emit hook ['] epd-emit hook-emit ! \ redirect terminal to epd-emit ." Hallo Velo! " cr ." ciao" hook-emit ! \ restore old hook epdupdate ;or even simpler
: epd-hallo ( -- ) >epd \ redirect terminal to epd-emit ." Hallo Velo! " cr ." ciao" >term \ terminate redirection epdupdate ;or on a command line
>epd .( Hallo Velo!) >term epdupdateshow date and time on EPD (see CmsisRtos#How_to_use_Tasks for a background task).
: clock ( -- ) epdclr 3 epdfont >epd .time >term epdupdate \ 2000 osdelay drop -1 -1 -1 alarm! \ set an alarm every second begin wait-alarm \ wait a second 0 0 epdpos! epdstartpart >epd .time >term epdupdatepart key? until key drop ;
SDCS | microSD CS | D10 |
SRCS | RAM CS | NC |
ECS | EPD CS | D9 |
RESET | EPD Reset | D13 |
DC | EPD Data/Command | D11 |
BUSY | EPD Busy | D12 -> A4 |
MOSI | SPI Master Out | D4 |
MISO | SPI Master In | D3 |
CLK | SPI Clock | D2 |
A | Button SW1 | D9 |
B | Button SW2 | D6 |
C | Button SW3 | D5 |
LED1 | LED1 | D12 |
Gate Y | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Source X | 0 1 2 3 4 5 6 7 | 8 9 10 11 12 13 14 15 | 112 113 114 115 116 117 118 119 | 120 121 | ||||||||||||||
Byte | 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
1 | .. | |||||||||||||||||
2 | .. | |||||||||||||||||
.. | ||||||||||||||||||
249 | .. |
Row | Gate Y++ | ||||||
---|---|---|---|---|---|---|---|
Column | 0 | 1 | 2 | ... | 121 | ||
Source X++ | 0 | 0 | 0 | ... | 121 | ||
Source Byte | 0.0 | 0.1 | 0.2 | ... | 15.1 | ||
0 | 0..7 | ||||||
1 | 8..15 | ||||||
2 | 16..23 | ||||||
.. | .. | ||||||
31 | 249..250 |
Row | Source X++ | ||||||
---|---|---|---|---|---|---|---|
Column | 0 | 1 | 2 | ... | 249 | ||
Gate Y-- | 249 | 248 | 247 | ... | 0 | ||
0 | 0..7 | ||||||
1 | 8..15 | ||||||
2 | 16..23 | ||||||
.. | .. | ||||||
15 | 120..121 |
.pbm
P1 # This is an example bitmap of the letter "J" 6 10 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
P4 # This is an example bitmap of the letter "J" 6 10 08080808080888700000
$ convert image.png -rotate -90 -flip image.pbm $ convert image.png -rotate 90 -flop image.xbm $ convert image -colorspace gray -threshold 10% -type bilevel result $ convert image -separate -monochrome result $ convert image.png -separate -monochrome -rotate 90 -flop -negate image.xbm convert image36 -shave 2x2 image32
I | Attachment | History | Action | Size | Date | Who | Comment |
---|---|---|---|---|---|---|---|
jpg | epd_header.jpg | r1 | manage | 38.7 K | 2022-08-14 - 20:58 | PeterSchmid |