Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
wiki:tutoriels:jukebox_raspberry [2020/06/29 17:02] 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 " | ||
- | {{ : |