21. Lektion: Pin's: Difference between revisions
Jump to navigation
Jump to search
m Kapest moved page 18. Lektion: Pin's to 21. Lektion: Pin's |
|
(No difference)
| |
Revision as of 22:14, 5 October 2023
Was bietet uns die Klasse Pin?
Im M5Microphyton:
>>> import machine >>> dir(machine.Pin) ['__class__', '__name__', 'value', '__bases__', '__dict__', 'IN', 'IRQ_FALLING', 'IRQ_RISING', 'OPEN_DRAIN', 'OUT', 'PULL_DOWN', 'PULL_HOLD', 'PULL_UP', 'WAKE_HIGH', 'WAKE_LOW', 'init', 'irq', 'off', 'on']
Im Raspi 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:
- id
- Nummer des Pin (GPIOxx)
- mode
- Pin.IN, Pin.OUT, Pin.OPEN_DRAIN
Open Collector / Open Drain - pull
- None, Pin.PULL_UP, Pin.PULL_DOWN
PullUp / PullDown
Methoden von Pin
- Pin.init(mode=- 1, pull=- 1, *, value=None, drive=0, alt=- 1)
- Neuinitialisierung des Pins unter Verwendung der angegebenen Parameter.
- Pin.value(x)
- Diese Methode ermöglicht das Setzen und Lesen des Pins. Wird x (0 oder 1) angegeben wird der Pin darauf gesetzt. Ohne x wird der Wert des Pins ausgelesen.
Verhalten von Pin.value() - Pin.high()
- Setzt den Pin auf 1. Nicht ESP32!
- Pin.low()
- Setzt den Pin auf 0. Nicht ESP32!
- Pin.off()
- Setzt den Pin auf 0.
- Pin.on()
- Setzt den Pin auf 1.
- Pin.toggle()
- Pin invertieren. Nur Raspberry Pi Pico. Nicht bei docs.micropython.org erwähnt.
Pins als Ausgang
from machine import Pin pin_von_led = 25 led_pin = Pin(pin_von_led, Pin.OUT) led_pin.value(0)
LED ansteuern.
- Anschaltung
- nach Vcc
- nach GND
- Software
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.
| A | B | Q |
|---|---|---|
| 0 | 0 | 0 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 1 | 0 |
Ü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:
- Schreibt ein Programm mit dem die Helligkeit der LED verändert werden kann.
- Ändert dazu den Wert von sleep_ms() auf 10 und 1.
- Die Helligkeit wird nicht im laufenden Programm geändert. Dazu wird das Programm gestoppt. Entsprechende Werte im Script geändert und neu gestartet.
- Ersetzt sleep_ms() durch sleep_us() und passt den Wert an.
Pins als Eingang
Taster abfragen.
Taster abfragen
Übung:
- Schreibe ein Programm, das die LED leuchten lässt wenn der Taster gedrückt ist.
Übung:
- Schreibe ein Programm, dass beim ersten Tastendruck die LED einschaltet und beim nächsten sie wieder ausschaltet.
Taster entprellen
Übung:
- Übung 1:
- Schreibe ein Programm bei dem Du mit der Taste die Blinkfrequenz verändern kannst.
- max: 1000ms, min: 100ms, step: 100ms.
- Schreibe ein Programm bei dem Du mit der Taste die Blinkfrequenz verändern kannst.
- Übung 2:
- Schreibe ein Programm bei dem Du mit der Taste die Helligkeit verändern kannst.
- max. 100%, min: 0%., step: 10%.
- Schreibe ein Programm bei dem Du mit der Taste die Helligkeit verändern kannst.