Hydraulikaggregat 18.5kW


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


Spruch des Tages

(Eine Schaltung mit TFT LCD Touchscreen, DS3231 und Arduino Mega)


TFT LCD - Shield

TFT LCD - Shield

Arduino Mega, TFT LCD Display und ein Datum-Uhrzeit-Modul: Das sind die Komponenten, die die „Spruch des Tages“-Schaltung bilden. Die Verdrahtung der Schaltung, die die allen Komponenten zusammen bringt, ist äußerst spärlich. Mit praktisch zwei Drähten und Spannungsversorgung ist die Angelegenheit vom Tisch.
Die Aufgabe der Schaltung ist mit dem Titel bereits definiert. An jedem Tag des Monats soll auf dem Display ein neuer „Spruch des Tages“ erscheinen. Das RTC-Modul liefert das aktuelle Datum und die Uhrzeit. Aus dieser Information kann Arduino die Nummer des Tages auslesen. Aus einer Liste mit vorbereiteten Sprüchen wird dann dem Tag zugehöriger „Spruch des Tages“ ausgewählt und auf dem Display präsentiert.

Arduino Mega

Arduino Mega
Arduino Mega übernimmt die Führungsrolle in der Schaltung und koordiniert alle Abläufe. Mit einem kurzen Programm werden aus dem RTC-Modul das aktuelle Datum und die Uhrzeit ausgelesen und anschließend das Display mit einem passenden „Spruch des Tages“ beliefert.

Display-Shield

Display-Shield
Bei dem Display handelt es sich um ein TFT LCD Touch-Display mit einer Auflösung von 320 x 240. Das Display wurde zusammen mit den Treibern ILI9341 und XPT2046 als ein fertiges Shield ausgeführt. Das Modul kann direkt auf Arduino aufgesteckt werden und benötigt daher keine zusätzliche Verdrahtung.
Auf dem Bild ist das Display-Shield bereits auf Arduino Mega aufgesteckt. Es eignet sich auch für Arduino Uno.

RTC-Modul

RTC-Modul
Das RTC-Modul ZS-042 basiert auf dem Chip DS3231. Es liefert Datum und Uhrzeit mit einer Genauigkeit von 1 Minute pro Jahr. Zusätzlich ist das Modul mit einem Batteriefach ausgestattet. Dank der Batterie werden die aktuellen Daten auch dann beibehalten, wenn die Versorgungsspannung ausgeschaltet wird.

Schaltplan

Schaltplan



Testschaltung

Testschaltung



Das Programm (Sketch)

Bei dem Programm, das unten aufgelistet ist, handelt es sich um das Testprogramm. Es wurde für Testzwecke ein wenig angepasst (abweichend von der Aufgabenstellung) und um eine Testsequenz erweitert. Bei einer „echten“ Anwendung des Programms müsste man diese Testsequenz löschen. Sie besteht aus drei Zeilen:

if (Test_Variable_Tag_des_Monats == 5) { Test_Variable_Tag_des_Monats = 0; }
Test_Variable_Tag_des_Monats++;
clock.setDateTime(2021, 05, Test_Variable_Tag_des_Monats, 20, 10, 0);


In der Array-Variable „Spruch“ werden die gewünschte Texte gespeichert. Die Variable enthält in dem Beispiel fünf Einträge. Sie müsste auf 31 Einträge erweitert werden, damit jedem Tag des Monats ein bestimmter Spruch zugeordnet werden kann. Noch interessanter wäre es, jedem Tag mehrere Sprüche zuzuordnen und anschließend via Zufallszahl einen auswählen zu lassen.
In void setup() wird mit der Anweisung

clock.setDateTime(2020, 03, 9, 19, 35, 0);

das aktuelle Datum bestimmt. Diese Zeile wird einmalig verwendet. Man bestimmt das aktuelle Datum und die Uhrzeit und überträgt das Programm. Anschließend markiert man die Zeile als Kommentar. Bei der nächsten Übertragung, falls sie notwendig sein sollte, werden das aktuelle Datum und Uhrzeit nicht mehr überschrieben.

