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.

../_images/musicplayer_list.png

Il est certainement pratique d’acheter un kit complet, voici le lien :

Nom

ÉLÉMENTS DANS CE KIT

LIEN

Kit Raphael

337

Raphael Kit

Vous pouvez également les acheter séparément via les liens ci-dessous.

INTRODUCTION DES COMPOSANTS

LIEN D’ACHAT

Carte d’extension GPIO

ACHETER

Plaque d’expérimentation (Breadboard)

ACHETER

Fils de Liaison

ACHETER

Résistance

ACHETER

Module Audio et Haut-parleur

-

Bouton

ACHETER

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

../_images/3.1.16_schematic.png

Procédures Expérimentales

Étape 1 : Construire le circuit.

../_images/3.1.16fritzing.png

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.

../_images/audio41.png

É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 BtnPin1 est pressé, la fonction d’interruption play() est exécutée.

  • Lorsque BtnPin2 est pressé, la fonction d’interruption volDown() est exécutée.

  • Lorsque BtnPin3 est pressé, la fonction d’interruption volUp() est exécutée.

Image du Phénomène

../_images/4.1.2musicplayer.JPG