Simplified pattern handling
This commit is contained in:
parent
6e42689a91
commit
d10359f8d1
1 changed files with 4 additions and 20 deletions
|
@ -69,31 +69,15 @@ class MatrixDisplay:
|
|||
draw.rectangle((0, 0, 31, 7), outline="white", fill="white")
|
||||
|
||||
async def pattern(self, pattern: str = "0,1", off_ms: int = 500, on_ms: int = 500):
|
||||
# Preprocess pattern
|
||||
# Parse
|
||||
pattern_steps = [step.strip() == "1" for step in pattern.split(",")]
|
||||
|
||||
class SimplifiedStep:
|
||||
state: bool
|
||||
size: int
|
||||
|
||||
def __init__(self, state: bool) -> None:
|
||||
self.state = state
|
||||
self.size = 1
|
||||
|
||||
pattern_simplified: list[SimplifiedStep] = []
|
||||
# Execute
|
||||
for step in pattern_steps:
|
||||
if len(pattern_simplified) == 0 or step != pattern_simplified[-1].state:
|
||||
pattern_simplified.append(SimplifiedStep(step, off_ms, on_ms))
|
||||
else:
|
||||
pattern_simplified[-1].size += 1
|
||||
|
||||
# Execute pattern
|
||||
for step in pattern_simplified:
|
||||
if step.state:
|
||||
if step:
|
||||
self.turn_full()
|
||||
else:
|
||||
self.turn_off()
|
||||
await asyncio.sleep(step.size * (on_ms if step.state else off_ms) / 1000)
|
||||
await asyncio.sleep((on_ms if step else off_ms) / 1000)
|
||||
|
||||
def show_current_time(self):
|
||||
self.device.contrast(self.contrast)
|
||||
|
|
Loading…
Reference in a new issue