Управление RFID RC522 и серводвигателем в одной программе - PullRequest
0 голосов
/ 07 июня 2018

Я работаю над проектом, в котором я пытаюсь включить серводвигатель 5 В (9 г), когда RFID RC522 обнаруживает карту.Я использую 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?

#!/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 голосов
/ 07 июня 2018

Метод установки называется 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()

Обратите внимание, что вы, вероятно, также захотите вызвать stop() для экземпляра ШИМ.

...