Code:
noLEDs CON 32 ' Change this number to number of LEDs in your strip
shftMode CON 1 ' Shift data out highest bit first. Clock idles low
LEDsDAT VAR PORTE.0 ' Shift out data port, change as needed
LEDsCLK VAR PORTE.1 ' Shift out clock port, change as needed
i VAR Byte ' Loop variable
Main:
FOR i TO noLEDs ' We have to either shift allllllllll the data bits out at once to all LEDs in one SHIFTOUT or for one RGB LED at a time in a loop, much easier this way!, lots of ways to do this.
SHIFTOUT LEDsDAT, LEDsCLK, shftMode, [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] 'Shift out 24 bits to one RGB LED at a time - should be all LEDS ON (can be varibles too)
NEXT i ' Loop till all LEDs loaded
i = 0 ' Please be kind, rewind.
PAUSE 1000 ' For human eyes to be able to see that them LEDs are ON
FOR i TO noLEDs ' Rinse, Repeat - but turn them all off this time
SHIFTOUT LEDsDAT, LEDsCLK, shftMode, [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] 'Shift out 24 bits - should be all LEDS OFF (can be varibles too)
NEXT i ' A little loopy
PAUSE 1000 ' For human eyes to be able to see that them LEDs are OFF (ever wonder if the fridge light is still on when you close the door?)
GOTO Main ' Do it till the cows come home!
END ' My only friend, The end... (fridge door, The Doors, whatever)
The problem is a lot of newer strips use weirder data protocols which are very timing sensitive. You can make them work, but your PIC is probably going to be dedicated to that, with another pic telling it what to do without a lot of work with interrupts and assembly. Thats why I try to stick to WS2801s
Bookmarks