2025-07-30 03:19:44 +00:00
|
|
|
import RPi.GPIO as io
|
|
|
|
import time
|
|
|
|
|
|
|
|
io.setmode(io.BCM)
|
|
|
|
|
|
|
|
|
2025-07-30 03:24:39 +00:00
|
|
|
class Pin:
|
|
|
|
def __init__(self, num, off=io.HIGH):
|
2025-07-30 03:25:21 +00:00
|
|
|
self.pin = num
|
2025-07-30 03:25:54 +00:00
|
|
|
self.off_mode = off
|
2025-07-30 03:24:39 +00:00
|
|
|
|
2025-07-30 03:25:01 +00:00
|
|
|
def setup(self):
|
2025-07-30 03:24:39 +00:00
|
|
|
io.setup(self.pin, io.OUT)
|
2025-07-30 03:19:44 +00:00
|
|
|
|
2025-07-30 03:24:39 +00:00
|
|
|
def off(self):
|
2025-07-30 03:25:54 +00:00
|
|
|
io.output(self.pin, self.off_mode)
|
2025-07-30 03:19:44 +00:00
|
|
|
|
2025-07-30 03:24:39 +00:00
|
|
|
def on(self):
|
2025-07-30 03:25:54 +00:00
|
|
|
io.output(self.pin, io.LOW if self.off_mode == io.HIGH else io.HIGH)
|
2025-07-30 03:19:44 +00:00
|
|
|
|
2025-07-30 03:28:27 +00:00
|
|
|
def blink(self, blinks, blink_time_s):
|
|
|
|
for _ in range(0, blinks):
|
|
|
|
self.on()
|
2025-07-30 03:29:22 +00:00
|
|
|
time.sleep(blink_time_s/2)
|
2025-07-30 03:28:27 +00:00
|
|
|
self.off()
|
2025-07-30 03:29:22 +00:00
|
|
|
time.sleep(blink_time_s/2)
|
2025-07-30 03:28:27 +00:00
|
|
|
|
2025-07-30 03:33:07 +00:00
|
|
|
def fade_blink(self, blinks, blink_time_s):
|
2025-07-30 03:36:58 +00:00
|
|
|
sleep_time_s = min(0.5, blink_time_s/5)
|
|
|
|
on_time_s = blink_time_s - sleep_time_s
|
2025-07-30 03:33:07 +00:00
|
|
|
for _ in range(0, blinks):
|
|
|
|
self.on()
|
2025-07-30 03:36:58 +00:00
|
|
|
time.sleep(on_time_s)
|
2025-07-30 03:33:07 +00:00
|
|
|
self.off()
|
2025-07-30 03:36:58 +00:00
|
|
|
time.sleep(sleep_time_s)
|
2025-07-30 03:33:07 +00:00
|
|
|
|
2025-07-30 03:24:39 +00:00
|
|
|
pins = {
|
|
|
|
"red": Pin(27),
|
|
|
|
"yellow": Pin(22),
|
|
|
|
"green": Pin(24),
|
|
|
|
"blue": Pin(23),
|
|
|
|
}
|
2025-07-30 03:19:44 +00:00
|
|
|
|
|
|
|
def reset():
|
|
|
|
for name, pin in pins.items():
|
2025-07-30 03:24:39 +00:00
|
|
|
pin.setup()
|
2025-07-30 03:44:06 +00:00
|
|
|
pin.fade_blink(3, 0.5)
|
2025-07-30 03:19:44 +00:00
|
|
|
|
2025-07-30 03:45:02 +00:00
|
|
|
for name, pin in pins.items():
|
|
|
|
pin.on()
|
|
|
|
time.sleep(0.5)
|
|
|
|
|
|
|
|
time.sleep(0.5)
|
|
|
|
|
|
|
|
for name, pin in pins.items():
|
|
|
|
pin.off()
|
|
|
|
|
2025-07-30 03:33:07 +00:00
|
|
|
|
2025-07-30 03:19:44 +00:00
|
|
|
reset()
|