quad-emit
works like the standard word emit
. It blocks the calling thread, as long as the character is not written to the Quad Alphanumeric Display
quad-emit ( Char -- ) Emits a character (writes a character to the Quad Alphanumeric display) quad-emit? ( -- Flag ) Quad Alphanumeric display ready to get a character (I2C not busy) hook-emit ( -- a-addr ) Hooks for redirecting terminal IO on the fly hook-emit? ( -- a-addr ) quadpos! ( x -- ) Set Quad Alphanumeric display cursor position, x (column) horizontal position, max. 3 quadpos@ ( -- x ) Get the current Quad Alphanumeric display cursor position quadcmd ( c-addr -- ) Send command to the Quad Alphanumeric display controller SSD1306. First byte contains the length of the command. quadclr ( -- ) Clears the Quad Alphanumeric display display, sets the cursor to 0 I2Cdev ( u -- ) Sets the 7-bit I2C address I2Cput ( c-addr u -- ) c-addr buffer address for the message with lengh u to send I2Cget ( c-addr u -- ) c-addr buffer address for the message to receive I2Cputget ( a1 u1 a2 u2 -- ) a1 buffer address for the message to send, a2 buffer address for the message to receive >quad ( -- addr1 addr2 ) redirect to Quad Alphanumeric display *) >term ( addr1 addr2 -- ) terminate redirection *) *) part of redirection.fs
: quad-hallo ( -- )hook-emit @ \ save emit hook ['] quad-emit hook-emit ! \ redirect terminal to quad-emit ." Hallo Velo! " cr ." ciao" hook-emit ! \ restore old hook ; or even simpler
: quad-hallo ( -- ) >quad \ redirect terminal to quad-emit ." Hallo Velo! " cr ." ciao" >term \ terminate redirection ;or on a command line
>quad .( ELKE) >termshow time on Quad Alphanumeric display (see CmsisRtos#How_to_use_Tasks for a background task).
: clock ( -- ) quadclr -1 -1 -1 alarm! \ set an alarm every second begin wait-alarm \ wait a second 0 0 quadpos! >quad .time >term key? until key drop ;
Start/Stop | Pi |
M | STO |
S | ENTER |
CLOCK | |
CALC | |
f | f |
On | On C |
Start/Stop | R/S |
M- | [x] |
S- | DUP |
FLOAT | |
TERM | |
f | f |
Off | Off |