sitemap link mailform link home

LCD-Uhr

Ein einfacher Sketch für eine LCD-Uhr.

Die Schaltung verwendet ein Standard-LCD, wobei die Hintergrundbeleuchtung nicht verwendet wird:

LCD-Schaltplan

Als Zeitbasis verwende ich erst einmal nur zwei Delays mit je 500 ms als Sekundentakt. Das ist zwar nicht sehr genau - reicht aber aus, um zu zeigen, wie man die Anzeige organisieren kann.

Die Zeit soll im üblichen Format (Minuten und Sekunden) mit blinkendem Doppelpunkt angezeigt werden:

10:45

Listing:

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int Sekunden = 0;
int Minuten = 0;

void setup() {  // put your setup code here, to run once:
  lcd.begin(16, 2);
  lcd.print("Super-Uhr");
}

void loop() {
  lcd.setCursor(0, 1);
  if (Minuten < 10)
  {
    lcd.print("0");
  }
  lcd.print(Minuten);
  lcd.print(":");
  if (Sekunden < 10)
  {
    lcd.print("0");
  }
  lcd.print(Sekunden);
  delay(500);
  lcd.setCursor(2, 1); // Doppelpunkt ausschalten
  lcd.print(" ");
  delay(500);
  Sekunden++;
  if (Sekunden == 60)
  {
    Minuten++;
    Sekunden = 0;
  }
}

 

Und nun eine "ganz genau gehende" Uhr mit Timer-Interrupt.
Die Bibliothek "TimerOne.h" muss installiert werden:

Externer Link https://playground.arduino.cc/code/timer1

Die Codezeilen, die mit TimerOne in Verbindung stehen, sind fett gedruckt!

Listing:

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#include "TimerOne.h"
int alle_x_Sekunden = 1;

int Sekunden = 0;
int Minuten = 0;

void setup() {  // put your setup code here, to run once:
  lcd.begin(16, 2);
  lcd.print("Super-Uhr");
  Timer1.initialize(alle_x_Sekunden * 1000000);
  Timer1.attachInterrupt(Takt);

}

void Takt() {
  lcd.setCursor(0, 1);
  if (Minuten < 10)
  {
    lcd.print("0");
  }
  lcd.print(Minuten);
  lcd.print(":");
  if (Sekunden < 10)
  {
    lcd.print("0");
  }
  lcd.print(Sekunden);
  //lcd.setCursor(2, 1); // Doppelpunkt ausschalten
  //lcd.print(" ");
  Sekunden++;
  if (Sekunden == 60)
  {
    Minuten++;
    Sekunden = 0;
  }
}

void loop() {

}

 

.

Letzte Änderung:
October 24. 2018 15:31:58
«    top    »