Netzteill


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


- Wochenplaner -
oder der Killer der Langeweile
(Eine Schaltung mit DS1302)


Aus den Komponenten Arduino Nano, LCD-Display und einem RTC-Baustein lässt sich schnell eine weitere einfache Schaltung konstruieren, die auch gleich praktisch anwendbar ist. Es wird auf dem Display nicht nur das aktuelle Datum mit Uhrzeit angezeigt. Für jeden Tag der Woche, der ebenfalls ermittelt und angezeigt wird, werden diverse Beschäftigungsvorschläge unterbreitet, um so der eventuell aufkommenden Langeweile entgegenzuwirken. Eine Schaltung, die sich gegenwärtig für viele als äußerst nützlich erweisen kann. Schließlich schreiben wir heute das Jahr 2020, eine Zeit der Corona-Pandemie, Ausgangsverbote und Zwangsquarantäne.

DS1302

Der DS1302 ist eine Echtzeituhr (RTC - Real Time Clock) mit eingebautem Kalender. Der Baustein korrespondiert mit einem Mikroprozessor über drei Leitungen: DAT, LCLK und RST. Als Hauptinformationen stehen Sekunden, Minuten, Stunden, Tag der Woche, Tag des Monats und das Jahr zur Verfügung. Eine Umschaltung von 24 Stunden Betrieb auf 12 Stunden ist möglich. Anpassung an Schaltjahr erfolgt automatisch. Der Stromverbrauch ist äußerst gering (~1µW).

DS1302

DS1302

Infos unter: DS1302 (Kurznotiz)

In der folgenden Schaltung kommt ein fertiges Modul mit dem IC-DS1302 zum Einsatz. Das Modul verfügt über einen Taktgeber (Quarz-Oszillator) und einem Batteriefach. Mit einer Batterie können die Einstellungen der Uhr beim Ausfall der Spannungsversorgung festgehalten werden.

LCD

Als Anzeige dient in der Schaltung ein LCD-Display mit vier Zeilen je 20 Zeichen. Das Display korrespondiert mit dem Mikroprozessor über I2C-Bus. Hierzu wird ein I2C-Interface mit dem Chip PCF8574T verwendet.

Kurzinfo: LCD 20x4
Ein Schaltungsbeispiel: Das Geheimnis des Kreises


LCD mit Interface

LCD mit Interface (Rückseite)

Nano

Die erste Geige in der Schaltung spielt der kleine Vertreter der Arduino-Familie: Arduino Nano. Es werden insgesamt fünf seiner Pins in Anspruch genommen. Die Einspeisung erfolgt mit 9 VDC. Das Display und RTC werden mit separaten 5 VDC versorgt.

Arduino Nano

Arduino Nano (Nachbau)

Schaltplan

Schaltplan



Testschaltung

Testschaltung



Das Programm (Sketch)

Das Programm liest aus dem Echtzeituhrbaustein (DS1302) die aktuelle Zeit und gibt sie auf dem Display aus. Zusätzlich wird der aktuelle Tag der Woche ermittelt und ebenfalls angezeigt. Zu jedem Tag wird darüber hinaus ein Beschäftigungsvorschlag unterbreitet. Der Satz mit dem Vorschlag wird in der letzten Zeile des Displays als Scrolltext angezeigt. In dem Beispiel wird jedem Tag zu Demonstrationszwecken nur eine Beschäftigungsidee zugeordnet. Bei Bedarf kann die Liste der Vorschläge beliebig erweitert werden. Die Vorschläge könnten dann z.B. mithilfe einer Zufallszahl ausgewählt werden. So für das Display als auch für die Echtzeituhr wird eine Bibliothek verwendet. Für das Display „LiquidCrystal_I2C.h“ (Internet: https://github.com/johnrickman/LiquidCrystal_I2C) und für RTC „RtcDS1302.h“ (Internet: https://github.com/Makuna/Rtc). Beide Bibliotheken, damit das Programm funktioniert, müssen installiert werden.

// --------------------------------------------------------
// Wochenplaner
// (Der Killer der Langeweile)
// Mit RTC DS1302 und LCD 20x4 (I2C)
// Arduino Nano, IDE 1.8.12
// --------------------------------------------------------

#include <LiquidCrystal_I2C.h>
#include <ThreeWire.h>  
#include <RtcDS1302.h>

ThreeWire myWire(3,2,4);                        // Schnittstelle RTC: IO, SCLK, CE
RtcDS1302<ThreeWire> Rtc(myWire);               // Schnittstelle RTC
LiquidCrystal_I2C lcd(0x27,20,4);               // LCD: Adresse, Zeichen, Zeilen
int TagNr = 0;
String Tag = "";
String Aufgaben [] { "Rufe Mutti an! ",
                     "30km Fahrradtour. ",
                     "Lerne neue Yogafigur und probiere sie aus. ",
                     "Koche ohne Rezept ein leckeres Mittagessen. ",
                     "Pflanze einen Baum ein. ",
                     "Lerne ein Gedicht und rezitiere es vor einem Spiegel. ",
                     "Heute ist Shopping-Zeit. ", };
void setup () {
   lcd.init();                                   // Display initialisieren 
   lcd.backlight();                              // Hintergrundbeleuchtung
   Rtc.Begin();
   RtcDateTime compiled = RtcDateTime(__DATE__, __TIME__);
   if (!Rtc.IsDateTimeValid())  { Rtc.SetDateTime(compiled); }
   if (Rtc.GetIsWriteProtected()) { Rtc.SetIsWriteProtected(false); }
   if (!Rtc.GetIsRunning()) {  Rtc.SetIsRunning(true); }
   RtcDateTime now = Rtc.GetDateTime();
   if (now < compiled)  { Rtc.SetDateTime(compiled); }
}

#define countof(a) (sizeof(a) / sizeof(a[0]))

void loop ()  {
   delay(1000);
   RtcDateTime now = Rtc.GetDateTime();    
   const RtcDateTime& dt = now;                        
   char datestring[20];
   snprintf_P(datestring, 
           countof(datestring),
           PSTR("%02u/%02u/%04u %02u:%02u"),
           dt.Day(), dt.Month(), dt.Year(), dt.Hour(), dt.Minute() );

   TagNr = dt.DayOfWeek();
   switch (TagNr) {
      case 0: Tag = " Sonntag  "; break; 
      case 1: Tag = "  Montag  "; break;
      case 2: Tag = " Dienstag "; break;
      case 3: Tag = " Mittwoch "; break;
      case 4: Tag = "Donnerstag"; break;
      case 5: Tag = " Freitag  "; break;
      case 6: Tag = " Samstag  "; break; }

   lcd.setCursor(2,0);   
   lcd.print (datestring);                        // aktuelles Datum
   lcd.setCursor(5,1); 
   lcd.print (Tag);                               // Tag der Woche
   lcd.setCursor(0,2); 
   lcd.print ("Die Aufgabe:");
   delay(2000); 
   lcd.setCursor(0,3);
   String Heutige_Aufgabe = Aufgaben [TagNr]; 
   int Satz_Laenge = Heutige_Aufgabe.length();
   String Ausgabe_Text = "                    ";

   for (int i=0; i<Satz_Laenge; i++) {
      for (int j=0; j<19; j++) {
         Ausgabe_Text [j] = Ausgabe_Text [j+1]; }
      Ausgabe_Text [19] = Heutige_Aufgabe [i];
      lcd.setCursor(0,3);
      lcd.print(Ausgabe_Text);
      delay(500); }
}
// ----------------------------------------------------------
        

Kurzvideo

Kurzvideo: Der Killer der Langeweile


Weitere Themen:


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz