Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Just for fun #48

Open
Jos-Ven opened this issue Feb 20, 2019 · 0 comments
Open

Just for fun #48

Jos-Ven opened this issue Feb 20, 2019 · 0 comments

Comments

@Jos-Ven
Copy link

Jos-Ven commented Feb 20, 2019

marker: LedsStrip \ Testing an APA201 ledstrip connected through SPI

\ SPI connections:
\ Name ESP8266 APA102 ledstrip
\ MISO = GPIO 12 \ NOT USED
\ MOSI = GPIO 13 --> DAT
\ CLK = GPIO 14 --> CLK

\ Note for the ESP8266 ESP-12-F:
\ Do not use the SPI connections
\ at GPIO22 GPIO25 and GPIO24 !

4 constant: #Leds \ Number of used leds
0 constant: false -1 constant: true
1 constant: spi_word_size_8bit 1 constant: bus
8 constant: buffer_size 224 constant: PrefixCmd

: .s ( - ) stack-print ;
: tp ( - ) cr .s cr ;
: off ( addr -- ) false swap ! ;
: on ( addr -- ) true swap ! ;
: 4dup ( n1 n2 n3 n4 - n1 n2 n3 n4 n1 n2 n3 n4 ) 2over 2over ;
: freq ( divider count -- freq ) 16 lshift swap 65535 and or ;

: .c ( n - )
dup 10 <
if space space .
else dup 100 <
if space .
else .
then
then space ;

: .c@ ( adr - ) c@ .c ;

1 10 freq constant: spi_freq_div_4m

: init-spi ( - flag )
TRUE 0 ( little endian ) TRUE spi_freq_div_4m 0 ( SPI_MODE0 ) bus
spi-init dup 0= if print: " init-spi FAILED " then ;

struct
1 field: LedCmd \ For 0xE0 and 31 levels of brightness
1 field: LedBlue
1 field: LedGreen
1 field: LedRed
constant: /ledframe

#Leds 2 + /ledframe * constant: /ledstrip

create: &ledstrip /ledstrip allot

: initApa201 ( - flag ) cr print: " Start>" init-spi ;
: >led ( led# - adr ) 1+ /ledframe * &ledstrip + ;

: >led! ( Red Green Blue Cmdlevel led# - )
>led dup >r c!
r@ 1+ c!
r@ 2 + c!
r> 3 + c! ;

: DumpStrip ( - )
cr print: " # Level red green blue"
#Leds 0
do cr i .c space i >led
dup c@ 15 and .c
dup 3 + .c@
dup 2 + .c@
1+ .c@
loop ;

: SetCmd ( Brightness - LedCmd ) PrefixCmd or ;
: ResetStartFrame ( - ) &ledstrip off ;
: SetEndFrame ( - ) #Leds 1+ /ledframe * &ledstrip + 240 over c! 255 swap 1+ c! ;

: .Strip ( - ) \ Writes to the ledstrip over the SPI connection
spi_word_size_8bit
/ledstrip 0 ( ignore output )
&ledstrip bus spi-send drop ;

: FillLeds ( red green blue brightness #Leds FirstLed# - )
ResetStartFrame >r >r SetCmd r> r>
do 4dup i >led!
loop 2drop 2drop
SetEndFrame ;

: StripRed ( - ) 1 0 0 10 #Leds 0 FillLeds ;
: StripBlue ( - ) 0 0 1 10 #Leds 0 FillLeds ;

: .BlueRed ( - )
initApa201
if 10 0
do StripBlue .Strip 500 ms
StripRed .Strip 500 ms
loop
then ;

.BlueRed

\ End, I leave the fancy show to you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant