在一个程序中控制 RFID RC522 和伺服电机
Controlling RFID RC522 and servo motor in one program
我正在做一个项目,我试图在 RFID RC522 检测到卡片时转动 5V 伺服电机 (9g)。我正在使用 Raspberry Pi 3 B+、Python RPi.GPIO 库和另一个库:用于卡 reader.
的 SimpleMFRC522
我 运行 遇到一个问题,由于 SimpleMFRC522,我无法为伺服设置引脚。我收到此错误:
File "test.py", line 39, in <module>
unlock_cooler()
File "test.py", line 21, in unlock_cooler
GPIO.SETUP(7, GPIO.OUT)
AttributeError: 'module' object has no attribute 'SETUP'
是否有任何方法可以更改 GPIO 设置并将伺服与 SimpleMFRC522 库一起使用?
#!/usr/bin/env python
import RPi.GPIO as GPIO
import SimpleMFRC522
import re
rfid = 0
def read_RFID():
reader = SimpleMFRC522.SimpleMFRC522()
id, text = reader.read()
clean_text = re.findall('\d+', text)
match = int(clean_text[0])
rfid = match
GPIO.cleanup()
def unlock_cooler():
GPIO.SETUP(7, GPIO.OUT)
p = GPIO.PWM(7, 50)
p.start(2.5)
p.ChangeDutyCycle(7.5)
time.sleep(3)
p.ChangeDutyCycle(2.5)
time.sleep(1)
GPIO.cleanup()
read_RFID()
print(rfid)
if rfid == 6:
unlock_cooler()
GPIO.cleanup()
设置方法命名为 GPIO.setup()
而不是 GPIO.SETUP()
(注意小写字符!)。
因此,将方法 unlock_cooler
更改为此应该可以解决您遇到的错误:
def unlock_cooler():
GPIO.setup(7, GPIO.OUT)
p = GPIO.PWM(7, 50)
p.start(2.5)
p.ChangeDutyCycle(7.5)
time.sleep(3)
p.ChangeDutyCycle(2.5)
time.sleep(1)
p.stop()
GPIO.cleanup()
请注意,您可能还想在 PWM 实例上调用 stop()
。
我正在做一个项目,我试图在 RFID RC522 检测到卡片时转动 5V 伺服电机 (9g)。我正在使用 Raspberry Pi 3 B+、Python RPi.GPIO 库和另一个库:用于卡 reader.
的 SimpleMFRC522我 运行 遇到一个问题,由于 SimpleMFRC522,我无法为伺服设置引脚。我收到此错误:
File "test.py", line 39, in <module>
unlock_cooler()
File "test.py", line 21, in unlock_cooler
GPIO.SETUP(7, GPIO.OUT)
AttributeError: 'module' object has no attribute 'SETUP'
是否有任何方法可以更改 GPIO 设置并将伺服与 SimpleMFRC522 库一起使用?
#!/usr/bin/env python
import RPi.GPIO as GPIO
import SimpleMFRC522
import re
rfid = 0
def read_RFID():
reader = SimpleMFRC522.SimpleMFRC522()
id, text = reader.read()
clean_text = re.findall('\d+', text)
match = int(clean_text[0])
rfid = match
GPIO.cleanup()
def unlock_cooler():
GPIO.SETUP(7, GPIO.OUT)
p = GPIO.PWM(7, 50)
p.start(2.5)
p.ChangeDutyCycle(7.5)
time.sleep(3)
p.ChangeDutyCycle(2.5)
time.sleep(1)
GPIO.cleanup()
read_RFID()
print(rfid)
if rfid == 6:
unlock_cooler()
GPIO.cleanup()
设置方法命名为 GPIO.setup()
而不是 GPIO.SETUP()
(注意小写字符!)。
因此,将方法 unlock_cooler
更改为此应该可以解决您遇到的错误:
def unlock_cooler():
GPIO.setup(7, GPIO.OUT)
p = GPIO.PWM(7, 50)
p.start(2.5)
p.ChangeDutyCycle(7.5)
time.sleep(3)
p.ChangeDutyCycle(2.5)
time.sleep(1)
p.stop()
GPIO.cleanup()
请注意,您可能还想在 PWM 实例上调用 stop()
。