【问题标题】:NameError: name 'TRUE' is not defined PIR sensorsNameError:名称“TRUE”未定义 PIR 传感器
【发布时间】:2016-05-23 04:07:25
【问题描述】:

每当用户将双手放在 PIR 传感器上时,我无法对 2 个 PIR 传感器的逻辑进行编程以在控制台中打印一条消息。我已成功使用 GPIO、GND 和5v端口。我目前拥有的代码确实会在有人在控制台上挥手时在控制台中打印一条消息,但是当有人在两个 PIR 传感器上挥手时我很难修改代码以打印错误消息。

我们可以使用 GP4 和 GP17 从传感器读取输入

这是我在运行代码时收到的错误消息。

 Traceback (most recent call last):
  File "peter.py", line 22, in <module>
    if current_state2(TRUE) and current_state(TRUE) != previous_state2(FALSE) and previous_state(FALSE):
NameError: name 'TRUE' is not defined

这是代码

 import RPi.GPIO as GPIO
  import time

  sensor = 4
  sensor2 = 17
  GPIO.setmode(GPIO.BCM)
  GPIO.setup(sensor, GPIO.IN, GPIO.PUD_DOWN)
  GPIO.setup(sensor2, GPIO.IN, GPIO.PUD_DOWN)

  previous_state = False
  current_state = False

  previous_state2 = False
  current_state2 = False

  while True:
      time.sleep(0.1)
      previous_state = current_state
      previous_state2 = current_state2
      current_state = GPIO.input(sensor)
      current_state2 = GPIO.input(sensor2)
      if current_state2(TRUE) and current_state(TRUE) != previous_state2(FALSE) and previous_state(FALSE):

          new_state = "HIGH" if current_state else "LOW"
          new_state2 = "HIGH" if current_state2 else "LOW"

          print("GPIO pin %s is %s" % (sensor, new_state, sensor2, new_state2))

程序非常简单。 Raspberry Pi GPIO 引脚允许我们使用引脚 4 作为输入;然后它可以检测 PIR 模块何时供电。该引脚不断检查任何更改,为此使用 while True 循环。这是一个无限循环,因此程序将连续运行,除非我们使用 Ctrl + C 手动停止它。然后使用两个布尔变量(True 或 False)来表示引脚的先前和当前状态,先前状态是当前状态循环的前一个时间

【问题讨论】:

    标签: android raspberry-pi sensors gpio


    【解决方案1】:

    在 Python 中使用“True”,而不是“TRUE”:

    if True:
            print("True")
    else:
            print("False")
    

    也改变:

    if current_state2(TRUE) and current_state(TRUE) != previous_state2(FALSE) and previous_state(FALSE):
    

    收件人:

    if current_state2==True and current_state != previous_state2 and previous_state==False:
    

    【讨论】:

    • 我要删除 while 并分配一个“if”语句吗?
    • Rasmus Friis Kjeldsen,语句必须循环,所以我要删除 while 语句吗?
    • Rasmus Friis Kjeldsen,我不知道在哪里应用 if True:statement
    • 这只是一个例子,使用更正的语句: if current_state2==True and current_state != previous_state2 and previous_state==False:
    猜你喜欢
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多