msobral
merge with backup
963de37
raw
history blame
3.16 kB
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()