top of page

config.ini                                                                                                                                                                                        

PiBooth

IV. Module 2 : Choix du nombre de vue

21/03/2021

     Introduction :

     Ici je veux :


     Grace aux boutons poussoirs choisir le nombre de vue qui doivent être prises.
     Pour cette partie, il va falloir brancher les boutons poussoir sur le RPI.

     J'ai souvant vu que le programme testais si le bouton untel était appuyé et si c'était le cas, une action se déroule.

     Moi je suis plutôt partie sur l'idée de tester quel bouton est appuyé, de stocké cela dans une variable qui sera uttilisée plus tard pour définir combien de vue sont a prendre.

     Avec ce que j'ai en tête, normalement on peut definir autant de vue que l'on veux, mais je reste sur 1 - 3 - 8

  • Le choix des pins est arbitraire.

  • Dans la console il faut activer les GPIO

    • sudo raspi-config

    • Choisir : 3 Interface Options

    • Choisir : P8 Remote GPIO

    • valider Yes

    • OK

     Passons à la programmation

     Ajoutons dans config.ini les GPIO des boutons poussoirs.

config.ini                                                                                                                                                                                        

 

...

 

gpio_bouton1 = 17
gpio_bouton2 = 18
gpio_bouton3 = 27
gpio_bouton4 = 20
gpio_bouton5 = 21

  • Le programme de base

test_boutons.py                                                                                                                                                                             

 

#coding:utf-8

# Les librairies
import RPi.GPIO as GPIO # Librairie pour les GPIO
import time # Librairie de gestion du temps

# les Constantes ------------------------------------------------------------------------------------------------------------


# les constantes importée ------------------------------------------------------------------------------------------------------------
dico={}
fichier=open('config.ini','r')
lignes=fichier.readlines()
for o in lignes:
  sp=o.split('=')
  dico[sp[0]]=sp[1]
for i in dico:
  exec(i+'='+str(dico[i]))


# Les variables ----------------------------------------------------------------------------------------------------------------------
Bouton_Choisi = 0


# On initialise les GPIO en écoute ---------------------------------------------------------------------------------------------------
GPIO.setmode(GPIO.BCM)

