mirror of
https://github.com/brmlab/ledbar.git
synced 2025-06-11 22:33:59 +02:00
Added class simplifiing ledbar output
* also added rainbow.py, which uses this class to create rainbow effect
This commit is contained in:
parent
1af1b8093a
commit
dace593f3b
3 changed files with 109 additions and 0 deletions
50
host_python/ledbar.py
Normal file
50
host_python/ledbar.py
Normal file
|
@ -0,0 +1,50 @@
|
|||
#!/usr/bin/python
|
||||
# vim:et:sw=4:ts=4:sts=4
|
||||
|
||||
import sys
|
||||
import time
|
||||
|
||||
class Ledbar:
|
||||
|
||||
def __init__(self, boxes=10, secs_per_frame=0.025):
|
||||
self.boxes = boxes
|
||||
self.secs_per_frame = secs_per_frame
|
||||
self.last_update = time.time()
|
||||
self.pixels = []
|
||||
for i in xrange(boxes):
|
||||
self.pixels.append([0, 0, 0])
|
||||
|
||||
def set_pixel(self, pixel, red, green, blue):
|
||||
self.set_red(pixel, red)
|
||||
self.set_green(pixel, green)
|
||||
self.set_blue(pixel, blue)
|
||||
|
||||
def set_red(self, pixel, red):
|
||||
if red < 0.0 or red > 1.0: raise ValueError('red has to be between 0.0 and 1.0')
|
||||
self.pixels[pixel][0] = int(red*255.99)
|
||||
|
||||
def set_green(self, pixel, green):
|
||||
if green < 0.0 or green > 1.0: raise ValueError('green has to be between 0.0 and 1.0')
|
||||
self.pixels[pixel][1] = int(green*255.99)
|
||||
|
||||
def set_blue(self, pixel, blue):
|
||||
if blue < 0.0 or blue > 1.0: raise ValueError('blue has to be between 0.0 and 1.0')
|
||||
self.pixels[pixel][2] = int(blue*255.99)
|
||||
|
||||
def echo(self, s, no_newline=False):
|
||||
sys.stderr.write(str(s) + ('' if no_newline else '\n'))
|
||||
|
||||
def update(self):
|
||||
now = time.time()
|
||||
delta = now - self.last_update
|
||||
if delta < self.secs_per_frame:
|
||||
time.sleep(self.secs_per_frame - delta)
|
||||
try:
|
||||
for p in self.pixels:
|
||||
for c in p:
|
||||
sys.stdout.write(chr(c))
|
||||
sys.stdout.flush()
|
||||
except IOError:
|
||||
return False
|
||||
self.last_update += self.secs_per_frame
|
||||
return True
|
Loading…
Add table
Add a link
Reference in a new issue