I got a error compiling code for my rfid-rc522 and I don't know what to do, I don't know C and I am a nob to arduino. I am using a linux system to do this in also if that helps
Arduino: 1.8.19 (Linux), Board: "Arduino Uno"
/usr/share/arduino/arduino-builder -dump-prefs -logger=machine -hardware /usr/share/arduino/hardware -tools /usr/share/arduino/tools-builder -libraries /home/the-beast/Arduino/libraries -fqbn=archlinux-arduino:avr:uno -vid-pid=2341_0043 -ide-version=10819 -build-path /tmp/arduino_build_884578 -warnings=none -build-cache /tmp/arduino_cache_250380 -prefs=build.warn_data_percentage=75 -verbose /tmp/arduino_modified_sketch_782354/DumpInfo.ino
/usr/share/arduino/arduino-builder -compile -logger=machine -hardware /usr/share/arduino/hardware -tools /usr/share/arduino/tools-builder -libraries /home/the-beast/Arduino/libraries -fqbn=archlinux-arduino:avr:uno -vid-pid=2341_0043 -ide-version=10819 -build-path /tmp/arduino_build_884578 -warnings=none -build-cache /tmp/arduino_cache_250380 -prefs=build.warn_data_percentage=75 -verbose /tmp/arduino_modified_sketch_782354/DumpInfo.ino
Using board 'uno' from platform in folder: /usr/share/arduino/hardware/archlinux-arduino/avr
Using core 'arduino' from platform in folder: /usr/share/arduino/hardware/archlinux-arduino/avr
Detecting libraries used...
/usr/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I/usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino -I/usr/share/arduino/hardware/archlinux-arduino/avr/variants/standard /tmp/arduino_build_884578/sketch/DumpInfo.ino.cpp -o /dev/null
Alternatives for SPI.h: [SPI@1.0]
ResolveLibrary(SPI.h)
-> candidates: [SPI@1.0]
/usr/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I/usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino -I/usr/share/arduino/hardware/archlinux-arduino/avr/variants/standard -I/usr/share/arduino/hardware/archlinux-arduino/avr/libraries/SPI/src /tmp/arduino_build_884578/sketch/DumpInfo.ino.cpp -o /dev/null
Alternatives for MFRC522.h: [MFRC522@1.4.10 MFRC522-spi-i2c-uart-async@1.5.1]
ResolveLibrary(MFRC522.h)
-> candidates: [MFRC522@1.4.10 MFRC522-spi-i2c-uart-async@1.5.1]
/usr/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I/usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino -I/usr/share/arduino/hardware/archlinux-arduino/avr/variants/standard -I/usr/share/arduino/hardware/archlinux-arduino/avr/libraries/SPI/src -I/home/the-beast/Arduino/libraries/MFRC522/src /tmp/arduino_build_884578/sketch/DumpInfo.ino.cpp -o /dev/null
Using cached library dependencies for file: /usr/share/arduino/hardware/archlinux-arduino/avr/libraries/SPI/src/SPI.cpp
Using cached library dependencies for file: /home/the-beast/Arduino/libraries/MFRC522/src/MFRC522.cpp
/usr/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I/usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino -I/usr/share/arduino/hardware/archlinux-arduino/avr/variants/standard -I/usr/share/arduino/hardware/archlinux-arduino/avr/libraries/SPI/src -I/home/the-beast/Arduino/libraries/MFRC522/src /home/the-beast/Arduino/libraries/MFRC522/src/MFRC522Extended.cpp -o /dev/null
Generating function prototypes...
/usr/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I/usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino -I/usr/share/arduino/hardware/archlinux-arduino/avr/variants/standard -I/usr/share/arduino/hardware/archlinux-arduino/avr/libraries/SPI/src -I/home/the-beast/Arduino/libraries/MFRC522/src /tmp/arduino_build_884578/sketch/DumpInfo.ino.cpp -o /tmp/arduino_build_884578/preproc/ctags_target_for_gcc_minus_e.cpp
/usr/bin/arduino-ctags -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives /tmp/arduino_build_884578/preproc/ctags_target_for_gcc_minus_e.cpp
Compiling sketch...
/usr/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I/usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino -I/usr/share/arduino/hardware/archlinux-arduino/avr/variants/standard -I/usr/share/arduino/hardware/archlinux-arduino/avr/libraries/SPI/src -I/home/the-beast/Arduino/libraries/MFRC522/src /tmp/arduino_build_884578/sketch/DumpInfo.ino.cpp -o /tmp/arduino_build_884578/sketch/DumpInfo.ino.cpp.o
Compiling libraries...
Compiling library "SPI"
Using previously compiled file: /tmp/arduino_build_884578/libraries/SPI/SPI.cpp.o
Compiling library "MFRC522"
/usr/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I/usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino -I/usr/share/arduino/hardware/archlinux-arduino/avr/variants/standard -I/usr/share/arduino/hardware/archlinux-arduino/avr/libraries/SPI/src -I/home/the-beast/Arduino/libraries/MFRC522/src /home/the-beast/Arduino/libraries/MFRC522/src/MFRC522Extended.cpp -o /tmp/arduino_build_884578/libraries/MFRC522/MFRC522Extended.cpp.o
Using previously compiled file: /tmp/arduino_build_884578/libraries/MFRC522/MFRC522.cpp.o
/home/the-beast/Arduino/libraries/MFRC522/src/MFRC522Extended.cpp: In member function 'MFRC522::StatusCode MFRC522Extended::TCL_Transceive(TagInfo*, byte*, byte, byte*, byte*)':
/home/the-beast/Arduino/libraries/MFRC522/src/MFRC522Extended.cpp:824:34: error: ordered comparison of pointer with integer zero ('byte*' {aka 'unsigned char*'} and 'int')
824 | if (backData && (backLen > 0)) {
| ~~~~~~~~^~~
/home/the-beast/Arduino/libraries/MFRC522/src/MFRC522Extended.cpp:847:42: error: ordered comparison of pointer with integer zero ('byte*' {aka 'unsigned char*'} and 'int')
847 | if (backData && (backLen > 0)) {
| ~~~~~~~~^~~
Multiple libraries were found for "MFRC522.h"
Used: /home/the-beast/Arduino/libraries/MFRC522
Not used: /home/the-beast/Arduino/libraries/MFRC522-spi-i2c-uart-async
Using library SPI at version 1.0 in folder: /usr/share/arduino/hardware/archlinux-arduino/avr/libraries/SPI
Using library MFRC522 at version 1.4.10 in folder: /home/the-beast/Arduino/libraries/MFRC522
exit status 1
Error compiling for board Arduino Uno.
Start by posting you code here, using code tags when you do
In my experience the easiest way to tidy up the code and add the code tags is as follows
Start by tidying up your code by using Tools/Auto Format in the IDE to make it easier to read. Then use Edit/Copy for Forum and paste what was copied in a new reply. Code tags will have been added to the code to make it easy to read in the forum thus making it easier to provide help.
/*
* --------------------------------------------------------------------------------------------------------------------
* Example sketch/program showing how to read data from a PICC to serial.
* --------------------------------------------------------------------------------------------------------------------
* This is a MFRC522 library example; for further details and other examples see: https://github.com/miguelbalboa/rfid
*
* Example sketch/program showing how to read data from a PICC (that is: a RFID Tag or Card) using a MFRC522 based RFID
* Reader on the Arduino SPI interface.
*
* When the Arduino and the MFRC522 module are connected (see the pin layout below), load this sketch into Arduino IDE
* then verify/compile and upload it. To see the output: use Tools, Serial Monitor of the IDE (hit Ctrl+Shft+M). When
* you present a PICC (that is: a RFID Tag or Card) at reading distance of the MFRC522 Reader/PCD, the serial output
* will show the ID/UID, type and any data blocks it can read. Note: you may see "Timeout in communication" messages
* when removing the PICC from reading distance too early.
*
* If your reader supports it, this sketch/program will read all the PICCs presented (that is: multiple tag reading).
* So if you stack two or more PICCs on top of each other and present them to the reader, it will first output all
* details of the first and then the next PICC. Note that this may take some time as all data blocks are dumped, so
* keep the PICCs at reading distance until complete.
*
* @license Released into the public domain.
*
* Typical pin layout used:
* -----------------------------------------------------------------------------------------
* MFRC522 Arduino Arduino Arduino Arduino Arduino
* Reader/PCD Uno/101 Mega Nano v3 Leonardo/Micro Pro Micro
* Signal Pin Pin Pin Pin Pin Pin
* -----------------------------------------------------------------------------------------
* RST/Reset RST 9 5 D9 RESET/ICSP-5 RST
* SPI SS SDA(SS) 10 53 D10 10 10
* SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16
* SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14
* SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15
*
* More pin layouts for other boards can be found here: https://github.com/miguelbalboa/rfid#pin-layout
*/
#include <SPI.h>
#include <MFRC522.h>
#define RST_PIN 9 // Configurable, see typical pin layout above
#define SS_PIN 10 // Configurable, see typical pin layout above
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance
void setup() {
Serial.begin(9600); // Initialize serial communications with the PC
while (!Serial); // Do nothing if no serial port is opened (added for Arduinos based on ATMEGA32U4)
SPI.begin(); // Init SPI bus
mfrc522.PCD_Init(); // Init MFRC522
delay(4); // Optional delay. Some board do need more time after init to be ready, see Readme
mfrc522.PCD_DumpVersionToSerial(); // Show details of PCD - MFRC522 Card Reader details
Serial.println(F("Scan PICC to see UID, SAK, type, and data blocks..."));
}
void loop() {
// Reset the loop if no new card present on the sensor/reader. This saves the entire process when idle.
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}
// Dump debug info about the card; PICC_HaltA() is automatically called
mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
}
Have you got one library folder inside the another, duplicate library folder? I find that downloading and manually extracting with WinRar (or whatever Linux is using, maybe) that sometimes it will extract this way.
What part of "it seems to be a library bug" was unclear?
How to fix it is described on Github, the page I linked you before.
If you aren't experienced enough, just search for the "MFRC522Extended.cpp" file, you can find two lines (#824 and #847) with the problem, the two you can read on your compiler output:
Then change both lines to:
if (backData && backLen) {
and try compiling again.
Obviously if you later will update or upgrade the library, you'll lose those changes (but hope they fixed it in the meanwhile) so don't do it unless in the future will be strictly needed for you.
Navigate to the /libraries/MFRC522/src/MFRC522Extended.cpp path within the sketchbook folder for your project. From there search for the lines of code that say if (backData && (backLen > 0)) { (should be lines #824 and #847 ) and replace them with (backData && backlen != nullptr)) {