Bonjour,
J’ai un problème avec mon code plus particulièrement sur la partie GPIO.add_event_detect()
J’ai un message d’erreur quand j’appuie sur mon bouton poussoir qui me dit :
TypeError: bouton() takes 0 positional arguments but 1 was given
Je me suis renseigné, j’ai mis des self un peu partout notamment bouton(self).
Je n’ai plus de message d’erreur mais rien ne se passe.
J’ai l’impression qu’il rentre bien dans ma fonction bouton mais que le if de mon main n’est jamais validé.
J’ai aussi mis un global devant mon flag mais rien n’y fait.
Si vous avez une piste, merci.
Voici le code :
import RPi.GPIO as GPIO
import picamera
import datetime
from time import sleep
import cv2
# variable globale qui sera vue dans toutes les fonctions
flag_callback = False
def camera():
camera = picamera.PiCamera()
camera.resolution = (3280,2464)
def init():
# configuration de la broche 7 en entree
GPIO.setmode(GPIO.BCM)
GPIO.setup(2, GPIO.IN)
# definition de l'interruption
GPIO.add_event_detect(2, GPIO.RISING, callback = bouton, bouncetime=300)
# initialisation du flag
flag_callback = False
def bouton():
# fonction qui sera appelée lorsque le programme sera interrompu
flag_callback = True
def process_my_callback():
print("ok")
camera.start_preview()
sleep(2)
camera.capture(str(datetime.datetime.now())+'.jpg')
camera.close()
if __name__ == '__main__':
# 1- initialise la camera
camera()
# 2- initiation de la l'interruption
init()
# 3- boucle infini = tache principale
while True:
if flag_callback == True:
process_my_callback()
pass #Permet d'éviter des erreurs lors d'une boucle vide