You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.9 KiB
67 lines
1.9 KiB
from rpi_ws281x import PixelStrip |
|
# from lib.strip.WindowStrip import WindowStrip |
|
# from lib.strip.TkinterStrip import TkinterStrip |
|
from lib.LoopSwitch import LoopSwitch |
|
from lib.Regions import Regions |
|
from lib.Tempo import Tempo |
|
|
|
|
|
class Litsimaja(object): |
|
def __init__(self): |
|
self._strip = PixelStrip(290, 18, 800000, 10, False, 255, 0, 4104) |
|
self._loops = [] |
|
self._strip.begin() |
|
self._regions: Regions = Regions(self.count_pixels(), [46, 96, 191, 241]) |
|
self._tempo: Tempo = Tempo(60) |
|
self._selected_program = None |
|
|
|
def count_pixels(self) -> int: |
|
return self._strip.numPixels() |
|
|
|
def get_strip(self): |
|
return self._strip |
|
|
|
def set_pixel_color(self, n: int, color: int) -> None: |
|
if self._regions.is_pixel_enabled(n): |
|
self._strip.setPixelColor(n, color) |
|
else: |
|
self._strip.setPixelColor(n, 0) |
|
|
|
def show(self) -> None: |
|
self._strip.show() |
|
|
|
def add_loop(self, loop: LoopSwitch): |
|
self.clear_loops() |
|
self._loops.append(loop) |
|
|
|
def clear_loops(self): |
|
for loop in self._loops: |
|
loop.stop() |
|
self._loops.clear() |
|
|
|
def switch_region(self, region_id: int): |
|
self._regions.switch_region(region_id) |
|
|
|
def get_region_ids(self): |
|
return self._regions.list_region_ids() |
|
|
|
def build_status_array(self): |
|
data = {'success': True} |
|
features = { |
|
'program': self._selected_program, |
|
'tempo': { |
|
'bpm': self.get_tempo().get_bpm() |
|
}, |
|
} |
|
regions = [] |
|
for region_id in self._regions.list_region_ids(): |
|
regions.append(self._regions.is_region_enabled(region_id)) |
|
features['region'] = regions |
|
data['features'] = features |
|
return data |
|
|
|
def get_tempo(self): |
|
return self._tempo |
|
|
|
def set_selected_program(self, program_name: str): |
|
self._selected_program = program_name
|
|
|