【问题标题】:button.when_pressed is activated before actually pressing the buttonbutton.when_pressed 在实际按下按钮之前被激活
【发布时间】:2020-02-21 08:11:45
【问题描述】:
from twython import Twython
from time import sleep
from gpiozero import LED, Buzzer, InputDevice, Button
import RPi.GPIO as GPIO
import sys
import Adafruit_DHT
from signal import pause
import mysql.connector


GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(13,GPIO.OUT)
no_rain = InputDevice(18)

bz = Buzzer(19)

n = True

led = LED(23)
button = Button(13, pull_up=False)



def printstate():
 print("pressed")

n = True

if no_rain.is_active:
 bz.off()
 while n == True:
      if no_rain.is_active:
          print("It's raining, get your clothes out.")  
              #bz.off
          ledON()
          humidity, temperature = Adafruit_DHT.read_retry(11, 17)
          print('Temp: {:.1f} C'.format(temperature))
              print('Humidity: {:.1f}'.format(humidity))
          n = False

button.when_pressed = printstate()




pause()

button.when_pressed 被注册为按下,即使我实际上并没有按下我的 GPIO 树莓派上的按钮。

松开和按下都试过了,我有没有用to按钮来阻止蜂鸣器的嗡嗡声?

即使程序结束,蜂鸣器也会发出嗡嗡声。

【问题讨论】:

    标签: python-3.x raspberry-pi gpio


    【解决方案1】:

    button.when_pressed 需要一个函数,但您为其分配了函数响应。 IE。该函数在您分配时调用,而不是在按下按钮时调用。

    如果您将函数更改为返回 None 以外的其他内容,则在按下按钮时也可能会出现异常。让错误更加明显。

    改成:

    button.when_pressed = printstate  # without the parentheses
    

    【讨论】:

      猜你喜欢
      • 2020-01-18
      • 2021-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多