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)

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.