In dem Hauptprogramm void loop() werden, nachdem der Bildschirm zur Ausgabe vorbereitet wurde, das Datum und Uhrzeit (dt = clock.getDateTime()) und anschließend der Tag des Monats (Tag_des_Monats = dt.day;) ausgelesen. Der Wert der Variable „Tag_des_Monats“ bestimmt dann anschließend, welcher Spruch aus der „Spruch“-Tabelle auf dem Bildschirm angezeigt wird.
Die Zeilen der Testsequenz dienen lediglich, wie oben bereits erwähnt, dem Test. Hier wird nach Ablauf der Wartezeit von 4 sek. (delay(4000)) fortlaufend ein neues Datum gesetzt. So kann geprüft werden, ob die Zuordnung der Sprüche einem bestimmten Tag zufriedenstellend erfolgt.

// ---------------------------------------------------------------------------------
// Arduino - Sketch
// Spruch des Tages
// Mit Arduino Mega, RTC3231, TFT LCD 320x240
//
// MCUFRIEND_kbv.h - V 2.9.9
// DS3231.h - V 1.0.7
// Adafruit_GFX - V 1.5.3
// Arduino IDE - V 1.8.13
// ---------------------------------------------------------------------------------

#include <MCUFRIEND_kbv.h>                          // Bibliotheken
#include <DS3231.h>

MCUFRIEND_kbv tft;
DS3231 clock;
RTCDateTime dt;

#define BLACK   0x0000                              // Farben
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF
#define GRAY    0x8410

String Datum_Aktuell;
int Test_Variable_Tag_des_Monats = 0;               // Nur für Testzwecke
String Spruch [5][2] = {
    { "Das Leben ist schoen.",  ""},                // Spruch-Texte, 2-Zeilg
    { "Dummheit kennt keine",   "Grenzen."},
    { "Aller Anfang ist",       "schwer."},
    { "Angst verleiht",         "Fluegel."},
    { "Arbeite klug,",          "nicht hart."} };

void setup()
{
    tft.begin(0x9341);
    clock.begin();
    clock.setDateTime(2020, 03, 9, 19, 35, 0);      // Aktuelles Datum wird einmalig
                                                    // festgelegt. Nach der Übetragung
                                                    // kann diese Zeile als Kommentar
                                                    // markiert werden.
}

void loop() {
                                                    // Die folgenden 3 Programmzeile dienen
                                                    // nur den Testzwecken. Danach können sie
                                                    // entfernt werden.
        if (Test_Variable_Tag_des_Monats == 5) { Test_Variable_Tag_des_Monats = 0; }
        Test_Variable_Tag_des_Monats++;
        clock.setDateTime(2021, 05, Test_Variable_Tag_des_Monats, 20, 10, 0);

    tft.setRotation(1);
    tft.fillScreen(BLUE);                           // Hintergrundfarbe
    tft.drawRect(0, 0, 320, 240, YELLOW);           // Rahmen
    tft.drawRect(20, 20, 280, 200, RED);
    tft.drawRect(21, 21, 278, 198, RED);
    tft.setTextSize(3);                             // Schriftgrösse
    tft.setTextColor(GREEN);                        // Textfarbe
    tft.setCursor(35, 40);                          // Cursoposition
    tft.print("Heute ist: ");
    dt = clock.getDateTime();                       // Datum auslesen
    Datum_Aktuell = String(dt.day) + "." + String(dt.month) + "." + String(dt.year);
    tft.setCursor(35, 70);
    tft.print(Datum_Aktuell);                       // Datum anzeigen
    int Tag_des_Monats = dt.day;
    tft.setTextColor(WHITE);
    tft.setTextSize(2);
    tft.setCursor(35, 120);
    tft.print(Spruch [Tag_des_Monats-1][0]);
    tft.setCursor(35, 150);
    tft.print(Spruch [Tag_des_Monats-1][1]);
    delay(4000);
}

// --------------------------------------------------------------------------------- 


Kurzvideo

Kurzvideo: Spruch des Tages


Weitere Themen:


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz