Outils pour utilisateurs

Outils du site


evenements:obc2012:dikogeek

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édentesRévision précédente
Prochaine révision
Révision précédente
Prochaine révisionLes deux révisions suivantes
obc2012:dikogeek [2013/05/02 14:42] florianhobc2012:dikogeek [2013/05/03 16:40] – [Interaction homme/machine] florianh
Ligne 61: Ligne 61:
   - Etc.   - Etc.
  
-=== Vidéo ===+==== Vidéo  ==== 
  
 J'ai testé différente manières de lire une vidéo sous Raspi. \\ \\ J'ai testé différente manières de lire une vidéo sous Raspi. \\ \\
Ligne 70: Ligne 71:
     - PyGame     - PyGame
   - En faisant des appels système dans des programmes Python   - En faisant des appels système dans des programmes Python
-    - On peut utiliser OmxPlayer et passer en paramètre la vidéo souhaité +    - On peut utiliser OmxPlayer ou RaspPyPlayer (à tester) et passer en paramètre la vidéo souhaité 
 \\ \\  \\ \\ 
 J'ai trouvé les librairies python complexe à mettre sur pieds. Il faut les bonnes versions, compiler certaines fois car les packages ne sont pas bons. Bref complexe, mais l'avantage c'est que l'on peut toujours gérer avec python. J'ai trouvé les librairies python complexe à mettre sur pieds. Il faut les bonnes versions, compiler certaines fois car les packages ne sont pas bons. Bref complexe, mais l'avantage c'est que l'on peut toujours gérer avec python.
Ligne 80: Ligne 81:
 Je vous laisse rajouter des idées si vous avez de l'expérience là dedans. Je vous laisse rajouter des idées si vous avez de l'expérience là dedans.
  
-=== Interaction homme/machine ===+ 
 +=== Vos idées === 
 + 
 +  * C'est par ici 
 + 
 +==== Interaction homme/machine ====
  
 Nous aurons probablement besoins d'utiliser au moins une trentaine de bouton... \\ \\ Nous aurons probablement besoins d'utiliser au moins une trentaine de bouton... \\ \\
Ligne 90: Ligne 96:
   * Utiliser un clavier PS2 ou USB et utiliser le contrôle du clavier   * Utiliser un clavier PS2 ou USB et utiliser le contrôle du clavier
   * Registre à décalage    * Registre à décalage 
 +
 +=== Vos idées ===
 +
 +  * C'est par ici
 +
 +===== Code source =====
 +<code>
 +#!/usr/bin/python2.7
 +# -*-coding:Utf-8 -*
 +
 +#Import des librairies nécessaires
 +import os
 +import subprocess, signal
 +import RPi.GPIO as GPIO  
 +GPIO.setmode(GPIO.BCM)  
 +from subprocess import Popen, PIPE
 +
 +#Configuration de deux ports du GPIO (inter)
 +GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP)  
 +GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)  
 +
 +#Création d'une fonction de rappel (gestion des execptions)
 +def my_callback(channel):  
 +
 +    print ("Lancement clip 1")
 +    #Lancement d'un sous process pour récuperer la liste des processes en cours
 +    p = subprocess.Popen(['ps', '-A'], stdout=subprocess.PIPE)
 +    out, err = p.communicate()
 +
 +    #Listing des process
 +    for line in out.splitlines():
 + #On recherche si le lecteur video est en route
 +        if 'omxplayer' in line:
 +                pid = int(line.split(None, 1)[0])
 + #On Kill le process
 +                os.kill(pid, signal.SIGKILL)
 +    #Lencement d'un sous process pour lancer le clip
 +    p = subprocess.Popen(['xterm', '-fullscreen', '-fg', 'black', '-bg', 'black', '-e', 'omxplayer', '-r', '/home/pi/clip.avi'],stdout=subpr
 +ocess.PIPE,stderr=subprocess.PIPE,stdin=subprocess.PIPE)
 +    #Vérifie si le process se termine naturellement
 +    retcode = p.wait()
 +
 +    #Si le process c'est terminé naturellement, lancement d'une page web d'animation ou de présentation du diko geek
 +    if retcode is not None:
 + print "Lancement navigateur"
 + os.system("chromium --user-data-dir=/home/pi/dikogeek/ --app=http://google.fr")
 +  
 +def my_callback2(channel):  
 +    print ("Lancement clip 2")
 +    p = subprocess.Popen(['ps', '-A'], stdout=subprocess.PIPE)
 +    out, err = p.communicate()
 +
 +    for line in out.splitlines():
 +        if 'omxplayer' in line:
 +           pid = int(line.split(None, 1)[0])
 +                   os.kill(pid, signal.SIGKILL)
 +    p = subprocess.Popen(['xterm', '-fullscreen', '-fg', 'black', '-bg', 'black', '-e', 'omxplayer', '-r', '/home/pi/clip2.avi'],stdout=subp
 +rocess.PIPE,stderr=subprocess.PIPE,stdin=subprocess.PIPE)
 +    retcode = p.wait()
 +
 +    if retcode is not None:
 + print "Lancement navigateur"
 +        os.system("chromium --user-data-dir=/home/pi/dikogeek/ --app=http://google.fr")
 +
 +
 +#Configuration des deux ports GPIO, fonction de callback, debounce de 600ms + condo de 0,1nF sur l'inter
 +GPIO.add_event_detect(17, GPIO.FALLING, callback=my_callback, bouncetime=600)  
 +GPIO.add_event_detect(23, GPIO.FALLING, callback=my_callback2, bouncetime=600)  
 +
 +#Permet de bloquer le programme pour éviter qu'il se termine tout seul
 +raw_input("> ")
 +
 +</code>
 +
 +
 +
  
evenements/obc2012/dikogeek.txt · Dernière modification : 2024/04/26 14:48 de 127.0.0.1