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
obc2012:dikogeek [2013/05/02 12:41] – [Format proposé] florianhevenements:obc2012:dikogeek [2022/09/04 21:50] (Version actuelle) – modification externe 127.0.0.1
Ligne 13: Ligne 13:
 Il se veut interactif et se présentera sous forme de courte vidéo que l'utilisateur pourra lancer grâce à l'appui sur un bouton. Il se veut interactif et se présentera sous forme de courte vidéo que l'utilisateur pourra lancer grâce à l'appui sur un bouton.
  
-====== Format proposé ======+===== Format proposé =====
  
   * Un pupitre avec des boutons (environ 35, suivant le nombre de définition)   * Un pupitre avec des boutons (environ 35, suivant le nombre de définition)
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 79: Ligne 80:
 \\ \\  \\ \\ 
 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.
 +
 +
 +=== Vos idées ===
 +
 +  * C'est par ici
  
 ==== Interaction homme/machine ==== ==== Interaction homme/machine ====
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 select, time
 +import sys, tty, termios
 +import os
 +import pygame
 +import subprocess, signal
 +from subprocess import Popen, PIPE
 +from pygame.locals import *
 +#import RPi.GPIO as GPIO  
 +#GPIO.setmode(GPIO.BCM)  
 +from evdev import InputDevice, categorize, ecodes
 +dev = InputDevice('/dev/input/event1')
 +
 +fpid = os.fork()
 +if fpid!=0:
 +   #Running as daemon now. PID is fpid
 +  sys.exit(0)
 + 
 +#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)  
 +
 +pygame.init()
 +pygame.display.init()
 +
 +def accueil():
 +    ecran = pygame.display.set_mode((0, 0), pygame.FULLSCREEN) #Crée la fenêtre de tracé
 +    image = pygame.image.load("/home/pi/dikogeek/obc.jpg") #charge une image à partir d'un fichier
 +    ecran.blit(image, (0,40)) #Colle l'image en haut à gauche de la fenêtre de tracé (ici, l'ecran)
 +    pygame.display.flip() #L'affichage devient effectif : l'image est rendue visible.
 +
 +#Fonction appelé lors d'un appuie bouton
 +def fct_movie(channel):  
 +    ecran = pygame.display.set_mode((0, 0), pygame.FULLSCREEN) #Crée la fenêtre de tracé
 +    image = pygame.image.load("/home/pi/dikogeek/chargement.jpg") #charge une image à partir d'un fichier
 +    ecran.blit(image, (10,40)) #Colle l'image en haut à gauche de la fenêtre de tracé (ici, l'ecran)
 +    pygame.display.flip() #L'affichage devient effectif : l'image est rendue visible.
 +    #Lancement d'un sous process pour récuperer la liste des processes en cours
 +    p = subprocess.Popen(['omxplayer', '-r', '/home/pi/dikogeek/videos/'+str(channel)+'.mp4'],stdout=subprocess.PIPE,stderr=subprocess.PIPE,stdin=subprocess.PIPE,preexec_fn=os.setpgrp)
 +    #Vérifie si le process se termine naturellement
 +    while (p.poll() is None):
 + if dev.read_one() is not None:
 + os.killpg(p.pid, signal.SIGKILL)
 + break
 +    if p.poll() is not None:
 + accueil()
 +
 +#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=fct_movie, bouncetime=600)  
 +#GPIO.add_event_detect(23, GPIO.FALLING, callback=fct_movie, bouncetime=600)  
 +accueil()
 +for event in dev.read_loop():
 + if (event.code == ecodes.KEY_A and event.value == 0):
 + fct_movie('fablab')
 + if (event.code == ecodes.KEY_B and event.value == 0):
 + fct_movie(2)
 + if (event.code == ecodes.KEY_C and event.value == 0):
 + fct_movie(3)
 + if (event.code == ecodes.KEY_D and event.value == 0):
 + fct_movie('Arduino-encoded')
 +
 +pygame.display.quit()
 +pygame.quit()
 +</code>
 +
  
evenements/obc2012/dikogeek.1367498481.txt.gz · Dernière modification : 2022/09/04 21:49 (modification externe)