我想从我的编码器设备接收数据,所以我以这种方式将其连接到 RP5: 为了用 Python.3 编程,我编写了这些代码:
import RPi.GPIO as GPIO
from time import sleep
global counter
counter = 0
Enc_A = 17
Enc_B = 27
def init():
GPIO.setwarnings(True)
GPIO.setmode(GPIO.BCM)
GPIO.setup(Enc_A, GPIO.IN)
GPIO.setup(Enc_B, GPIO.IN)
GPIO.add_event_detect(Enc_A,GPIO.RISING, callback=rotation_decode, bouncetime=1)
return
def rotation_decode(Ebc_A):
global counter
Switch_A = GPIO.input(Enc_A)
Switch_B = GPIO.input(Enc_B)
if (Switch_A == 1) and (Switch_B == 0):
counter += 1
print (counter)
while Switch_B == 0:
Switch_B = GPIO.input(Enc_B)
while Switch_B == 1:
Switch_B = GPIO.input(Enc_B)
return
elif (Switch_A == 1) and (Switch_B == 1):
counter -= 1
print (counter)
while Switch_A == 1:
Switch_A = GPIO.input(Enc_A)
return
else:
return
def main():
try:
init()
while True:
sleep(1)
except KeyboardInterrupt:
GPIO.cleanup()
if __name__ == '__main__':
main()
所以我收到了一个错误,上面写着
RuntimeError: cannot determine SOC peripheral base address
。我知道 RP5 中的 GPIO 芯片组不同,我应该使用像 gipozero
这样的代码,但我不知道如何为我的工作做到这一点。有人可以帮助我吗?
您可以运行这些命令来使用旧的 GPIO 代码
sudo apt remove python3-rpi.gpio
sudo apt install python3-rpi-lgpio