Ci-dessous, les différences entre deux révisions de la page.
| 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 " | ||
| - | {{ : | ||
| - | |||
| - | ===== Présentation du projet ===== | ||
| - | Ce projet est tiré du chapitre 9 de l' | ||
| - | |||
| - | 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' | ||
| - | |||
| - | ===== Schéma du montage ===== | ||
| - | |||
| - | Le schéma (fritzing) du montage est le suivant : | ||
| - | {{ : | ||
| - | |||
| - | |||
| - | 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 : | ||
| - | < | ||
| - | #librairies | ||
| - | import glob, random, sys, vlc, time | ||
| - | import RPi.GPIO as GPIO | ||
| - | from Adafruit_CharLCD import * | ||
| - | |||
| - | |||
| - | #variables globales | ||
| - | |||
| - | # début du programme | ||
| - | |||
| - | # | ||
| - | if (len(sys.argv)) <=1: | ||
| - | print(" | ||
| - | sys.exit(1) | ||
| - | |||
| - | folder = sys.argv[1] | ||
| - | files = glob.glob(folder+"/ | ||
| - | print(files) | ||
| - | if (len(files) == 0): | ||
| - | print(" | ||
| - | 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.setup(STOP_BUTTON, | ||
| - | GPIO.setup(BACK_BUTTON, | ||
| - | GPIO.setup(FORWARD_BUTTON, | ||
| - | |||
| - | # gestion de l' | ||
| - | lcd = Adafruit_CharLCD() | ||
| - | lcd.clear | ||
| - | lcd.message(" | ||
| - | print(" | ||
| - | |||
| - | |||
| - | |||
| - | # mode shuffle : met dans un ordre aléatoire tous les fichiers .mp3 contenu dans le tableau " | ||
| - | 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, | ||
| - | media = player.get_media() | ||
| - | media.parse() | ||
| - | artist = media.get_meta(vlc.Meta.Artist) or " | ||
| - | 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 + " | ||
| - | |||
| - | playerem = player.event_manager() | ||
| - | playerem.event_attach(vlc.EventType.MediaPlayerMediaChanged, | ||
| - | |||
| - | |||
| - | |||
| - | # boucle infinie | ||
| - | |||
| - | while True: | ||
| - | #button = input(" | ||
| - | if GPIO.input(PLAY_BUTTON): | ||
| - | print(" | ||
| - | # | ||
| - | if mlPlayer.is_playing(): | ||
| - | mlPlayer.pause() | ||
| - | else : | ||
| - | mlPlayer.play(); | ||
| - | elif GPIO.input(STOP_BUTTON): | ||
| - | print(" | ||
| - | mlPlayer.stop() #arrêter la musique | ||
| - | |||
| - | random.shuffle(files) #met dans un ordre aléatoire tous les fichiers .mp3 contenu dans le tableau " | ||
| - | medialist = vlc.MediaList(files) | ||
| - | mlPlayer.set_media_list(medialist) | ||
| - | |||
| - | elif GPIO.input(BACK_BUTTON): | ||
| - | print(" | ||
| - | mlPlayer.previous() | ||
| - |  | ||
| - | elif GPIO.input(FORWARD_BUTTON): | ||
| - | print(" | ||
| - | mlPlayer.next() | ||
| - |  | ||
| - | time.sleep(0.3) | ||
| - | lcd.scrollDisplayLeft() | ||
| - |  | ||
| - | </ | ||
| - | |||
| - | Le fichier fichier python peut être directement téléchargé sur le lien suivant : | ||
| - | * {{ : | ||
| - | |||
| - | Il est nécessaire de placer les morceaux de musique au format .mp3 dans un dossier " | ||
| - | |||
| - | Pour lancer le programme, il faut ouvrir un terminal et se placer dans le dossier contenant le programme " | ||
| - | {{ : | ||
| - | |||
| - | il faut ensuite lancer le code python dans le terminal : | ||
| - | |||
| - | < | ||
| - | sudo pyhton3 Jukebox4.py | ||
| - | </ | ||
| - | |||
| - | {{ : | ||