# NeoPixel library strandtest example # Author: Tony DiCola (tony@tonydicola.com) # # Direct port of the Arduino NeoPixel library strandtest example. Showcases # various animations on a strip of NeoPixels. import time from neopixel import * # LED strip configuration: LED_COUNT = 494 # Number of LED pixels. LED_PIN = 18 # GPIO pin connected to the pixels (must support PWM!). LED_FREQ_HZ = 800000 # LED signal frequency in hertz (usually 800khz) LED_DMA = 10 # DMA channel to use for generating signal (try 10) LED_BRIGHTNESS = 255 # Set to 0 for darkest and 255 for brightest LED_INVERT = False # True to invert the signal (when using NPN transistor level shift) LED_CHANNEL = 0 LED_STRIP = ws.SK6812_STRIP_RGBW #LED_STRIP = ws.SK6812W_STRIP class Led: leds = [] def __init__(self, id, x, y): self.x = x self.y = y Led.leds.append(self) def wheel(pos): """Generate rainbow colors across 0-255 positions.""" if pos < 85: return Color(pos * 3, 255 - pos * 3, 0) elif pos < 170: pos -= 85 return Color(255 - pos * 3, 0, pos * 3) else: pos -= 170 return Color(0, pos * 3, 255 - pos * 3) def colorFromIntensity(intensity): #intensity should be 0-255 if intensity>20: return Color(int(intensity/2),int(intensity/2),int(intensity/2),max(int(intensity),20)) else: return Color(0,0,0,20) def intensityFromDistance(distance): if distance<0: return 0 intensity = 255-(distance/3) if intensity < 0: return 0 else: return intensity # Main program logic follows: if __name__ == '__main__': # Create NeoPixel object with appropriate configuration. strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, LED_FREQ_HZ, LED_DMA, LED_INVERT, LED_BRIGHTNESS, LED_CHANNEL, LED_STRIP) # Intialize the library (must be called once before other functions). strip.begin() print ('Press Ctrl-C to quit.') with open("leds.txt", "r") as infile: for line in infile: entry = [int(x) for x in line.split(',')] Led(entry[0], entry[1], entry[2]) # all LEDs now ready edge = -500 while True: # counter = 0 for i, led in enumerate(Led.leds): intensity = intensityFromDistance(edge-(led.x - led.y/3)) strip.setPixelColor(i, colorFromIntensity(intensity)) strip.show() edge+=10 if edge>5000: edge = -500 # time.sleep(0.01)