gpt4 book ai didi

python - 在 `gpiozero` 上使用 `raspberry pi` 来控制引脚,但在脚本退出时会重置输出引脚,即使在运行之间会记住状态

转载 作者:行者123 更新时间:2023-12-03 16:51:40 25 4
gpt4 key购买 nike

我正在使用 gpiozero控制 Raspberry Pi 上的设备。当我创建对(例如)LED 设备的引用时,有一个参数用于创建对象而不影响其当前状态:initial_state=None . (默认值为 initial_state=False,它会在创建引用对象时自动关闭该值)问题是它似乎总是在脚本退出时重置硬件引脚(尽管奇怪的是内部“状态”不是)。更糟糕的是,当我再次运行脚本时,它会知道我将其置于的状态,并将物理引脚恢复到该状态!

这是我的跳线开/关程序,它现在有一个暂停输入,在此期间状态保持不变,但当程序退出时,引脚复位。 (尽管正如我上面提到的,状态是“记住的”)

#!/usr/bin/env python
from __future__ import print_function
import sys
import time
from gpiozero import LED
jump1=LED(17,initial_value=None)
jump2=LED(27,initial_value=None)


if len(sys.argv)>1:
print ("Jumper were: (%s,%s)"%(str(jump1.is_active),str(jump2.is_active)))
if sys.argv[1].lower() == 'on':
jump1.on()
jump2.on()
print ('turned both on')
elif sys.argv[1].lower() == 'off':
jump1.off()
jump2.off()
print ('turned both off')

print ("Jumper Currently: (%s,%s)"%(str(jump1.is_active),str(jump2.is_active)))

raw_input("Press enter to exit.")

有谁知道如何告诉 gpiozero退出后不理会硬件? This question详细说明了类似的问题,但模块不同。

(编辑:事实证明 gpiozero 模块将引脚方向更改为输入但不更改输出锁存器,这就是当
引脚方向更改回输出。)

最佳答案

我使用 RPi.GPIO 模块而不是 gpiozero 重写了。感觉不同,但它比使用 gpiozero 研究一种无需清理即可退出的方法要容易。

这是没有引脚清理的“等效”程序。

#!/usr/bin/env python
from __future__ import print_function
import sys
import time
import RPi.GPIO as GPIO

# these pin numbers map have to change
# try the 'pinout' command from the bash prompt

pina = 17
pinb = 27


# set pins up:

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(pina, GPIO.OUT)
GPIO.setup(pinb, GPIO.OUT)


if len(sys.argv)>1:
print ("Jumpers were: (%s,%s)"% (str(GPIO.input(pina)),str(GPIO.input(pinb))))
if sys.argv[1].lower() == 'on':
GPIO.output(pina, GPIO.HIGH)
GPIO.output(pinb, GPIO.HIGH)
print ('turned both on')
elif sys.argv[1].lower() == 'off':
GPIO.output(pina, GPIO.LOW)
GPIO.output(pinb, GPIO.LOW)
print ('turned both off')

print ("Jumpers now: (%s,%s)"% (str(GPIO.input(pina)),str(GPIO.input(pinb))))

#raw_input("Press enter to exit.") # optional pause for testing

# Note: I/O pins will remain at their last state.

关于python - 在 `gpiozero` 上使用 `raspberry pi` 来控制引脚,但在脚本退出时会重置输出引脚,即使在运行之间会记住状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53618198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com