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.

../_images/musicplayer_list.png

Es ist definitiv praktisch, ein komplettes Set zu kaufen, hier ist der Link:

Name

ARTIKEL IN DIESEM KIT

LINK

Raphael Kit

337

Raphael Kit

Sie können sie auch separat über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

GPIO-Erweiterungsplatine

BUY

Steckbrett

BUY

Jumper-Kabel

BUY

Widerstand

BUY

Audio-Modul und Lautsprecher

-

Taste

BUY

Schaltplan

T-Board Name

physical

wiringPi

BCM

GPIO17

Pin 11

0

17

GPIO18

Pin 12

1

18

GPIO27

Pin 13

2

27

../_images/3.1.16_schematic.png

Experimentelle Verfahren

Schritt 1: Bauen Sie den Schaltkreis.

../_images/3.1.16fritzing.png

Nachdem Sie den Schaltkreis gemäß dem obigen Diagramm gebaut haben, stecken Sie das Audiokabel in die 3,5-mm-Audiobuchse des Raspberry Pi.

../_images/audio41.png

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 Unterbrechungsfunktion play() ausgeführt.

  • Wenn BtnPin2 gedrückt wird, wird die Unterbrechungsfunktion volDown() ausgeführt.

  • Wenn BtnPin3 gedrückt wird, wird die Unterbrechungsfunktion volUp() ausgeführt.

Phänomen-Bild

../_images/4.1.2musicplayer.JPG