在一个程序中控制RFID RC522和伺服电机

时间:2018-06-07 08:27:41

标签: python raspberry-pi3 gpio rfid servo

我正在研究一个项目,当RFID RC522检测到卡时,我正在尝试转动5V伺服电机(9g)。我正在使用Raspberry Pi 3 B +,Python RPi.GPIO lib和另一个lib: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 lib一起使用?

#!/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()

1 个答案:

答案 0 :(得分:0)

设置方法名为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()