Bemerkung
Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.
Warum beitreten?
Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.
Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.
Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.
Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.
👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [hier] und treten Sie heute bei!
4.1.2 Musikspieler¶
Einführung¶
Im Projekt 3.1.3 Audiomodul lässt der Lautsprecher einen Song spielen. Jetzt fügen wir 3 Tasten hinzu, um das Abspielen/Pausieren und die Lautstärke der Musik zu steuern.
Benötigte Komponenten¶
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein komplettes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
Raphael Kit |
337 |
Sie können sie auch separat über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
|
Schaltplan¶
T-Board Name |
physical |
wiringPi |
BCM |
GPIO17 |
Pin 11 |
0 |
17 |
GPIO18 |
Pin 12 |
1 |
18 |
GPIO27 |
Pin 13 |
2 |
27 |
Experimentelle Verfahren¶
Schritt 1: Bauen Sie den Schaltkreis.
Nachdem Sie den Schaltkreis gemäß dem obigen Diagramm gebaut haben, stecken Sie das Audiokabel in die 3,5-mm-Audiobuchse des Raspberry Pi.
Schritt 2: Wechseln Sie in den Ordner des Codes.
cd ~/raphael-kit/python/
Schritt 3: Starten Sie den Code.
python3 4.1.2_MusicPlayer.py
Nachdem der Code ausgeführt wurde, wird der Raspberry Pi die Datei my_music.mp3
im Verzeichnis ~/raphael-kit/music
abspielen.
Taste 1 pausiert/spielt die Musik.
Taste 2 verringert die Lautstärke.
Taste 3 erhöht die Lautstärke.
Wenn Sie andere Musikdateien auf den Raspberry Pi hochladen möchten, können Sie sich auf Filezilla Software beziehen.
Code
Bemerkung
Sie können den untenstehenden Code Ändern/Zurücksetzen/Kopieren/Starten/Stoppen. Bevor Sie das tun, müssen Sie jedoch zum Quellcode-Pfad wie raphael-kit/python
wechseln. Nachdem Sie den Code geändert haben, können Sie ihn direkt ausführen, um das Ergebnis zu sehen.
from pygame import mixer
import RPi.GPIO as GPIO
import time
import os
user = os.getlogin()
user_home = os.path.expanduser(f'~{user}')
BtnPin1 = 18
BtnPin2 = 17
BtnPin3 = 27
volume = 0.7
status = False
upPressed = False
downPressed = False
playPressed = False
def setup():
mixer.init()
GPIO.setmode(GPIO.BCM)
GPIO.setup(BtnPin1, GPIO.IN, GPIO.PUD_UP)
GPIO.setup(BtnPin2, GPIO.IN, GPIO.PUD_UP)
GPIO.setup(BtnPin3, GPIO.IN, GPIO.PUD_UP)
def clip(x,min,max):
if x < min:
return min
elif x > max:
return max
return x
def play(pin):
global playPressed
playPressed = True
def volDown(pin):
global downPressed
downPressed = True
def volUp(pin):
global upPressed
upPressed = True
def main():
global volume, status
global downPressed, upPressed, playPressed
mixer.music.load(f'{user_home}/raphael-kit/music/my_music.mp3')
mixer.music.set_volume(volume)
mixer.music.play()
GPIO.add_event_detect(BtnPin1, GPIO.FALLING, callback=play)
GPIO.add_event_detect(BtnPin2, GPIO.FALLING, callback=volDown)
GPIO.add_event_detect(BtnPin3, GPIO.FALLING, callback=volUp)
while True:
if upPressed:
volume = volume + 0.1
upPressed = False
if downPressed:
volume = volume - 0.1
downPressed = False
if playPressed:
if status:
mixer.music.pause()
status = not status
else:
mixer.music.unpause()
status = not status
playPressed = False
time.sleep(0.5)
volume = clip(volume,0.2,1)
mixer.music.set_volume(volume)
time.sleep(0.1)
def destroy():
# Release resource
GPIO.cleanup()
mixer.music.stop()
# If run this script directly, do:
if __name__ == '__main__':
setup()
try:
main()
# When 'Ctrl+C' is pressed, the program
# destroy() will be executed.
except KeyboardInterrupt:
destroy()
Code-Erklärung
from pygame import mixer
mixer.init()
Importiere die Methode Mixer
aus der Bibliothek pygame
und initialisiere die Methode.
BtnPin1 = 18
BtnPin2 = 17
BtnPin3 = 27
volume = 0.7
Definiere die Pin-Ports der drei Tasten und setze die Anfangslautstärke auf 0.7.
upPressed = False
downPressed = False
playPressed = False
UpPressed
, downPressed
und playPressed
sind alle Unterbrechungsflags. Die zugehörige Aufgabe wird ausgeführt, wenn sie auf True
gesetzt sind.
def clip(x,min,max):
if x < min:
return min
elif x > max:
return max
return x
Die Funktion clip()
wird verwendet, um die oberen und unteren Grenzen der Eingabeparameter festzulegen.
GPIO.add_event_detect(BtnPin1, GPIO.FALLING, callback=play)
GPIO.add_event_detect(BtnPin2, GPIO.FALLING, callback=volDown)
GPIO.add_event_detect(BtnPin3, GPIO.FALLING, callback=volUp)
Setze die Tastenerkennungsereignisse von BtnPin1
, BtnPin2
und BtnPin3
.
Wenn
BtnPin1
gedrückt wird, wird die Unterbrechungsfunktionplay()
ausgeführt.Wenn
BtnPin2
gedrückt wird, wird die UnterbrechungsfunktionvolDown()
ausgeführt.Wenn
BtnPin3
gedrückt wird, wird die UnterbrechungsfunktionvolUp()
ausgeführt.