21. Lektion: Pin's: Unterschied zwischen den VersionenAus Attraktor Wiki
Version vom 2. Dezember 2023, 23:26 UhrInhaltsverzeichnisWas bietet uns die Klasse Pin?In Micropython ist der Zugriff auf die Hardware als Klasse implementiert. Für jeden Pin wird dementsprechend eine Instanz der Klasse Pin angelegt. Diese enthält die Einstellungen und die Daten des Pin.
Im Raspi Pico Microphyton:>>> import machine >>> dir(machine.Pin) ['__class__', '__name__', 'value', '__bases__', '__dict__', 'ALT', 'ALT_GPCK', 'ALT_I2C', 'ALT_PIO0', 'ALT_PIO1', 'ALT_PWM', 'ALT_SIO', 'ALT_SPI', 'ALT_UART', 'ALT_USB', 'IN', 'IRQ_FALLING', 'IRQ_RISING', 'OPEN_DRAIN', 'OUT', 'PULL_DOWN', 'PULL_UP', 'board', 'cpu', 'high', 'init', 'irq', 'low', 'off', 'on', 'toggle'] Pins initialisieren.So sieht eine umfangreiche Initialisierung aus: my_pin = machine.Pin(id, mode=- 1, pull=- 1, *, value=None, drive=0, alt=- 1) Üblicherweise reicht diese Kurzform:from machine import Pin p0 = Pin(0, Pin.OUT) p2 = Pin(2, Pin.IN, Pin.PULL_UP) Bedeutung der Parameter:
Methoden von Pin
Pins als Ausgangfrom machine import Pin pin_von_led = 22 led_pin = Pin(pin_von_led, Pin.OUT) led_pin.value(0) LED ansteuern.
LED blinken lassen.So findet man es zu Abtippen: while True: led_pin.value(1) sleep_ms(500) led_pin.value(0) sleep_ms(500) Hier eine Alternative: while True: if led_pin.value() == 0: led_pin.value(1) elif: led_pin.value(0) sleep_ms(500) Mit der toggle.Methode: while True: led_pin.toggle() sleep_ms(500) toggle / XOR '^'XOR ist eine logische Vernüpfung die nur 1 ergibt, wenn a oder b 1 ist, wenn a und b 1 sind wird 0 ausgegeben.
Übung:>>> pin_x = 0 >>> pin_x = pin_x ^ 1 >>> pin_x 1 >>> pin_x = pin_x ^ 1 >>> pin_x 0 >>> Als konkretes Beispiel: # mit toggle-Methode led_pin.toggle() # ohne toggle-Methode # mit bitwise xor led_pin.value(led_pin.value()^1) LED dimmen.Das Dimmen einer LED unterscheidet sich vom Blinken nur durch die Umschaltgeschwindigkeit. Sobald unser Auge den Wechel nicht mehr wahrnimmt, wird das Impuls-Pausen-Verhältnis in Helligkeit umgesetzt. Übung:
Pins als EingangTaster abfragen.Taster abfragenfrom machine import Pin pin_center = 15 button = Pin(pin_center, Pin.IN, Pin.PULL_DOWN) button.value() 0 # nun bei gedrückter Taste button.value() 1 Übung:
Übung:
Taster entprellen# button_6.py from machine import Pin from time import sleep_ms pin_center = 15 pin_led = 22 button = Pin(pin_center, Pin.IN, Pin.PULL_DOWN) led = Pin(pin_led, Pin.OUT) while True: while not button.value(): pass sleep_ms(15) if button.value(): led.toggle() while button.value(): pass Übung:
|