File size: 3,161 Bytes
3fd98da
704ebec
 
 
 
 
 
 
3fd98da
 
2de9fad
3fd98da
 
 
 
 
 
 
 
 
 
 
 
62bd48f
3fd98da
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
704ebec
62bd48f
3fd98da
 
704ebec
 
 
 
3fd98da
 
 
704ebec
0f35f15
3fd98da
 
0f35f15
3fd98da
 
0f35f15
3fd98da
 
0f35f15
3fd98da
 
 
 
 
704ebec
0f35f15
3fd98da
0f35f15
3fd98da
 
 
 
2de9fad
3fd98da
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62bd48f
 
3fd98da
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
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()