Zähler auf Null zurück setzen,LCD 1602

Hallo,

bin noch Relativ neu in der Arduino Welt,mein Problem ist das ich ein Zähler programmiert habe das bis
50 zählt aber nicht auf Null zurück springt. Habe viele Stunden im Netz verbracht und bin am verzweifeln. Hier der Code :

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
// set up the LCD’s number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print(“hello, world!”);
}

void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):

for(int x = 0; x <= 15; x++)

{

lcd.setCursor(0, 1);

lcd.print(x);

delay(300);

}
}

du solltest nach dem verlassen der for Schleife das Display löschen, da beim erneuten hochzählen die Zahlen einstellig sind und somit die 5 von der letzten 15 stehen bleibt.

hab ich gemach mit lcd.clear(); nach delay befehl eingefügt,problem ist das mein hello in der ersten zeile gelöscht wird ??

Hallo,
lcd.print(x);
lcd.print(" ");

Gruß und Spaß
Andreas

Dann nimm SkobyMobils Vorschlag.

Außerdem mussr du die Schleife ändern, wenn bis 50 und nicht bis 15 gezählt werden soll :slight_smile:

vielen lieben Dank an euch!! hat funktioniert mit Skoby's Lösung.

Du kannst auch mal einen Blick auf "sprintf" werfen.

Damit kannst du sehr schön formatierte Ausgaben machen (z.B., wenn die größte Zahl 3stellig ist, dann kannst du mit sprintf von "001" über "010" bis "999" zählen).

Bedenke aber dass lcd.print(" ") zum “löschen” eines einzelnen Buchstabens so lange braucht wie lcd.clear() für das gesamte Display. Wenn du also mehr löschen willst, z.B. die kompletten Zeilen 2 bis 4, aber die erste erhalten bleiben soll, ist es oft sinnvoller erst lcd.clear() zu machen und die erste Zeile nochmal neu zu schreiben.

Und noch ein Tipp: Löschen würde ich immer erst direkt bevor erneut geschrieben wird, und nicht früher. Wenn zwischen löschen und neuem Schreiben zu viel Zeit vergeht in der das Display leer bleibt flackert die Anzeige.

gsezz:
ist es oft sinnvoller erst lcd.clear() zu machen und die erste Zeile nochmal neu zu schreiben.

Das ist generell schlecht und führt zu Flackern. Am vernünftigsten ist es man schreibt erst mal den aktuellen Text direkt drüber und füllt dann nur die Differenz zum alten mit Leerzeichen auf.

z.B. für drei Stellen linksbündig:

void printNumber(unsigned int value)
{
   lcd.print(value);
   if (value < 100) lcd.print(' ');
   if (value < 10) lcd.print(' ');   
}

Für rechtsbündig dreht man da nur herum

Hier hatte ich mal eine frei konfigurierbare Version gezeigt:

In #8 ist auch eine Version für Text