We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
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.
The text was updated successfully, but these errors were encountered:
No branches or pull requests
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.
The text was updated successfully, but these errors were encountered: