status-tower/src/main.py

60 lines
1.2 KiB
Python

import RPi.GPIO as io
import time
io.setmode(io.BCM)
class Pin:
def __init__(self, num, off=io.HIGH):
self.pin = num
self.off_mode = off
def setup(self):
io.setup(self.pin, io.OUT)
def off(self):
io.output(self.pin, self.off_mode)
def on(self):
io.output(self.pin, io.LOW if self.off_mode == io.HIGH else io.HIGH)
def blink(self, blinks, blink_time_s):
for _ in range(0, blinks):
self.on()
time.sleep(blink_time_s/2)
self.off()
time.sleep(blink_time_s/2)
def fade_blink(self, blinks, blink_time_s):
sleep_time_s = min(0.5, blink_time_s/5)
on_time_s = blink_time_s - sleep_time_s
for _ in range(0, blinks):
self.on()
time.sleep(on_time_s)
self.off()
time.sleep(sleep_time_s)
pins = {
"red": Pin(27),
"yellow": Pin(22),
"green": Pin(24),
"blue": Pin(23),
}
def reset():
for name, pin in pins.items():
pin.setup()
pin.fade_blink(3, 0.5)
for name, pin in pins.items():
pin.on()
time.sleep(0.3)
time.sleep(1)
for name, pin in pins.items():
pin.off()
reset()