Hallo liebe Community,
ich bin neu hier.
Ich arbeite gerade an einem Projekt und habe dazu ein 20x4 LCD über I2C und einen RFID Chip Reader (RC522) an meinen Arduino Mega angeschlossen. Ich habe beide Komponenten einzeln getestet und sie funktionieren perfekt.
Der Code soll eigentlich nur die gelesene Karten ID durch das LCD ausgeben.
Aber wie ihr in den angehängten Bildern sehen könnt liest er die ID korrekt aber fügt dieser auf dem LCD so komische Zeichen hinzu, sodass er auf 9 Stellen kommt. Ich hab jetzt schon mit mehreren Variablen rumprobiert aber irgendwie hab ich überall ein ähnliche Problem.
Wäre super wenn ihr mir dabei helfen könntet herauszufinden, was ich falsch mache
LG
Tobi
Mein Code:
#include <SPI.h>
#include <MFRC522.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define SS_PIN 53
#define RST_PIN 5
MFRC522 mfrc522(SS_PIN, RST_PIN);
LiquidCrystal_I2C lcd(0x27, 16, 4);
void setup()
{
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
lcd.begin();
Wire.begin();
}
void loop()
{
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
long code=0; // Als neue Variable fügen wir „code“ hinzu, unter welcher später die UID als zusammenhängende Zahl ausgegeben wird. Statt int benutzen wir jetzt den Zahlenbereich „long“, weil sich dann eine größere Zahl speichern lässt.
for (byte i = 0; i < mfrc522.uid.size; i++)
{
code=((code+mfrc522.uid.uidByte_)*10); // Nun werden wie auch vorher die vier Blöcke ausgelesen und in jedem Durchlauf wird der Code mit dem Faktor 10 „gestreckt“. (Eigentlich müsste man hier den Wert 1000 verwenden, jedoch würde die Zahl dann zu groß werden._
}
Serial.print("Die Kartennummer lautet:"); // Zum Schluss wird der Zahlencode (Man kann ihn nicht mehr als UID bezeichnen) ausgegeben.
Serial.println(code);
lcd.setCursor(0,0);
lcd.print("Die Kartennummer ");
lcd.setCursor(0,1);
lcd.print("lautet:");// Zum Schluss wird der Zahlencode (Man kann ihn nicht mehr als UID bezeichnen) ausgegeben.
lcd.setCursor(0,2);
lcd.println(code);
}