Не удается скомпилировать минимальный пример 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:
@Mark, 👍0
Обсуждение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
- PN532 не обнаруживает RFID-карту при подключении к ESP32 в режиме I2C, но отлично работает с Arduino Uno
- Сбой связи MFRC522
- Как использовать RFID-RC522 с Arduino?
- esp32, platformio A fatal error occurred: Packet content transfer stopped (received 8 bytes) *** [upload] Error 2
- Как выбрать альтернативные контакты I2C на ESP32?
- Драйверы для чипа последовательного порта CH9102X
- Как преобразовать форматированный оператор print в строковую переменную?
- Как остановить SoftwareSerial от получения данных и повторно включить его в какой-то другой момент?
@VE7JRO они заявляют о совместимости с ESP32, см. обновленную картинку в вопросе., @Mark
@VE7JRO Возвращает:
ошибка: невозможно преобразовать 'MFRC522_I2C' в 'MFRC522_I2C*' при инициализации
, @MarkРебят, а почему минус? Без объяснения, как я могу улучшить свой вопрос? Я сделал свою домашнюю работу: минимальный и воспроизводимый пример, показать усилия по самостоятельному решению проблемы, полное выходное сообщение . Что еще вам нужно?, @Mark
вы используете вилку вилки. библиотека в плохом состоянии. используйте
MFRC522 mfrc522 = MFRC522(&dev);
, @Juraj