fl { Adafruit 16X32 Matrix PropForth 5.5 2014/06/16 15:55:26 Adafruit 16X32 Matrix [ C B A ] ------------------------- | b31 ...... b0 | [ 0 0 0 ] | upper matrix(8x32) | ... upper matrix(8x32) color[ B1 G1 R1 ] | | [ 1 1 1 ] ------------------------- | b31 ...... b0 | [ 0 0 0 ] | lower matrix(8x32) | ... lower matrix(8x32) color[ B2 G2 R2 ] | | [ 0 0 0 ] ------------------------- ^ ^ output signal side Input signal side } \ Pin 0 wconstant R1 1 wconstant G1 2 wconstant B1 3 wconstant R2 4 wconstant G2 5 wconstant B2 6 wconstant A 7 wconstant B 8 wconstant C 9 wconstant CLK d10 wconstant LE d11 wconstant EN 7 R1 lshift invert constant upper_m \ mask bit for upper-matrix 7 R2 lshift invert constant lower_m \ mask bit for lower-matrix 7 A lshift invert constant line_m \ mask bit for line : setup R1 d12 0 do dup pinout 1+ loop drop ; \ Upper matrix \ ( n1 n2 -- ) n1:line number [A B C] n2:color [R1 G1 B1] : upper_matrix setup \ Disable LED-on EN pinhi R1 lshift outa COG@ upper_m and or outa COG! A lshift outa COG@ line_m and or outa COG! \ Enable LED-on EN pinlo \ clock out CLK pinhi CLK pinlo \ Clear [R1 G1 B1] outa COG@ upper_m and outa COG! \ Latch enable LE pinhi LE pinlo d100 delms \ Clock out 31 times d31 0 do CLK pinhi CLK pinlo LE pinhi LE pinlo 5 delms loop EN pinhi ; \ Lower matrix \ ( n1 n2 -- ) n1:line number [A B C] n2:color [R1 G1 B1] : lower_matrix setup \ Disable LED-on EN pinhi R2 lshift outa COG@ lower_m and or outa COG! A lshift outa COG@ line_m and or outa COG! \ Enable LED-on EN pinlo \ clock out CLK pinhi CLK pinlo \ Clear [R1 G1 B1] outa COG@ lower_m and outa COG! \ Latch enable LE pinhi LE pinlo d100 delms \ Clock out 31 times d31 0 do CLK pinhi CLK pinlo LE pinhi LE pinlo 5 delms loop EN pinhi ; : test1 8 0 do 8 1 do j i upper_matrix loop loop 8 0 do 8 1 do j i lower_matrix loop loop ;