ton-bei-druck
Bauteil: DS425 Pushbutton ยท Kategorie: input
Beim Druecken zeigt die LED-Matrix ein Herz und der eingebaute Lautsprecher gibt einen kurzen Ton aus. Loslassen -> Matrix aus.
Material
| Anzahl | Bauteil |
|---|---|
| 1 | micro:bit V2.2 |
| 1 | Pushbutton Switch DS425 Momentary |
| 1 | Steckbrett |
| 2 | Jumperkabel bzw. Krokoklemmen |
Masse fuers CAD: ../../../../hardware/input/ds425-pushbutton/
Verkabelung
micro:bit DS425 (Momentary)
+---------+ +---------------+
| P0 |-----------------------| Bein A (Seite 1)
| GND |-----------------------| Bein B (Seite 2)
+---------+ +---------------+
losgelassen: P0 = 1 (interner Pull-up zieht auf 3V)
gedrueckt: P0 = 0 (Taster verbindet P0 mit GND)
Wichtig zum DS425: 4 Beine, je zwei gegenueberliegende sind fest verbunden.
Beim Druecken werden die beiden Seiten kurzgeschlossen. Deshalb je ein Bein von
zwei gegenueberliegenden Seiten verwenden (diagonal). Kein externer Widerstand -
der Pull-up wird im Code mit pin0.set_pull(pin0.PULL_UP) aktiviert.
Foto der Verkabelung
Nach dem Test ein Foto in wiring/ ablegen und hier einbinden:
Wie der Code funktioniert
pin0.set_pull(pin0.PULL_UP)schaltet den internen Pull-up ein ->P0ist im Ruhezustand1, beim Druecken0.- Die Schleife merkt sich mit
war_gedruecktden letzten Zustand und reagiert nur auf die Flanke (Wechsel losgelassen -> gedrueckt), nicht auf das blosse Gedrueckt-Halten. music.pitch(880, 120, pin=None)spielt 880 Hz fuer 120 ms ueber den eingebauten Lautsprecher (pin=None), damitP0fuer den Taster frei bleibt.
Programm
Ganzer Code, Quelle main.py (hier automatisch eingefuegt):
# Sample: ton-bei-druck (DS425 Pushbutton)
# Board: BBC micro:bit V2.2
# Sprache: MicroPython
#
# Ziel: Ein externer Taster (Pushbutton Switch DS425 Momentary) wird ueber
# die Pins mit dem micro:bit verbunden. Beim Druecken erscheint ein Herz
# auf der LED-Matrix und es ertoent ein kurzer Ton.
#
# --------------------------------------------------------------------------
# Verkabelung
# --------------------------------------------------------------------------
# Taster-Bein 1 -> Pin P0
# Taster-Bein 2 -> Pin GND
#
# Der DS425 hat 4 Beine. Je zwei gegenueberliegende Beine sind fest
# miteinander verbunden. Beim Druecken werden die beiden Seiten verbunden.
# -> Ein Bein einer Seite an P0, ein Bein der ANDEREN Seite an GND
# (am besten diagonal gegenueberliegende Beine verwenden).
#
# Es wird KEIN externer Widerstand benoetigt: der interne Pull-up-Widerstand
# von P0 wird per Software eingeschaltet.
# - Taster losgelassen: P0 = 1 (High, ueber Pull-up an 3V)
# - Taster gedrueckt: P0 = 0 (Low, direkt an GND)
# --------------------------------------------------------------------------
from microbit import *
import music
# P0 als Eingang mit internem Pull-up-Widerstand konfigurieren.
# Ohne Pull-up "schwebt" der Pin und liefert zufaellige Werte.
pin0.set_pull(pin0.PULL_UP)
war_gedrueckt = False
while True:
# Taster schliesst gegen GND -> gedrueckt entspricht dem Wert 0
gedrueckt = (pin0.read_digital() == 0)
if gedrueckt and not war_gedrueckt:
# Flanke: gerade eben gedrueckt
display.show(Image.HEART)
# 880 Hz fuer 120 ms. pin=None -> Ton nur ueber den
# eingebauten Lautsprecher des micro:bit V2 (P0 bleibt frei fuer den Taster).
music.pitch(880, 120, pin=None)
elif not gedrueckt and war_gedrueckt:
# Flanke: gerade losgelassen
display.clear()
war_gedrueckt = gedrueckt
sleep(10) # kurze Pause = einfache Entprellung
Auf den micro:bit uebertragen
https://python.microbit.org/v/3 -> Code einfuegen -> Connect -> Send to micro:bit. Details: ../../../../docs/setup.md.
Erwartetes Verhalten
- Taster druecken -> Herz auf der Matrix + Ton (880 Hz, kurz)
- Taster loslassen -> Matrix wird dunkel
Moegliche Erweiterungen
- Zaehler, der bei jedem Druck hochzaehlt
- Zweiten Taster an
P1fuer eine zweite Funktion - Langes vs. kurzes Druecken unterscheiden