from machine import Pin
from utime import sleep
class LED:
"""
Simple abstraction for an LED connected to a GPIO pin.
"""
def __init__(self, pin_no):
self.pin = Pin(pin_no, Pin.OUT)
self.pin_id = pin_no
def get_pin_id(self):
return self.pin_id
def on(self):
self.pin.value(1)
def off(self):
self.pin.value(0)
def toggle(self):
self.pin.value(not self.pin.value())
def blink(self, on_time, off_time, n):
for _ in range(n):
self.on()
sleep(on_time)
self.off()
sleep(off_time)
def __str__(self):
return f'<led({self.get_pin_id()})>'
def __repr__(self):
return self.__str__()
# --------------------------------------------------
# LED INITIALIZATION
# --------------------------------------------------
led_red = LED(27)
led_violet = LED(14)
led_yellow = LED(12)
led_blue = LED(13)
leds = [led_red, led_violet, led_yellow, led_blue]
sleep(1)
# --------------------------------------------------
# BASIC GROUP OPERATIONS
# --------------------------------------------------
def all_on():
for led in leds:
led.on()
def all_off():
for led in leds:
led.off()
def going(leds):
while True:
for led in leds:
all_off()
led.on()
sleep(0.15)
# going(leds)
def order():
pattern = leds + leds[-2 : 0 : -1]
going(pattern)
# order()
# --------------------------------------------------
# DATA-DRIVEN PATTERNS (not yet applied)
# --------------------------------------------------
patterns = [
[1, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, 1],
]