Commit 36b53bde authored by Aljaž Srebrnič's avatar Aljaž Srebrnič

Moved lightning stuff to separate thread, added some objects

parent 307cc753
......@@ -3,48 +3,62 @@
from time import sleep
from random import randint
import configparser
from threading import Thread
import zmq
import spidev
import ws2812
activeFlag = True
c = 0
rand = 1
r = 255
def get_color():
if activeFlag == True :
global c
global r
global rand
if c+rand > 80:
rand = randint(1, 8)*(-1)
return(80, 255, 0)
elif c+rand < 0:
rand = randint(1, 8)
return(0, 255, 0)
else:
c = c + rand
return (c, 255, 0)
else:
fade()
class Color:
green: int
red: int
blue: int
def as_tuple(self):
return self.green, self.red, self.blue
def light_flame():
class ColorManager(Thread):
current_rand = 1
current_color = Color(0, 0, 0)
activeFlag = True
spi = spidev.SpiDev()
spi.open(1, 0)
while True:
ws2812.write2812(spi, [get_color() * 4])
sleep(0.001)
def __init__(self):
super().__init__()
self.spi.open(1, 0)
def fade():
if r > 0:
r--
if c > 0:
c--
return (c, r, 0)
def get_color(self):
if self.current_color.green + self.current_rand > 80:
self.current_rand = -randint(1, 8)
self.current_color = Color(80, 255, 0)
elif self.current_colorgreen + self.current_rand < 0:
rand = randint(1, 8)
self.current_color = Color(0, 255, 0)
else:
self.current_color.green += rand
self.current_color.red = 255
self.current_color.blue = 0
def fade(self):
if self.current_color.red > 0:
self.current_color.red -= 1
if self.current_color.green > 0:
self.current_color.green -= 1
def start_fade(self):
self.activeFlag = False
def run(self):
while self.is_alive():
if self.activeFlag:
self.get_color()
else:
self.fade()
ws2812.write2812(self.spi, [self.current_color.as_tuple() * 4])
sleep(0.001)
def main():
......@@ -64,18 +78,20 @@ def main():
topicfilter = "events"
socket.setsockopt_string(zmq.SUBSCRIBE, topicfilter)
cm = ColorManager()
while True:
string = socket.recv()
topic, messagedata = string.split()
print(topic, messagedata)
if messagedata == b"liftoff":
light_flame()
cm = ColorManager()
cm.start()
elif messagedata == b"stage_1_separation":
light_flame()
pass
elif messagedata == b"stage_2_separation":
light_flame()
activeFlag = False
cm.start_fade()
else:
print("Unhandled message")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment