Skip to content

Instantly share code, notes, and snippets.

@azrdev
Last active February 28, 2018 20:42
Show Gist options
  • Save azrdev/47c28f1743f0233b5965d4ef96c5ca4e to your computer and use it in GitHub Desktop.
Save azrdev/47c28f1743f0233b5965d4ef96c5ca4e to your computer and use it in GitHub Desktop.
WS2801S control via /dev/spidev -- now at https://github.com/azrdev/WS2801S-MQTT
#! /usr/bin/env python3
import math
import array
import fcntl
spidev = open("/dev/spidev0.0", "wb")
fcntl.ioctl(spidev, 0x40046b04, array.array('L', [400000]))
class LEDStrip:
def __init__(self, size):
self.size = size
self.strip = []
empty = {"r": 0,
"g": 0,
"b": 0}
for i in range(size):
self.strip.append(empty)
def setColor(self, led, color):
self.strip[led] = color
def getColor(self, led):
return self.strip[led]
def update(self):
for i in range(self.size):
foo = self.strip[i]
rgb = bytearray(3)
rgb[0] = foo["g"]
rgb[1] = foo["r"]
rgb[2] = foo["b"]
spidev.write(rgb)
spidev.flush()
#! /usr/bin/env python3
from LEDStrip2 import LEDStrip
import random
import time
LENGTH = 64
MAX = 120
strip = LEDStrip(LENGTH)
i=0
while True:
r = random.randrange(0,2) * MAX
g = random.randrange(0,2) * MAX
b = random.randrange(0,2) * MAX
for i in range(0,LENGTH-1):
color = {"r": r,
"g": g,
"b": b}
#i+=1 # = random.randrange(0,LENGTH)
strip.setColor(i,color)
print("Set LED {} to {},{},{}".format(i,r,g,b))
time.sleep(0.01)
strip.update()
@azrdev
Copy link
Author

azrdev commented Feb 28, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment