Outils pour utilisateurs

Outils du site


wiki:tutoriels:jukebox_raspberry

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
wiki:tutoriels:jukebox_raspberry [2020/06/29 17:11]
damien.muti [Programme en Python]
— (Version actuelle)
Ligne 1: Ligne 1:
-====== Construire un Juke-box avec un Raspberry Pi ====== 
-  * Porteur du projet : Damien MUTI DESGROUAS,  
-  * Date : Juillet 2018 
-  * Contexte : Apprentissage libre - Outil de développement de projet  
-  * Référence : ouvrage "[[https://www.raspberrypi.org/blog/carrie-anne-philbins-adventures-in-raspberry-pi/|Adventures in Raspberry Pi]]" 
  
-{{ :wiki:tutoriels:couverture_livre_adventures_in_raspberry_pi.png?200 |}} 
- 
-===== Présentation du projet ===== 
-Ce projet est tiré du chapitre 9 de l'ouvrage (en anglais) intitulé "Adventures in Raspberry Pi" disponible sur le [[https://www.raspberrypi.org/blog/carrie-anne-philbins-adventures-in-raspberry-pi/|lien suivant]]. Il s'agit d'un recueil de 10 projets permettant de se familiariser avec certains fonctionnalités de programmation et de traitement d'image de Raspberry Pi. 
- 
-Ce projet permet de réaliser un Juke-box miniature à l'aide d'un Rasberry Pi. Il est composé d'une interface permettant de lire le titre des morceaux ainsi que le nom de l'artiste, via un écran LCD. L'interactivité s'effectue grâce à 4 boutons permettant de jouer ou mettre en pause (Play/Pause), stopper (Stop), avancer ou reculer dans la liste des morceaux à jouer. 
- 
-===== Schéma du montage ===== 
- 
-Le schéma (fritzing) du montage est le suivant : 
-{{ :wiki:tutoriels:montage_fritzing_1.png?600 |}} 
- 
- 
-Les connections entre le Raspberry et les différents éléments (écran LCD, boutons, potentiomètre) sont les suivants (voir livre p201, 202, 212, 213): 
-  * A compléter... 
- 
-  
-===== Programme en Python ===== 
- 
-Le programme final permettant de contrôler la lecture des morceaux mp3 est le suivant : 
-<code> 
-#librairies 
-import glob, random, sys, vlc, time 
-import RPi.GPIO as GPIO 
-from Adafruit_CharLCD import * 
- 
- 
-#variables globales 
- 
-# début du programme 
- 
-#vérification des dossiers contenant de la musique .mp3 
-if (len(sys.argv)) <=1: 
-    print("Merci de préciser un dossier contenant des fichiers .mp3") 
-    sys.exit(1) 
- 
-folder = sys.argv[1] 
-files = glob.glob(folder+"/*.mp3") 
-print(files) 
-if (len(files) == 0): 
-    print("Il n'y a pas de fichiers .mp3 dans le dossier ", folder) 
-    sys.exit(1) 
- 
- 
-# setup des pattes GPIO du raspbery 
-GPIO.setmode(GPIO.BCM) 
- 
-PLAY_BUTTON = 11 
-STOP_BUTTON = 7 
-BACK_BUTTON = 4 
-FORWARD_BUTTON = 10 
- 
-GPIO.setup(PLAY_BUTTON,GPIO.IN) 
-GPIO.setup(STOP_BUTTON,GPIO.IN) 
-GPIO.setup(BACK_BUTTON,GPIO.IN) 
-GPIO.setup(FORWARD_BUTTON,GPIO.IN) 
- 
-# gestion de l'afficheur LCD 
-lcd = Adafruit_CharLCD() 
-lcd.clear 
-lcd.message("lancement de la musique !!") 
-print("lancement de la musique !!") 
- 
- 
- 
-# mode shuffle : met dans un ordre aléatoire tous les fichiers .mp3 contenu dans le tableau "files" 
-random.shuffle(files) 
- 
-#chargement des fichiers dans vlc 
-player = vlc.MediaPlayer() 
-medialist = vlc.MediaList(files) 
-mlPlayer = vlc.MediaListPlayer() 
-mlPlayer.set_media_player(player) 
-mlPlayer.set_media_list(medialist) 
- 
-def handle_changed_track(event, player): 
-    media = player.get_media() 
-    media.parse() 
-    artist = media.get_meta(vlc.Meta.Artist) or "Artiste inconnu" 
-    title = media.get_meta(vlc.Meta.Title) or "Titre de la chanson inconnu" 
-    album = media.get_meta(vlc.Meta.Album) or "Album de la chanson inconnu" 
-    lcd.clear() 
-    lcd.message(title + "\n" + artist + " - " + album) 
- 
-playerem = player.event_manager() 
-playerem.event_attach(vlc.EventType.MediaPlayerMediaChanged, handle_changed_track, player) 
- 
- 
- 
-# boucle infinie 
- 
-while True: 
-    #button = input("Appuyer sur la touche : 1, 2, 3, ou 4 ___ ") 
-    if GPIO.input(PLAY_BUTTON): #bouton Play/Pause 
-        print("Le bouton Play a été pressé") 
-        #print(title) 
-        if mlPlayer.is_playing(): 
-            mlPlayer.pause() 
-        else : 
-            mlPlayer.play(); 
-    elif GPIO.input(STOP_BUTTON): #bouton pause 
-        print("Le bouton Stop a été pressé") 
-        mlPlayer.stop() #arrêter la musique 
- 
-        random.shuffle(files) #met dans un ordre aléatoire tous les fichiers .mp3 contenu dans le tableau "files" 
-        medialist = vlc.MediaList(files) 
-        mlPlayer.set_media_list(medialist) 
- 
-    elif GPIO.input(BACK_BUTTON): 
-        print("Le bouton Back a été pressé") 
-        mlPlayer.previous() 
-         
-    elif GPIO.input(FORWARD_BUTTON): 
-        print("Le bouton Forward a été pressé") 
-        mlPlayer.next() 
-             
-    time.sleep(0.3) 
-    lcd.scrollDisplayLeft() 
-     
-</code> 
- 
-Le fichier fichier python peut être directement téléchargé sur le lien suivant : 
-  * {{ :wiki:tutoriels:jukebox_4.py.zip |python4.py}} 
- 
-Il est nécessaire de placer les morceaux de musique au format .mp3 dans un dossier "Musique" situé dans le dossier contenant le programme "jukebox4.py". 
- 
-Pour lancer le programme, il faut ouvrir un terminal et se placer dans le dossier contenant le programme "Jukebox4.py" : 
-{{ :wiki:tutoriels:terminal_1.png?600 |}} 
- 
-il faut ensuite lancer le code python dans le terminal : 
- 
-<code> 
-sudo pyhton3 Jukebox4.py 
-</code> 
- 
-{{ :wiki:tutoriels:terminal_2.png?600 |}} 
wiki/tutoriels/jukebox_raspberry.1593443494.txt.gz · Dernière modification: 2020/06/29 17:11 de damien.muti