Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Based on the NeoPixel library strandtest example
- # (Authors: Tony DiCola - [email protected] & Jeremy Garff ([email protected]))
- # https://github.com/jgarff/rpi_ws281x
- # https://docs.rs/crate/ws281x/0.1.0/source/c/python/examples/strandtest.py
- #
- # Modifications by alcognito
- #
- import time
- from neopixel import *
- import argparse
- # LED strip configuration:
- LED_COUNT = 300 # Number of LED pixels.
- LED_PIN = 18 # GPIO pin connected to the pixels (must support PWM!).
- #LED_PIN = 10 # GPIO pin connected to the pixels (10 uses SPI /dev/spidev0.0).
- LED_FREQ_HZ = 800000 # LED signal frequency in hertz (usually 800khz)
- LED_DMA = 10 # DMA channel to use for generating signal (try 10) - was 5
- LED_BRIGHTNESS = 60 # 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 # set to '1' for GPIOs 13, 19, 41, 45 or 53
- # Define functions which animate LEDs in various ways.
- def colorWipe(strip, color, wait_ms=10):
- """Wipe color across display a pixel at a time."""
- for i in range(strip.numPixels()):
- strip.setPixelColor(i, color)
- strip.show()
- time.sleep(wait_ms/1000.0)
- def snow_capped(strip, wait_ms=0):
- peaks = [108, 170, 258]
- low_pts = [0, 145, 202, 300]
- illuminated = set()
- for i in range(peaks[0]):
- for j in range(strip.numPixels()):
- for peak in peaks:
- if (peak - i) >= min(low_pts):
- illuminated.add((peak - i))
- if peak + i <= max(low_pts):
- illuminated.add((peak + i))
- # print(sorted(illuminated))
- if j in illuminated:
- if j <= peaks[0]:
- local_color = Color(
- int(255 * j/peaks[0]),
- int(255 * j/peaks[0]),
- 255) # *255/peaks[0] (==2.83) was previously * 2.3
- elif j <= low_pts[0]:
- local_color = Color(
- int(255 + peaks[0]-j),
- int(255 + peaks[0]-j),
- 255)
- elif j <= peaks[1]:
- local_color = Color(
- int(255 - peaks[1]+j),
- int(255 - peaks[1]+j),
- 255)
- elif j <= low_pts[1]:
- local_color = Color(
- int(255 + peaks[1]-j),
- int(255 + peaks[1]-j),
- 255)
- elif j <= peaks[2]:
- local_color = Color(
- int(255 - peaks[2]+j),
- int(255 - peaks[2]+j),
- 255)
- else:
- local_color = Color(
- int(255 + peaks[2]-j),
- int(255 + peaks[2]-j),
- 255)
- strip.setPixelColor(j, local_color)
- strip.show()
- # time.sleep(wait_ms/1000.0)
- # Main program logic follows:
- if __name__ == '__main__':
- # Process arguments
- parser = argparse.ArgumentParser()
- parser.add_argument('-c', '--clear', action='store_true', help='clear the display on exit')
- args = parser.parse_args()
- # Create NeoPixel object with appropriate configuration.
- strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, LED_FREQ_HZ, LED_DMA, LED_INVERT, LED_BRIGHTNESS, LED_CHANNEL)
- # Intialize the library (must be called once before other functions).
- strip.begin()
- print('Press Ctrl-C to quit.')
- if not args.clear:
- print('Use "-c" argument to clear LEDs on exit')
- try:
- while True:
- print('Color wipe animations.')
- colorWipe(strip, Color(0, 0, 0))
- print('Snow Capped Mountain animation.')
- snow_capped(strip)
- except KeyboardInterrupt:
- if args.clear:
- colorWipe(strip, Color(0,0,0), 10)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement