ESP32 I2C RC522 останавливается через несколько раз - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть два RC522, подключенных через i2c.С ESP8266 этот код отлично работает, но Я хочу запустить его на ESP32 .

. Если я использую ESP32, они сканируют мой шесть или семь раз тег, а затем ничего не происходит.Я могу только реактивировать с программным сбросом, и после этого они сканируют только несколько раз теги, независимо от того, какое устройство (0x28 или 0x2B).Библиотека не совместима или что не так?

Вот мой код:

#include <Wire.h>
#include "MFRC522_I2C.h"

MFRC522 mfrc522(0x2B, 2); 
MFRC522 mfrc522_2(0x28, 2);

void setup() {
  Serial.begin(115200);           
  Wire.begin();
  mfrc522.PCD_Init();
  mfrc522_2.PCD_Init(); 
  Serial.println(F("Scan UID"));
}

void loop() {

///////////////////////// DEV 1 ////////////////////////////////

  if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) {

  Serial.print(F("Card UID:"));
  for (byte i = 0; i < mfrc522.uid.size; i++) {
    Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
    Serial.print(mfrc522.uid.uidByte[i], HEX);
  } 
  Serial.println();
  }

///////////////////////// DEV 2 ////////////////////////////////  

  if (mfrc522_2.PICC_IsNewCardPresent() && 
  mfrc522_2.PICC_ReadCardSerial()) {

  Serial.print(F("Card UID:"));
  for (byte i = 0; i < mfrc522_2.uid.size; i++) {
    Serial.print(mfrc522_2.uid.uidByte[i] < 0x10 ? " 0" : " ");
    Serial.print(mfrc522_2.uid.uidByte[i], HEX);
  } 
  Serial.println();  
  }
}

1 Ответ

0 голосов
/ 29 сентября 2019

Это не связано с несовместимостью, так как если библиотека несовместима, она не будет сканировать карту шесть-семь раз, как вы упомянули ....

Пожалуйста, установите задержки в вашем коде так, чтобы онаможет работать плавно ...

Установите задержку в 500 миллисекунд в операторе if, чтобы дать время расслабления перед чтением следующей карты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...