PDA

View Full Version : Anyone used smart leds with APA102/SK9822 controller, with Picbasic ?



CuriousOne
- 6th December 2020, 17:33
Hello.
These leds while delivering neopixel led like functionality, run on more common, SPI interface, with much more relaxed timing requirements. So they should be easier to use.
Search delivers no results, does anyone tried to used them with PBP?

louislouis
- 6th December 2020, 19:03
Hello.
These leds while delivering neopixel led like functionality, run on more common, SPI interface, with much more relaxed timing requirements. So they should be easier to use.
Search delivers no results, does anyone tried to used them with PBP?

I use them a lot. Easy to use in PBP, here some test blinks:


'************************************************* ***************
'* Name : APA LED *
'* Author : Louis *
'* Notice : Copyright (c) 2020 *
'* : All Rights Reserved *
'* Date : 7. 10. 2020 *
'* Version : 1.0 *
'* Notes : *
'* : PIC 12F1840 *
'************************************************* ***************
#CONFIG
__config _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOREN_ON & _CLKOUTEN_OFF & _IESO_ON & _FCMEN_ON
__config _CONFIG2, _WRT_OFF & _PLLEN_ON & _STVREN_ON & _BORV_19 & _LVP_OFF
#ENDCONFIG

DEFINE OSC 4 ; Use internal clock 4MHz
OSCCON = %01101010 ; 4 MHz internal
OSCTUNE = %00000000 ; Internal osc tunning

WHILE !OSCSTAT.3 ; Wait for stable OSC
WEND

TRISA = %100100 ; RA.2, RA.5 input rest output
ANSELA = %00000
OPTION_REG.7=1 ; disable internal pull-ups

INCLUDE "modedefs.bas"

di var porta.1
ci var porta.4

r var byte
g var byte
b var byte
n var byte
nn var byte
cyc var byte
clear

gosub clear_strip ; clear strip

main:

gosub white_fade
pause 1000
gosub police_blink
pause 1000
gosub color_blink
pause 1000
gosub Orange_Breathe
pause 1000
gosub Red_flicker
pause 1000

goto main

; ------- BLINK CODES --------
police_blink:
gosub clear_strip
led:
gosub start_frame
for nn=0 to 2
gosub start_frame
r=250:g=0:b=0:SHIFTOUT di, ci, 1, [%11100111,b,g,r]
r=250:g=0:b=0:SHIFTOUT di, ci, 1, [%11100111,b,g,r]
r=0:g=0:b=0:SHIFTOUT di, ci, 1, [%11100111,b,g,r]
r=0:g=0:b=0:SHIFTOUT di, ci, 1, [%11100111,b,g,r]
gosub start_frame
pause 30
gosub clear_strip
pause 30
next nn : nn=0

pause 100

for nn=0 to 2
gosub start_frame
r=0:g=0:b=0:SHIFTOUT di, ci, 1, [%11100111,b,g,r]
r=0:g=0:b=0:SHIFTOUT di, ci, 1, [%11100111,b,g,r]
r=0:g=0:b=250:SHIFTOUT di, ci, 1, [%11100111,b,g,r]
r=0:g=0:b=250:SHIFTOUT di, ci, 1, [%11100111,b,g,r]
gosub start_frame
pause 30
gosub clear_strip
pause 30
next nn : nn=0

pause 100
return
; --------- END of police Blink ----------

; --------- Color Blink ----------
color_blink:
gosub clear_strip
leds:
gosub start_frame
for nn=0 to 5
gosub start_frame
r=250:g=0:b=0:SHIFTOUT di, ci, 1, [%11100111,b,g,r]
r=150:g=50:b=0:SHIFTOUT di, ci, 1, [%11100111,b,g,r]
r=250:g=0:b=0:SHIFTOUT di, ci, 1, [%11100111,b,g,r]
r=150:g=50:b=0:SHIFTOUT di, ci, 1, [%11100111,b,g,r]
gosub start_frame
pause 30
gosub clear_strip
pause 30
next nn : nn=0

pause 100

for nn=0 to 5
gosub start_frame
r=0:g=50:b=10:SHIFTOUT di, ci, 1, [%11100111,b,g,r]
r=0:g=200:b=0:SHIFTOUT di, ci, 1, [%11100111,b,g,r]
r=0:g=50:b=10:SHIFTOUT di, ci, 1, [%11100111,b,g,r]
r=0:g=200:b=0:SHIFTOUT di, ci, 1, [%11100111,b,g,r]
gosub start_frame
pause 30
gosub clear_strip
pause 30
next nn : nn=0

pause 100

return
; --------- END of color Blink ----------

; --------- White Fade ----------
white_fade:
gosub clear_strip
gosub start_frame

lit_up:
for nn=0 to 3
r=255:g=255:b=255:SHIFTOUT di, ci, 1, [%11100111,b,g,r]
next nn : nn=0
gosub start_frame

for cyc = 0 to 254
r=r-1:g=g-1:b=b-1
for nn=0 to 3
SHIFTOUT di, ci, 1, [%11100111,b,g,r]
next nn : nn=0
gosub start_frame
next cyc : cyc=0
return
; --------- END of White Fade ---------

; --------- Orange Breathe ---------
Orange_Breathe:
gosub clear_strip
gosub start_frame

for cyc = 0 to 24
pause 30
r=r+10:g=g+1:b=0
for nn=0 to 3
SHIFTOUT di, ci, 1, [%11100111,b,g,r]
next nn : nn=0
gosub start_frame
next cyc : cyc=0

pause 300

for cyc = 0 to 24
pause 30
r=r-10:g=g-1:b=0
for nn=0 to 3
SHIFTOUT di, ci, 1, [%11100111,b,g,r]
next nn : nn=0
gosub start_frame
next cyc : cyc=0
glow_up:
gosub start_frame
for nn=0 to 4
r=10:g=0:b=0:SHIFTOUT di, ci, 1, [%11100111,b,g,r]
next nn : nn=0
return

; ------- END of Orange Breathe -------

; --------- Red flicker ----------
Red_flicker:
gosub clear_strip
gosub start_frame

flicker:
for nn=0 to 3
r=255:g=0:b=0:SHIFTOUT di, ci, 1, [%11100111,b,g,r]
next nn : nn=0
gosub start_frame

pause 500

for cyc=0 to 10
gosub start_frame
for nn=0 to 3
r=255:g=0:b=0:SHIFTOUT di, ci, 1, [%11100111,b,g,r]
next nn : nn=0
pause 50
gosub clear_strip
pause 50
next cyc : cyc=0
return
; --------- END of Red flicker ---------

; --------- Blink subroutines ----------
start_frame:
SHIFTOUT di, ci, 1, [%00000000,%00000000,%00000000,%00000000]
return

clear_strip:
SHIFTOUT di, ci, 1, [%00000000,%00000000,%00000000,%00000000]
for n=0 to 4
r=0:g=0:b=0
SHIFTOUT di, ci, 1, [%11100111,b,g,r]
next n : n=0
return
; ---------- END of Blink Subroutines -----------

CuriousOne
- 6th December 2020, 21:51
Thanks!
Will order some and let them go :)

CuriousOne
- 19th January 2022, 19:43
Tried it now with single led, it works!
Thanks again :)