ton-solange-gedrueckt
Bauteil: DS425 Pushbutton ยท Kategorie: input
Der Ton erklingt durchgehend, solange der Taster gehalten wird. Loslassen -> Ton sofort aus. Aufbauend auf ton-bei-druck.
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
Identisch zu ton-bei-druck:
micro:bit DS425 (Momentary)
+---------+ +---------------+
| P0 |-----------------------| Bein A (Seite 1)
| GND |-----------------------| Bein B (Seite 2)
+---------+ +---------------+
Diagonal gegenueberliegende Beine. Kein externer Widerstand - Pull-up per Code.
Foto der Verkabelung
Foto nach dem Test in wiring/ ablegen und hier einbinden:
Wie der Code funktioniert
| Ereignis | Aktion |
|---|---|
| Taster gedrueckt (Flanke) | music.pitch(440, -1, pin=None, wait=False) -> Dauerton startet |
| Taster losgelassen (Flanke) | music.stop() -> Ton endet |
duration=-1: der Ton spielt endlos, bismusic.stop()aufgerufen wird.wait=False: der Ton laeuft im Hintergrund, die Schleife arbeitet weiter und kann so das Loslassen erkennen.
Programm
Ganzer Code, Quelle main.py (hier automatisch eingefuegt):
# Sample: ton-solange-gedrueckt (DS425 Pushbutton)
# Board: BBC micro:bit V2.2
# Sprache: MicroPython
#
# Ziel: Der Ton erklingt genau so lange, wie der Taster gedrueckt gehalten wird.
# Loslassen -> Ton aus.
#
# --------------------------------------------------------------------------
# Verkabelung (identisch zu Sample "ton-bei-druck")
# --------------------------------------------------------------------------
# Taster-Bein 1 -> Pin P0
# Taster-Bein 2 -> Pin GND
#
# Interner Pull-up von P0 aktiv:
# - losgelassen: P0 = 1
# - gedrueckt: P0 = 0
# --------------------------------------------------------------------------
from microbit import *
import music
pin0.set_pull(pin0.PULL_UP)
war_gedrueckt = False
while True:
gedrueckt = (pin0.read_digital() == 0)
if gedrueckt and not war_gedrueckt:
# Flanke: gerade gedrueckt -> Dauerton starten
# duration=-1 -> spielt endlos weiter
# wait=False -> Programm laeuft weiter (Ton im Hintergrund)
# pin=None -> nur ueber den eingebauten Lautsprecher (V2)
music.pitch(440, -1, pin=None, wait=False)
display.show(Image.MUSIC_QUAVER)
elif not gedrueckt and war_gedrueckt:
# Flanke: gerade losgelassen -> Ton stoppen
music.stop()
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 und halten -> Note-Symbol auf der Matrix + Dauerton (440 Hz)
- Taster loslassen -> Matrix aus, Ton stoppt sofort
Moegliche Erweiterungen
- Tonhoehe von einem Poti an
P1abhaengig machen - Mehrere Taster = mehrere Toene (kleine Orgel)
- Beim Halten die Tonhoehe langsam ansteigen lassen