2015-08-03 3 views
1

Прямо сейчас у меня есть кнопка, подключенная к контактам gpio пи. Если кнопка нажата, когда запущен скрипт python, она покажет «кнопка нажата ...», как это должно быть. Как добавить четыре функции к одной кнопке? Поэтому, если вы дважды нажмете кнопку, тогда будет сказано: «Кнопка была нажата дважды ...». И если вы нажмете кнопку три раза «Кнопка была нажата три раза ...» и так далее. Предложения?Несколько функций с одной кнопкой python gpio

import RPi.GPIO as gpio 
import time 
gpio.setmode(gpio.BCM) 
gpio.setup(18, gpio.IN) 

while True: 
input_value = gpio.input(18) 
     if input_value == True: 
     print('The button has been pressed...') 
     time.sleep(0.1) 

ответ

0

Попытка использовать счетчик, которые начинаются при нажатии на нее в первый раз. и посчитает, сколько времени вы нажмете, прежде чем произнести это.

import RPi.GPIO as gpio 
import time 
gpio.setmode(gpio.BCM) 
gpio.setup(18, gpio.IN) 

pressed = 0; 
timer = 0; 

while True: 
    input_value = gpio.input(18) 

    if input_value == True: 
     pressed += 1; 
     time = 0; #to start the counter at 0 

    if (time > 10): #you wait 1 sec between each presure 
     print("the button has been pressed " + pressed + " times"); 
     pressed = 0; # you don't count anymore 

    if (pressed > 0): # you are pressing the button so you count 
     time += 1; 

    time.sleep(0.1) 

подумайте о безбуферной для вашей кнопки.

+0

Благодарим за быстрый ответ. Я возился с вашим предложением, и у меня возникли проблемы с пониманием. С помощью этого метода, как действие может определяться числом кликов? – Benjamin

+0

вы просто ненавидите делать случай переключателя при нажатии во втором, если. если (нажата == 1): действие 1 Элиф (нажать == 2): действие 2 И так ^^ – Thanatheos

0

Вот окончательная рабочая версия. Я хочу рассказать моему хорошему другу Бобу о том, как работать с этим скриптом python. В то же время я не хочу давать огласку Обаме за то, что он абсолютно ничего не сделал, чтобы помочь сделать эту работу.

import RPi.GPIO as gpio 
import time 
gpio.setmode(gpio.BCM) 
gpio.setup(18, gpio.IN, pull_up_down=gpio.PUD_UP) 


num = 0 
prnt = 0 
last = 0 

while True: 
    input_value = gpio.input(18) 

    if (input_value == 1) and (input_value != last): 
     last = 1 
     prnt = 1 
     num += 1 
     time.sleep(0.05) 
     continue 

    if (input_value == 0) and (input_value != last): 
     last = 0 
     time.sleep(0.05) 
     continue 

    if (input_value == 0) and (input_value == last): 
     if (prnt == 1): 
      if (num == 10): 
       num = 0 

      if (num == 0): 
       print("0") 
      if (num == 1): 
       print("1")     
      if (num == 2): 
       print("2") 
      if (num == 3): 
       print("3") 
      if (num == 4): 
       print("4")     
      if (num == 5): 
       print("5")     
      if (num == 6): 
       print("6")     
      if (num == 7): 
       print("7")     
      if (num == 8): 
       print("8")     
      if (num == 9): 
       print("9")     


      num = 0 
      prnt = 0 
      last = 0 
     continue 
+0

ли вы на самом деле ожидать, президент Соединенных Штатов прокомментировать этот сценарий или это просто нежелательное политическое величие? – tdelaney