|
1 | | -from wpilib import run, TimedRobot, AddressableLED |
| 1 | +import wpilib |
2 | 2 |
|
3 | 3 | kLEDBuffer = 60 |
4 | 4 |
|
5 | | -class MyRobot(TimedRobot): |
| 5 | + |
| 6 | +class MyRobot(wpilib.TimedRobot): |
6 | 7 | def robotInit(self): |
7 | 8 | # PWM Port 9 |
8 | 9 | # Must be a PWM header, not MXP or DIO |
9 | | - self.m_led = AddressableLED(9) |
10 | | - |
| 10 | + self.led = wpilib.AddressableLED(9) |
| 11 | + |
11 | 12 | # LED Data |
12 | | - self.m_ledData = [] |
| 13 | + self.ledData = [wpilib.AddressableLED.LEDData() for i in range(kLEDBuffer)] |
13 | 14 |
|
14 | 15 | # Store what the last hue of the first pixel is |
15 | | - self.m_rainbowFirstPixelHue = 0 |
| 16 | + self.rainbowFirstPixelHue = 0 |
16 | 17 |
|
17 | 18 | # Default to a length of 60, start empty output |
18 | 19 | # Length is expensive to set, so only set it once, then just update data |
19 | | - self.m_led.setLength(kLEDBuffer) |
20 | | - |
21 | | - self.m_led.start() |
| 20 | + self.led.setLength(kLEDBuffer) |
| 21 | + |
| 22 | + # Set the data |
| 23 | + self.led.setData(self.ledData) |
| 24 | + self.led.start() |
22 | 25 |
|
23 | 26 | def robotPeriodic(self): |
24 | 27 | # Fill the buffer with a rainbow |
25 | 28 | self.rainbow() |
26 | | - |
| 29 | + |
27 | 30 | # Set the LEDs |
28 | | - if len(self.m_ledData) <= kLEDBuffer: |
29 | | - self.m_led.setData(self.m_ledData) |
| 31 | + self.led.setData(self.ledData) |
30 | 32 |
|
31 | 33 | def rainbow(self): |
32 | 34 | # For every pixel |
33 | 35 | for i in range(kLEDBuffer): |
34 | 36 | # Calculate the hue - hue is easier for rainbows because the color |
35 | 37 | # shape is a circle so only one value needs to precess |
36 | | - hue = (self.m_rainbowFirstPixelHue + (i * 180 / kLEDBuffer)) % 180 |
37 | | - |
38 | | - self.m_ledData.append(AddressableLED.LEDData()) |
39 | | - |
| 38 | + hue = (self.rainbowFirstPixelHue + (i * 180 / kLEDBuffer)) % 180 |
| 39 | + |
40 | 40 | # Set the value |
41 | | - self.m_ledData[i].setHSV(int(hue), 255, 128) |
| 41 | + self.ledData[i].setHSV(int(hue), 255, 128) |
42 | 42 |
|
43 | 43 | # Increase by to make the rainbow "move" |
44 | | - self.m_rainbowFirstPixelHue += 3 |
| 44 | + self.rainbowFirstPixelHue += 3 |
45 | 45 |
|
46 | 46 | # Check bounds |
47 | | - self.m_rainbowFirstPixelHue %= 100 |
| 47 | + self.rainbowFirstPixelHue %= 100 |
| 48 | + |
48 | 49 |
|
49 | | -if __name__ == '__main__': |
50 | | - run(MyRobot) |
| 50 | +if __name__ == "__main__": |
| 51 | + wpilib.run(MyRobot) |
0 commit comments