""" Example Lib """ from machine import Pin, Timer class foo: """ Example class. """ ############################## Attributes ############################## ############################## Constructor ############################## def __init__(self, led_Pin_button:Pin, button:Pin, led_Pin_timer:Pin = Pin(3),): self.__led_pin_timer = self.__check_pin(led_Pin_timer) self.__led_pin_button = self.__check_pin(led_Pin_button) self.__button = self.__check_pin(button) self.__led_pin_timer.init(mode=Pin.OUT) self.__led_pin_button.init(mode=Pin.OUT) self.__button.init(mode=Pin.IN) self.__timer = Timer() self.__timer.init(mode=Timer.PERIODIC, period=200, callback=self.__blink_handler) self.__button.irq(handler=self.__int_handler, hard=True, trigger=Pin.IRQ_FALLING) ############################## Property ############################## # zum Aufruf privater Variablen @property def button(self): """button Returns: _button_: _description_ """ return self.__button # bei Veränderung der Variable wird die folgende Funktion ausgeführt @button.setter def button(self, pin): self.__button = self.__check_pin(pin) """ wenn Variable nicht geändert werden darf: raise AttributeError("Du darfst den Pin nicht verändern!") """ ############################## Methods ############################## # private Methode zur Überprüfung des Datentyps def __check_pin(self, pin:Pin): if not isinstance(pin, Pin): raise ValueError(f"Value \"{pin}\" of \"pin\" is not of type \"{Pin}\"") else: return pin # übergabe von timer ist für Timer-Interrupt immer notwendig def __blink_handler(self, timer): self.__led_pin_timer.toggle() # übergabe von pin ist für Pin-Interrupt immer notwendig def __int_handler(self, pin): self.__led_pin_button.toggle()