Problem mit RC522 und 20x4 lcd (i2c)

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 :slight_smile:

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);
}


Auf LCD kein println(), sondern nur print() verwenden.

Gruß Tommy

Das LCD kann die Anweisung "println" nicht so verarbeiten, wie du es möchtest.
Nimm einfach nur "print".
Dann funktioniert es.

Ok danke.

Tobias_W:
Ok danke.

Das heißt ?
Geht oder geht nicht ?

HotSystems:
Das heißt ?
Geht oder geht nicht ?

Ich tippe auf „geht“. Der wäre sonst schon längst wieder zurückgekommen. Immerhin beschwert er sich nicht :slight_smile:

Gruß

Gregor

gregorss:
Ich tippe auf „geht“. Der wäre sonst schon längst wieder zurückgekommen. Immerhin beschwert er sich nicht :slight_smile:

Ok....dein Wort in.......