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:46] – [Technique] 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 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