Skip to content

Instantly share code, notes, and snippets.

@redspider
Last active December 16, 2015 17:41
Show Gist options
  • Save redspider/5472416 to your computer and use it in GitHub Desktop.
Save redspider/5472416 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
# Test code for Adafruit LED Pixels, uses hardware SPI
import RPi.GPIO as GPIO, time, os
DEBUG = 1
GPIO.setmode(GPIO.BCM)
def slowspiwrite(clockpin, datapin, byteout):
GPIO.setup(clockpin, GPIO.OUT)
GPIO.setup(datapin, GPIO.OUT)
for i in range(8):
if (byteout & 0x80):
GPIO.output(datapin, True)
else:
GPIO.output(clockpin, False)
byteout <<= 1
GPIO.output(clockpin, True)
GPIO.output(clockpin, False)
SPICLK = 18
SPIDO = 17
NUMPIXELS = 100
ledpixels = [0] * NUMPIXELS
kitstate = [0] * NUMPIXELS
FADESPEED = 16
def writestrip(pixels):
spidev = file("/dev/spidev0.0", "w")
for i in range(len(pixels)):
spidev.write(chr((pixels[i] >> 16) & 0xFF))
spidev.write(chr((pixels[i] >> 8) & 0xFF))
spidev.write(chr(pixels[i] & 0xFF))
spidev.close()
time.sleep(0.002)
def Color(r, g, b):
return ((r & 0xFF) << 16) | ((g & 0xFF) << 8) | (b & 0xFF)
def setpixelcolor(pixels, n, c):
if (n >= len(pixels)):
return
pixels[n] = c
def colorwipe(pixels, c, delay):
for i in range(len(pixels)):
setpixelcolor(pixels, i, c)
writestrip(pixels)
time.sleep(delay)
def Wheel(WheelPos):
if (WheelPos < 85):
return Color(WheelPos * 3, 255 - WheelPos * 3, 0)
elif (WheelPos < 170):
WheelPos -= 85;
return Color(255 - WheelPos * 3, 0, WheelPos * 3)
else:
WheelPos -= 170;
return Color(0, WheelPos * 3, 255 - WheelPos * 3)
def kit(pixels, wait):
vector = 1
pos = 0
while True:
# Dim all pixels
for i in range(NUMPIXELS):
if kitstate[i] > FADESPEED:
kitstate[i] -= FADESPEED
else:
kitstate[i] = 0
setpixelcolor(pixels, i, Color(kitstate[i],0,0))
# Light up new one
pos += vector
if pos > NUMPIXELS:
vector = -1
pos = NUMPIXELS-1
if pos < 0:
vector = 1
pos = 1
setpixelcolor(pixels, pos, Color(255,0,0))
kitstate[pos] = 255
writestrip(pixels)
time.sleep(wait)
colorwipe(ledpixels, Color(255, 0, 0), 0.05)
colorwipe(ledpixels, Color(0, 255, 0), 0.05)
colorwipe(ledpixels, Color(0, 0, 255), 0.05)
while True:
kit(ledpixels, 0.05)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment