mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2023-10-10 13:36:59 +02:00
Knight rider effect added
Former-commit-id: a475270b89e3caf156e011ee1e49a745d03b2e3a
This commit is contained in:
parent
1cf16210e3
commit
ae148afba9
45
effects/knight-rider.py
Normal file
45
effects/knight-rider.py
Normal file
@ -0,0 +1,45 @@
|
||||
import hyperion
|
||||
import time
|
||||
import colorsys
|
||||
|
||||
# Get the rotation time
|
||||
speed = hyperion.args.get('speed', 1.0)
|
||||
fadeFactor = hyperion.args.get('fadeFactor', 0.7)
|
||||
|
||||
# Initialize the led data
|
||||
width = 25
|
||||
imageData = bytearray(width * (0,0,0))
|
||||
imageData[0] = 255
|
||||
|
||||
# Calculate the sleep time and rotation increment
|
||||
increment = 1
|
||||
sleepTime = 1.0 / (speed * width)
|
||||
while sleepTime < 0.05:
|
||||
increment *= 2
|
||||
sleepTime *= 2
|
||||
|
||||
# Start the write data loop
|
||||
position = 0
|
||||
direction = 1
|
||||
while not hyperion.abort():
|
||||
hyperion.setImage(width, 1, imageData)
|
||||
|
||||
# Move data into next state
|
||||
for i in range(increment):
|
||||
position += direction
|
||||
if position == -1:
|
||||
position = 1
|
||||
direction = 1
|
||||
elif position == width:
|
||||
position = width-2
|
||||
direction = -1
|
||||
|
||||
# Fade the old data
|
||||
for j in range(width):
|
||||
imageData[3*j] = int(fadeFactor * imageData[3*j])
|
||||
|
||||
# Insert new data
|
||||
imageData[3*position] = 255
|
||||
|
||||
# Sleep for a while
|
||||
time.sleep(sleepTime)
|
Loading…
x
Reference in New Issue
Block a user