Quad Alphanumeric Feather Display
Intro
https://www.adafruit.com/product/3130 Quad 14 segment (plus decimal point) LED display.

Quad Alphanumeric Display and I2C Words

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

Usage

It is easy to redirect the terminal output to the Quad Alphanumeric display, to use the string formatting words.

: 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) >term

show 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
;

Links

HT16K33 Driver

Data sheet https://cdn-shop.adafruit.com/datasheets/ht16K33v110.pdf

Driver SW

https://github.com/adafruit/Adafruit_LED_Backpack/blob/master/Adafruit_LEDBackpack.cpp

Egg Timer

On/Off On/Off On/Off
M 1/x STO
S x^2 ENTER
Start/Stop R/S Pi CLOCK
Clear CALC f

-- Peter Schmid - 2024-12-13

Creative Commons License
This work by Peter Schmid is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Comments

Edit | Attach | Watch | Print version | History: r4 < r3 < r2 < r1 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r1 - 2024-12-13 - PeterSchmid
 
  • Edit
  • Attach
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback