Compter le nombre d'appuis sur un bouton sous gpiozero

from gpiozero import Button

button = Button(2, hold_time=1)
cpt = 0

while cpt < 10 :
if button.is_pressed:
cpt = cpt+1
print(« Button is pressed »,cpt)

else:
    print("Button is not pressed")

Ca affiche directement jusqu’a 10, j’aurais souhaiter que ça compte le nombre d’appuis pour concevoir un systhème de morse, je suis novice en programmation.

hello,

un truc comme ça pourrait peut être marcher ( j ai pas tester mais le principe doit être correct !) :

from gpiozero import LED, Button
from signal import pause
import time

led = LED(NN)
button = Button(N)

while (true):
   button.when_pressed = led.on
   a = time.clock()
   button.when_released = led.off
   b = time.clock()
   if (b-a > ?):
//   c'est un trait
   else:
//   c'est un point

Source :

Merci pour ta tentative, mais je cherche a placer un compteur qui ne compte que les appuis sur le bouton, la fonction time.clock ne fait pas de différence que le bouton soit appuyé ou non, c’est une fonction python qui dit depuis combien de temps le programme est démarrer.

Salut @JMVII

Testé sur un Rpi3

#!/usr/bin/python3
# -*- coding: utf-8 -*

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(21, GPIO.IN, pull_up_down=GPIO.PUD_UP)

Clic = 0

while Clic < 8:

    while (GPIO.input(21) == True):
        pass
    Clic=Clic+1
    time.sleep(1)
    print(Clic)

GPIO.cleanup()

#end

Tu le lances dans un Terminal.
ça attend
Tu appuies sur le bouton
ça affiche 1
Tu appuies sur le bouton
ça affiche 2

Tu appuies sur le bouton
ça affiche 8
ça ferme le programme.

Et voilà :slight_smile:

++

Merci beaucoup, import time et time.sleep sont accepté sous gpiozero, tout fonctionne parfaitement !

A noter que j’ai pris 21 car ça m’a permis de coller un bouton sur le bas de mes GPIO.
mais ce n’est pas le meilleur des choix ; 18, 24 ou 26 serait mieux (de vrais GPIO purs)

l’idée justement c’est de ce servir de cette propriété pour déterminer la durée entre deux traitement dans un programme ; on récupère dans « a » le moment ou l’on presse le bouton et dans « b » celui ou on le relâche.
par soustraction on trouve la durée entre l’appuie et le relâchement si c’est court c’est un point si c’est long c’est un trait ( on est d’accord que l’alphabet morse est fait de point et de trait )
mais ok le code que j’ai bâclé le fais pas !

Tu étais dans le bon avec import time en effet ! :slight_smile: