guntherb:
Wenn dir michael den fertigen Code gibt hast du nix gelernt.
Lernen kann er vom reinen "Code übergeben" natürlich nichts.
Aber natürlich kann er sich übergebenen "Code ansehen und verstehen".
guntherb:
Nur so wirst du verstehen, wie es funktioniert.
Mit "ohne Ahnung Herumpfriemeln" lernt er weder "good programming practices" noch lernt er damit sinnvoll verwendbare Funktionen kennen.
Solange jemand null Ahnung hat, kann er sich von beispielhaftem Code erfahrener Programmier eine Menge abschauen.
Und zwar sowohl "good programming practices".
Als auch nützliche Funktionen.
Wenn er beispielhaften Code nicht gleich versteht, kann er sich anhand der Namen unbekannter Funktionen wenigstens ergoogeln, was das für eine Funktion ist. Aber wenn er nur völlig ahnungslos vor einem leeren Editorfenster sitzt, dann sollen ihm die passenden Funktionen einfallen? Z.B. "atol" um die Zahlenwerte aus seinen Startdaten herauszuziehen oder sprintf/snprintf zum Formatieren von Textausgaben auf LCD-Display? Das kann ja gar nicht funktionieren!
Deshalb hier ein beispielhafter Code, zum Verstehen, Lernen, Verstehen und Herumspielen:
#include <LiquidCrystal.h>
// LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
char inData[20] = "19:19:19";
byte stunden, minuten, sekunden;
void setup() {
// Serial.begin(9600);
// Anfangswerte setzen aus dem Vorgabewert
stunden=atol(&inData[0]);
minuten=atol(&inData[3]);
sekunden=atol(&inData[6]);
lcd.begin(16,2);
}
void tickTack()
{
static unsigned long prevMillis;
while( millis() - prevMillis >= 1000) // jeweils 1000 ms zählt um 1 Sekunde weiter
{
sekunden++;
if (sekunden>=60)
{
sekunden=0;
minuten++;
}
if (minuten>=60)
{
minuten=0;
stunden++;
}
if (stunden>=24) stunden=0;
prevMillis += 1000;
}
}
void updateDisplay()
{
char linebuf[17]; // Zeilenpuffer für max. 16 Zeichen
static byte letzteSekunde; // zum Merken, wann LCD zuletzt aktualisiert
if (sekunden==letzteSekunde) return; // in derselben Sekunde nicht mehrfach aktualisieren
letzteSekunde=sekunden;
snprintf(linebuf, sizeof(linebuf), "%02d:%02d:%02d", stunden, minuten, sekunden);
lcd.setCursor(0,0);
lcd.print(linebuf);
}
void loop() {
tickTack();
updateDisplay();
}