Note
Bonjour et bienvenue dans la Communauté Facebook des passionnés de Raspberry Pi, Arduino et ESP32 de SunFounder ! Plongez plus profondément dans l’univers des Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.
Pourquoi rejoindre ?
Support d’experts : Résolvez les problèmes après-vente et les défis techniques avec l’aide de notre communauté et de notre équipe.
Apprendre et partager : Échangez des astuces et des tutoriels pour améliorer vos compétences.
Aperçus exclusifs : Accédez en avant-première aux annonces de nouveaux produits et aux aperçus.
Réductions spéciales : Profitez de réductions exclusives sur nos produits les plus récents.
Promotions festives et cadeaux : Participez à des cadeaux et des promotions de vacances.
👉 Prêt à explorer et à créer avec nous ? Cliquez [Ici] et rejoignez-nous aujourd’hui !
4.1.2 Lecteur de Musique
Introduction
Dans le projet 3.1.3 Module Audio, nous avons fait jouer une chanson par un haut-parleur. Maintenant, nous ajoutons 3 boutons pour contrôler la lecture/pause et le volume de la musique.
Composants Nécessaires
Pour ce projet, nous avons besoin des composants suivants.
Il est certainement pratique d’acheter un kit complet, voici le lien :
Nom |
ÉLÉMENTS DANS CE KIT |
LIEN |
|---|---|---|
Kit Raphael |
337 |
Vous pouvez également les acheter séparément via les liens ci-dessous.
INTRODUCTION DES COMPOSANTS |
LIEN D’ACHAT |
|---|---|
- |
|
Schéma de Câblage
Nom de la T-Board |
physique |
wiringPi |
BCM |
GPIO17 |
Pin 11 |
0 |
17 |
GPIO18 |
Pin 12 |
1 |
18 |
GPIO27 |
Pin 13 |
2 |
27 |
Procédures Expérimentales
Étape 1 : Construire le circuit.
Après avoir construit le circuit selon le schéma ci-dessus, branchez le câble audio dans la prise audio 3,5 mm du Raspberry Pi.
Étape 2 : Accéder au dossier du code.
cd ~/raphael-kit/python/
Étape 3 : Exécuter.
python3 4.1.2_MusicPlayer.py
Après l’exécution du code, le Raspberry Pi jouera le fichier my_music.mp3 dans le répertoire ~/raphael-kit/music.
Le bouton 1 met la musique en pause/lecture.
Le bouton 2 diminue le volume.
Le bouton 3 augmente le volume.
Si vous souhaitez télécharger d’autres fichiers musicaux sur le Raspberry Pi, vous pouvez vous référer à Logiciel FileZilla.
Code
Note
Vous pouvez Modifier/Réinitialiser/Copier/Exécuter/Arrêter le code ci-dessous. Mais avant cela, vous devez accéder au chemin du code source comme raphael-kit/python. Après avoir modifié le code, vous pouvez l’exécuter directement pour voir l’effet.
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()
Explication du Code
from pygame import mixer
mixer.init()
Importer la méthode mixer de la bibliothèque pygame et initialiser la méthode.
BtnPin1 = 18
BtnPin2 = 17
BtnPin3 = 27
volume = 0.7
Définir les ports des trois boutons et régler le volume initial à 0,7.
upPressed = False
downPressed = False
playPressed = False
upPressed, downPressed et playPressed sont tous des indicateurs d’interruption. La tâche correspondante sera exécutée lorsqu’ils sont True.
def clip(x,min,max):
if x < min:
return min
elif x > max:
return max
return x
La fonction clip() est utilisée pour définir les limites supérieure et inférieure des paramètres d’entrée.
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)
Définir les événements de détection des touches BtnPin1, BtnPin2 et BtnPin3.
Lorsque
BtnPin1est pressé, la fonction d’interruptionplay()est exécutée.Lorsque
BtnPin2est pressé, la fonction d’interruptionvolDown()est exécutée.Lorsque
BtnPin3est pressé, la fonction d’interruptionvolUp()est exécutée.