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.
Image du Phénomène