__init__.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. """
  2. Example Lib
  3. """
  4. from machine import Pin, Timer
  5. class foo:
  6. """
  7. Example class.
  8. """
  9. ############################## Attributes ##############################
  10. ############################## Constructor ##############################
  11. def __init__(self, led_Pin_button:Pin, button:Pin, led_Pin_timer:Pin = Pin(3),):
  12. self.__led_pin_timer = self.__check_pin(led_Pin_timer)
  13. self.__led_pin_button = self.__check_pin(led_Pin_button)
  14. self.__button = self.__check_pin(button)
  15. self.__led_pin_timer.init(mode=Pin.OUT)
  16. self.__led_pin_button.init(mode=Pin.OUT)
  17. self.__button.init(mode=Pin.IN)
  18. self.__timer = Timer()
  19. self.__timer.init(mode=Timer.PERIODIC, period=200, callback=self.__blink_handler)
  20. self.__button.irq(handler=self.__int_handler, hard=True, trigger=Pin.IRQ_FALLING)
  21. ############################## Property ##############################
  22. # zum Aufruf privater Variablen
  23. @property
  24. def button(self):
  25. """button
  26. Returns:
  27. _button_: _description_
  28. """
  29. return self.__button
  30. # bei Veränderung der Variable wird die folgende Funktion ausgeführt
  31. @button.setter
  32. def button(self, pin):
  33. self.__button = self.__check_pin(pin)
  34. """ wenn Variable nicht geändert werden darf:
  35. raise AttributeError("Du darfst den Pin nicht verändern!")
  36. """
  37. ############################## Methods ##############################
  38. # private Methode zur Überprüfung des Datentyps
  39. def __check_pin(self, pin:Pin):
  40. if not isinstance(pin, Pin):
  41. raise ValueError(f"Value \"{pin}\" of \"pin\" is not of type \"{Pin}\"")
  42. else:
  43. return pin
  44. # übergabe von timer ist für Timer-Interrupt immer notwendig
  45. def __blink_handler(self, timer):
  46. self.__led_pin_timer.toggle()
  47. # übergabe von pin ist für Pin-Interrupt immer notwendig
  48. def __int_handler(self, pin):
  49. self.__led_pin_button.toggle()