Echtzeituhr mit Display am Nano V3 - AZ-Delivery

Im unserem heutigen Blog-Beitrag kombinieren wir 3 Produkte: unseren allzeit beliebten AZ-Delivery Nano V3, eine DS3231 Echtzeit-Uhr, und eine vierstellige 7-Segment LED Anzeige.

Diese bilden eine gute Basis für Projekte bei denen die Uhrzeit eine Rolle spielt – Egal ob jemand eine auf Arduino basierende Kuckucksuhr, eine Zeitgesteuerte Zugangskontrolle, oder eine Stempeluhr mit RFID-Tags realisieren möchte.

Bei unserem heutigen Projekt bekommt der Arduino die Uhrzeit von der Echtzeit-Uhr, und gibt diese auf dem Display aus. Jedes der Module benötigt dabei nur 4 Verbindungen.

Wir verkabeln die Bauteile wie folgt:

AZ-Delivery Nano V3

DS3231

A5

SCL

A4

SDA

3V3

VCC

GND

GND

 

AZ-Delivery Nano V3

4 Digit 7 Segment Display

D2

CLK

D3

DIO

+5V

VCC

GND

GND

 

 

Uhr Schaltplan

 

Für die Programmierung nutzen wir die gleiche Bibliothek wie in unserem eBook zum 4 Digit 7 Segment Display: TM1637Display.h.

Die Echtzeituhr verbinden wir über den I²C-Bus. Die Uhr hat die Adresse 0x68.

Die Funktion bcdToDec benötigen wir, um den Binärcode den wir von der Echtzeituhr bekommen in Dezimalzahlen umzuwandeln.

 

#include <Arduino.h>

#include <TM1637Display.h>
#include <Wire.h>
#define RTC_I2C_ADDRESS 0x68 // I2C Adresse des RTC  DS3231
 
#define CLK 2 // Arduino Pin D2 als CLK (RTC) 
#define DIO 3 // Ardiono Pin D3 als DIO (RTC)
 
TM1637Display display(CLK, DIO); // 

uint8_t bcdToDec( uint8_t val )
{
   return (uint8_t) ((val / 16 * 10) + (val % 16));
}

int pause = 500;
 
int stunde,minute,sekunde;
   
void setup(){
  Wire.begin();
  Serial.begin(9600);
  display.setBrightness(0x0a); 
  
}
 
void loop(){
   Wire.beginTransmission(RTC_I2C_ADDRESS); //Aufbau der Verbindung zur Adresse 0x68
   Wire.write(0);
   Wire.endTransmission();
   Wire.requestFrom(RTC_I2C_ADDRESS, 7);
 
   sekunde = bcdToDec(Wire.read() & 0x7f);
   minute = bcdToDec(Wire.read()); 
   stunde = bcdToDec(Wire.read() & 0x3f); 
   
     Serial.print(stunde);
     Serial.print(":");
     Serial.print(minute);
     Serial.print(":");
     Serial.println(sekunde);
        
     display.showNumberDec(stunde, true, 2, 0);
     display.showNumberDec(minute, true, 2, 2);
   delay(pause);

}

Nach dem hochladen des Codes können wir auf dem seriellen Monitor der Arduino IDE überprüfen ob jede halbe Sekunde die Zeit ausgegeben wird.

Wenn alles richtig angeschlossen ist, erscheint die aktuelle Uhrzeit auf dem 7-Segment Display.

 

Fertiger Aufbau

 

Damit haben wir die Basis für weitere Projekte geschaffen. Wie wäre es mit einem größeren Display? Sensoren für Temperatur und Luftdruck für eine Wetterstation? Oder ein MP3-Shield welches zu jeder vollen Stunde ein „Kuckuck“ von sich gibt?

 

Wir hoffen, dass Sie unser heutiger Blogbeitrag Sie inspiriert hat, und wir freuen uns auf Ihre Kommentare. Bis zum nächsten Beitrag von AZ-Delivery, Ihrem Experten für Mikroelektronik!


 

Für arduinoProjekte für anfänger

2 Kommentare

udo

udo

hallo,

durch diesen code stürzt ständig meine arduino ide ab.

truefirewolf

truefirewolf

Hallo,

zunächst hatte ich mich gefreut mit so wenigen Bauteilen und kurzem Code eine Digitaluhr zu bauen.

Bei genauerer Betrachtung stellt man allerdings fest, dass man die Uhrzeit so nicht einstellen kann, das gibt die Software nicht her.

Es wäre ein außerordentlicher Zufall, wenn die Uhrzeit beim Einschalten genau stimmen würde. Man benötigt ein anderes Programm wie z.B. von der Seite: http://shelvin.de/die-uhrzeit-des-rtc3231-vom-arduino-einstellen/

Betreiben kann man die so eingestellte Uhr dann mit dem oben angegeben Programm. Da die Batterie Jahre halten soll, muss o.g. Prozedur eben auch nur bei Batteriewechsel durchgeführt werden.

truefirewolf

Kommentar hinterlassen

Alle Kommentare werden von einem Moderator vor der Veröffentlichung überprüft

Empfohlene Blogbeiträge

  1. ESP32 jetzt über den Boardverwalter installieren - AZ-Delivery
  2. Internet-Radio mit dem ESP32 - UPDATE - AZ-Delivery
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1 - AZ-Delivery
  4. ESP32 - das Multitalent - AZ-Delivery