Add kitronic 10
This commit is contained in:
parent
90858fd797
commit
0fba1b4819
1 changed files with 73 additions and 0 deletions
73
kitronic_10.py
Normal file
73
kitronic_10.py
Normal file
|
@ -0,0 +1,73 @@
|
|||
from microbit import *
|
||||
|
||||
LIMIT = 1020
|
||||
STEP = 204
|
||||
|
||||
PIN8 = "PIN8"
|
||||
PIN12 = "PIN12"
|
||||
PIN16 = "PIN16"
|
||||
|
||||
|
||||
class Main:
|
||||
def __init__(self):
|
||||
self._debounce = {PIN8: False, PIN12: False, PIN16: False}
|
||||
self._pins = {PIN8: pin8, PIN12: pin12, PIN16: pin16}
|
||||
self.red = 0
|
||||
self.green = 0
|
||||
self.blue = 0
|
||||
|
||||
def main(self):
|
||||
while True:
|
||||
self._forever()
|
||||
|
||||
def _forever(self):
|
||||
pin0.write_analog(self.red)
|
||||
pin1.write_analog(self.green)
|
||||
pin2.write_analog(self.blue)
|
||||
self._display_percents()
|
||||
|
||||
self._update_color(PIN8, "green")
|
||||
self._update_color(PIN12, "red")
|
||||
self._update_color(PIN16, "blue")
|
||||
|
||||
def _update_color(self, pin: str, color: str):
|
||||
if self._rising_edge(pin):
|
||||
color_value = getattr(self, color)
|
||||
if color_value < LIMIT:
|
||||
setattr(self, color, color_value + STEP)
|
||||
else:
|
||||
setattr(self, color, 0)
|
||||
|
||||
def _display_percents(self):
|
||||
red_level = self._compute_level(self.red)
|
||||
green_level = self._compute_level(self.green)
|
||||
blue_level = self._compute_level(self.blue)
|
||||
red_row = self._compute_row(red_level)
|
||||
green_row = self._compute_row(green_level)
|
||||
blue_row = self._compute_row(blue_level)
|
||||
empty_row = "00000"
|
||||
display.show(
|
||||
Image(":".join([red_row, empty_row, green_row, empty_row, blue_row]))
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def _compute_level(color):
|
||||
return int(color / LIMIT * 6)
|
||||
|
||||
@staticmethod
|
||||
def _compute_row(color_level):
|
||||
return "9" * color_level + "0" * (5 - color_level)
|
||||
|
||||
def _rising_edge(self, pin: str):
|
||||
real_pin = self._pins[pin]
|
||||
pin_value = real_pin.read_digital()
|
||||
if pin_value == 1 and not self._debounce[pin]:
|
||||
self._debounce[pin] = True
|
||||
return True
|
||||
elif pin_value != 1:
|
||||
self._debounce[pin] = False
|
||||
return False
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
Main().main()
|
Loading…
Reference in a new issue