GPIO.setup(gpio_bouton1, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(gpio_bouton2, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(gpio_bouton3, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(gpio_bouton4, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(gpio_bouton5, GPIO.IN, pull_up_down = GPIO.PUD_UP)

# On defini quel bouton est appuyé ---------------------------------------------------------------------------------------------------

while True:

  if (GPIO.input(gpio_bouton1) == False) : # Si Le GPIO 1 est activé alors
       Bouton_Choisi = 1   # On passe la variable du choix de bouton a 1
       print"Appui detecte, vous avez choisi le bouton : ", Bouton_Choisi # pour les test voir quel bouton a été appuyé
       time.sleep(2)   # Temps d'attente pour eviter qu'un appuis trop long ne soit reconu comme 2 appuis
  if (GPIO.input(gpio_bouton2) == False) :
       Bouton_Choisi = 2
       print"Appui detecte, vous avez choisi le bouton : ", Bouton_Choisi
       time.sleep(2)
  if (GPIO.input(gpio_bouton3) == False) :
       Bouton_Choisi = 3
       print"Appui detecte, vous avez choisi le bouton : ", Bouton_Choisi
       time.sleep(2)
  if (GPIO.input(gpio_bouton4) == False) :
       Bouton_Choisi = 4
       print"Appui detecte, vous avez choisi le bouton : ", Bouton_Choisi
       time.sleep(2)
  if (GPIO.input(gpio_bouton5) == False) :
       Bouton_Choisi = 5
       print"Appui detecte, vous avez choisi le bouton : ", Bouton_Choisi
       time.sleep(2)
   
  # Temps de repos pour eviter la surchauffe du processeur
  time.sleep(0.3)

 

pinout.png

Une personne dans un forum, m'a dis que cette partie servais au contrôle à distance des GPIO et pouvais être  source de probleme pour mon programme. Il ne faut donc pas l'activer.

Merci  Olivier Coquet

     Comme dans le chapitre précédent ce programme fonctionne et nous allons le découper pour en faire un module.

    Mais attention cette fois ce n'est plus du simple affichage, il faut qu'il retourne une valeur que le programme principal pourra traiter par la suite, sans avoir à refaire appel à ce module.

retrait de time sleep et move de la phrase de test

config.ini                                                                                                                                                                                         

 

largeur_ecran=800
hauteur_ecran=600
pos_logo=[500, 400]
texte_accueil="Bouton 1 : 1 Photo | Bouton 2 : 3 Photos | Bouton 3 : 8 Photos"
pos_texte=[4,4]
taille_texte=30
couleur_texte=[0, 0, 0]
couleur_texte_back=[255, 255, 255]
couleur_ecran=[89, 152, 255]
nom_fonte_acc ="fonts/aAtos.ttf"
titre_fenetre="PhotoBooth By KiffKizz"
gpio_bouton1 = 17
gpio_bouton2 = 18
gpio_bouton3 = 27
gpio_bouton4 = 20
gpio_bouton5 = 21

boutons.py                                                                                                                                                                                     

#coding:utf-8

# Les librairies
import RPi.GPIO as GPIO # Librairie pour les GPIO
import time # Librairie de gestion du temps


def choix_bouton(Bouton_Choisi):

# les constantes importée ------------------------------------------------------------------------------------------------------------
  dico={}
  fichier=open('config.ini','r')
  lignes=fichier.readlines()
  for o in lignes:
      sp=o.split('=')
      dico[sp[0]]=sp[1]
  for i in dico:
      exec(i+'='+str(dico[i]))

# Les variables
  boucle=True # Variable pour sortir de la boucle de test des boutons

  Bouton_Choisi = taille_texte
   

  # On initialise les GPIO en écoute ---------------------------------------------------------------------------------------------------
  GPIO.setmode(GPIO.BCM)

  GPIO.setup(gpio_bouton1, GPIO.IN, pull_up_down = GPIO.PUD_UP)
  GPIO.setup(gpio_bouton2, GPIO.IN, pull_up_down = GPIO.PUD_UP)
  GPIO.setup(gpio_bouton3, GPIO.IN, pull_up_down = GPIO.PUD_UP)
  GPIO.setup(gpio_bouton4, GPIO.IN, pull_up_down = GPIO.PUD_UP)
  GPIO.setup(gpio_bouton5, GPIO.IN, pull_up_down = GPIO.PUD_UP)


  # On defini quel bouton est appuyé ---------------------------------------------------------------------------------------------------

  while boucle == True:

       if (GPIO.input(gpio_bouton1) == False) : # Si Le GPIO 1 est activé alors
           Bouton_Choisi = 1   # On passe la variable du choix de bouton a 1
           boucle = False   # On passe la boucle à False pour sortir de la boucle


       if (GPIO.input(gpio_bouton2) == False) :
           Bouton_Choisi = 2
           boucle = False

       if (GPIO.input(gpio_bouton3) == False) :
           Bouton_Choisi = 3
           boucle = False
       if (GPIO.input(gpio_bouton4) == False) :
           Bouton_Choisi = 4
           boucle = False
       if (GPIO.input(gpio_bouton5) == False) :
           Bouton_Choisi = 5
           boucle = False
       
# Temps de repos pour eviter la surchauffe du processeur
       time.sleep(0.3)

  return Bouton_Choisi    # Permet de récupérer la nouvelle valleur de Bouton_Choisi dans le programme principal.

     Ici j'ai retiré le delais d'attent pour éviter les doubles appuis car avec l'ajout de fin de boucle, ce risque n'existe plus.

     J'ai aussi retiré l'affichage te test pour voir quel bouton à été appuyé, et je l'ai ajouté au programme principal.

pibooth.py                                                                                                                                                                                     

#coding:utf-8

# Les librairies

# Les Modules
import boutons

# Les variables
Bouton_Choisi = 0


Bouton_Choisi = boutons.choix_bouton(Bouton_Choisi)

print"Vous avez choisi le bouton : ", Bouton_Choisi # Affiche le bouton choisi

     Comme vous l'aurez remarqué pibooth n'a plus le programme précédent.

     Pour chaque module il y aura un pybooth.py différent puisque à la fin on est censés fabriquer le photomaton de nos rêves en y ajoutant les module que l'on veux.

     Mais pourquoi tout garder dans config.ini ? Je ne sait pas vraiment surtout que pour le moment c'est un beau bordel vu que j'y met ce dont j'ai besoin au moment ou j'en ais besoin.

     Mais comme pour le moment je n'ai pas d'idée il va rester comme ça pour le moment.

     Pour ceux qui ne l'aurais pas remarqué, sous la date en haut j'ai mis les fichiers finaux de cette partie.

bottom of page