Не удается скомпилировать минимальный пример I2C MFRC522

На ESP32 я пытаюсь собрать минимальный I2C пример библиотеки MFRC522: Но я получаю ошибки при первых объявлениях:

TwoWire i2cBus = TwoWire(0);
MFRC522_I2C dev = MFRC522_I2C(RST_PIN, 0x28, i2cBus);
MFRC522 mfrc522 = MFRC522(dev); // <--- ошибка

Вот результат сборки:

src/rfid.cpp:6:30: error: no matching function for call to 'MFRC522::MFRC522(MFRC522_I2C&)'
 MFRC522 mfrc522 = MFRC522(dev);
                              ^
In file included from include/rfid.h:5,
                 from src/rfid.cpp:1:
.pio/libdeps/MyProject/MFRC522-spi-i2c-uart-async/src/MFRC522.h:348:2: note: candidate: 'MFRC522::MFRC522(byte, byte)'
  MFRC522(byte chipSelectPin, byte resetPowerDownPin);
  ^~~~~~~
.pio/libdeps/MyProject/MFRC522-spi-i2c-uart-async/src/MFRC522.h:348:2: note:   candidate expects 2 arguments, 1 provided
.pio/libdeps/MyProject/MFRC522-spi-i2c-uart-async/src/MFRC522.h:347:2: note: candidate: 'MFRC522::MFRC522(byte)'
  MFRC522(byte resetPowerDownPin);
  ^~~~~~~
.pio/libdeps/MyProject/MFRC522-spi-i2c-uart-async/src/MFRC522.h:347:2: note:   no known conversion for argument 1 from 'MFRC522_I2C' to 'byte' {aka 'unsigned char'}
.pio/libdeps/MyProject/MFRC522-spi-i2c-uart-async/src/MFRC522.h:346:2: note: candidate: 'MFRC522::MFRC522()'
  MFRC522() DEPRECATED_MSG("use MFRC522(MFRC522_BUS_DEVICE bus_device)");
  ^~~~~~~
.pio/libdeps/MyProject/MFRC522-spi-i2c-uart-async/src/MFRC522.h:346:2: note:   candidate expects 0 arguments, 1 provided
.pio/libdeps/MyProject/MFRC522-spi-i2c-uart-async/src/MFRC522.h:343:2: note: candidate: 'MFRC522::MFRC522(MFRC522_BUS_DEVICE*)'
  MFRC522(MFRC522_BUS_DEVICE * dev);
  ^~~~~~~
.pio/libdeps/MyProject/MFRC522-spi-i2c-uart-async/src/MFRC522.h:343:2: note:   no known conversion for argument 1 from 'MFRC522_I2C' to 'MFRC522_BUS_DEVICE*'
In file included from include/rfid.h:5,
                 from src/rfid.cpp:1:
.pio/libdeps/MyProject/MFRC522-spi-i2c-uart-async/src/MFRC522.h:152:7: note: candidate: 'constexpr MFRC522::MFRC522(const MFRC522&)'
 class MFRC522 {
       ^~~~~~~
.pio/libdeps/MyProject/MFRC522-spi-i2c-uart-async/src/MFRC522.h:152:7: note:   no known conversion for argument 1 from 'MFRC522_I2C' to 'const MFRC522&'
.pio/libdeps/MyProject/MFRC522-spi-i2c-uart-async/src/MFRC522.h:152:7: note: candidate: 'constexpr MFRC522::MFRC522(MFRC522&&)'
.pio/libdeps/MyProject/MFRC522-spi-i2c-uart-async/src/MFRC522.h:152:7: note:   no known conversion for argument 1 from 'MFRC522_I2C' to 'MFRC522&&'

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

ОБНОВЛЕНИЕ

Здесь декларация совместимости для ESP32:

, 👍0

Обсуждение

@VE7JRO они заявляют о совместимости с ESP32, см. обновленную картинку в вопросе., @Mark

@VE7JRO Возвращает: ошибка: невозможно преобразовать 'MFRC522_I2C' в 'MFRC522_I2C*' при инициализации, @Mark

Ребят, а почему минус? Без объяснения, как я могу улучшить свой вопрос? Я сделал свою домашнюю работу: минимальный и воспроизводимый пример, показать усилия по самостоятельному решению проблемы, полное выходное сообщение . Что еще вам нужно?, @Mark

вы используете вилку вилки. библиотека в плохом состоянии. используйте MFRC522 mfrc522 = MFRC522(&dev);, @Juraj


1 ответ


-1

если вы посмотрите, там написано: "Кандидат ожидает 2 входа, один предоставлен".

поэтому в IDE arduino наведите указатель мыши на функцию и посмотрите, что она ожидает.

(Что вы вводите в MFRC522(byte resetPowerDownPin); что он ожидает: MFRC522(byte resetPowerDownPin, что-то еще);)

,

То, что он ожидает, находится в объявлении конструктора: https://github.com/MakerSpaceLeiden/rfid/blob/master/src/MFRC522.cpp#L10. И это MFRC522_BUS_DEVICE * dev, @Mark

Я не ставлю никаких байтов, @Mark