Spaces:
Sleeping
Sleeping
from periphery import GPIO, PWM | |
from enum import Enum | |
class Color(Enum): | |
RED = 0 | |
BLUE = 1 | |
PURPLE = 2 | |
CLOSED = 3 | |
class LEDs: | |
def __init__(self): | |
self.led1_R = PWM(0, 0) | |
self.led1_B = PWM(2, 0) | |
self.led1_gnd = PWM(1, 0) | |
self.led2_R = GPIO("/dev/gpiochip0", 8, "out") | |
self.led2_B = GPIO("/dev/gpiochip0", 6, "out") | |
self.led2_gnd = GPIO("/dev/gpiochip0", 7, "out") | |
self.led3_R = GPIO("/dev/gpiochip2", 0, "out") | |
#self.led3_B = GPIO("/dev/gpiochip2", 5, "out") | |
self.led3_gnd = GPIO("/dev/gpiochip2", 8, "out") | |
self.acq = GPIO("/dev/gpiochip2", 20, "out") | |
# Init LEDs | |
# RGBs | |
self.led1_R.frequency = 1e3 | |
self.led1_R.duty_cycle = 0.0 | |
self.led1_R.enable() | |
self.led1_B.frequency = 1e3 | |
self.led1_B.duty_cycle = 0.0 | |
self.led1_B.enable() | |
self.led1_gnd.frequency = 1e3 | |
self.led1_gnd.duty_cycle = 0.0 | |
self.led1_gnd.enable() | |
# LED2 | |
self.led2_R.write(False) | |
self.led2_B.write(False) | |
self.led2_gnd.write(False) | |
# LED3 | |
self.led3_R.write(False) | |
#self.led3_B.write(False) | |
self.led3_gnd.write(False) | |
def aquisition(self, val: bool): | |
self.acq.write(val) | |
# red, green & blue are between 0 and 100 inclusively | |
def led1(self, red: int, green: int, blue: int): | |
assert 0 <= red <= 100, "Red should be between 0 and 100" | |
assert 0 <= green <= 100, "Green should be between 0 and 100" | |
assert 0 <= blue <= 100, "Blue should be between 0 and 100" | |
self.led1_R.duty_cycle = red / 100 | |
self.led1_B.duty_cycle = blue / 100 | |
def led2(self, value: Color): | |
if value == Color.RED: | |
self.led2_R.write(True) | |
self.led2_B.write(False) | |
elif value == Color.BLUE: | |
self.led2_R.write(False) | |
self.led2_B.write(True) | |
elif value == Color.PURPLE: | |
self.led2_R.write(True) | |
self.led2_B.write(True) | |
elif value == Color.CLOSED: | |
self.led2_R.write(False) | |
self.led2_B.write(False) | |
else: | |
assert False, "Unknown color" | |
def led3(self, value: Color): | |
if value == Color.RED: | |
self.led3_R.write(True) | |
elif value == Color.CLOSED: | |
self.led3_R.write(False) | |
else: | |
assert False, "Unknown color" | |
def close(self): | |
# LED1 | |
self.led1_R.disable() | |
self.led1_B.disable() | |
self.led1_gnd.disable() | |
self.led1_R.close() | |
self.led1_B.close() | |
self.led1_gnd.close() | |
# LED2 | |
self.led2_R.write(False) | |
self.led2_B.write(False) | |
self.led2_gnd.write(False) | |
self.led2_R.close() | |
self.led2_B.close() | |
self.led2_gnd.close() | |
# LED3 | |
self.led3_R.write(False) | |
#self.led3_B.write(False) | |
self.led3_gnd.write(False) | |
self.led3_R.close() | |
#self.led3_B.close() | |
self.led3_gnd.close() | |
# AQUISITION | |
self.acq.write(False) | |
self.acq.close() | |