• # Suite :)

    Posté par . En réponse au message Bouton Volume MPD. Évalué à 1.

    Bon. J'ai rajouté un deuxième encodeur rotatif et j'ai repris le code ci-dessus.
    J'ai essayé de l'adapter pour changer les radios cette fois-ci.

    Le fonctionnement (si ça marche).

    1. Créer une playlist m3u dans laquelle il y a plusieurs radios (liens). Cinq dans mon cas.
    2. Faire un crontab au démarrage et lancer la première radio avec la commande mpc play 1. Chaque radio peut être lancée en fonction de sa position dans la liste

    Le point 1 et 2 fonctionnement correctement.

    3. Exécuter le script qui permet de changer les radios avec l'encodeur:
    a) Si l'encodeur va trop loin par rapport au nombre de ligne de la liste (ex: mpc play 20), lancer la ligne 1 (revenir au début quoi)
    b) Si l'encodeur va dans le négatif, jouer la ligne 1

    J'ai modifié ce code mais ça ne donne rien.

    Si vous avez des idées, je veux bien.

    Merci d'avance.

    #!/usr/bin/python
    #Control MPD Client volume using a physical rotary encoder
    #pip install mopidy-spotify
    from RPi import GPIO
    from time import sleep
    import os
    clk = 23
    dt = 24
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(clk, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
    GPIO.setup(dt, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
    clkLastState = GPIO.input(clk)
    # Donne le nombre de ligne dans le fichier de la playlist. Ne pas depasser
    # Si ajout des liens dans le fichier plus tard, pas besoin de changer le code 
    nombre_lignes_playlist = os.system("wc -l < /home/jasmin/.mpd/playlists/radio.m3u")
    #La Station jouée au démarrage est toujours 1 (crontab)
    station_actuelle = 1
    try:
     while True:
     clkState = GPIO.input(clk)
     dtState = GPIO.input(dt)
     if clkState != clkLastState:
     if dtState != clkState:
     station_actuelle += 1
     else:
     station_actuelle -=1 
     # Si encodeur envoi des valeur négative, remettre la station à 1
     if station_actuelle < 1:
     station_actuelle = 1
     # Idem si dépassement. Jouer le premier lien de la liste
     if station_actuelle > nombre_lignes_playlist:
     station_actuelle = 1
     # lacer la lecture 
     os.system("mpc play " + str(station_actuelle))
     clkLastState = clkState
     sleep(0.01)
    finally:
     GPIO.cleanup