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:46] – [Technique] florianhevenements:obc2012:dikogeek [2022/09/04 21:50] (Version actuelle) – modification externe 127.0.0.1
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 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.1367498787.txt.gz · Dernière modification : 2022/09/04 21:49 (modification externe)