Bei dem von dir gewählten Display brauchst du nur die "Treiber-Library", damit dein Controller damit arbeiten kann. Um das von dir gezeigte Layout zu erstellen, braucht es keine Library, nur deine Programmierarbeit.
Du musst alles selbst im Controller (Arduino) programmieren, damit es so wie du zeigst, aussieht.
Und ja, das kann dann individuell angepasst werden.
In der Arduino IDE scheint es diese Lib nicht zu geben, im Internet fand ich dazu auch nichts.
Aber dafür soll wohl die Arduino GFX Lib mit dem ST7796 Controller Kompatibel sein. Die schwierigkeit wird dann wohl das Layout werden
Dir hat doch @fony schon etwas dazu geschrieben.
Ich kenne das Display nicht, kann daher nichts dazu beitragen.
Und "spezielle" Hardware Libraries wirst du so auch nicht in der IDE finden.
Ja, ich habe auf LCDwiki geschaut wie @fony es mir gesagt hat, die LIb`s die man dort herunterladen kann kann ich nicht in die Arduio IDE einbinden, dann erscheint die Fehlermeldung das die Lib nicht Gültig ist.
Ist für SPI Displays
Hier ist die Lib unter Program Download, runterladen irgend wo den Ordner auspacken, danach auf ->1.Demo -> Demo_Arduino_Mega -> Install libraries
dort sind die Treiber versteckt, Die drei Ordner auswählen und in dein Lib Ordner kopieren
unter github findet man die auch
Gemach wie ich geschrieben habe? Lesen muss man schon.
Ist nicht die einzige was so komisch wird eingebunden
Die drei Dateien in Libordner kopieren
Und wen dein Display da ist habe was vorbereitet, damit man weis wie Lib zu handhaben ist, Rest darfst du machen
/* Beispiel für Forum
* https://forum.arduino.cc/t/passende-librarys-fur-den-hc-12-funkmodul-und-einem-lcd-tft-display/1172499/25
* für 3,95" LCDWicki Display mit ST7796 Treiber
*/
#include "RTClib.h"
RTC_DS3231 rtc;
#include <LCDWIKI_GUI.h> //Core graphics library
#include <LCDWIKI_KBV.h> //Hardware-specific library
//the definiens of 8bit mode as follow:
//die Definitionen des 8bit-Modus wie folgt:
//if the IC model is known or the modules is unreadable,you can use this constructed function
LCDWIKI_KBV tft(ST7796S, 40, 38, 39, 43, 41); //model,cs,cd,wr,rd,reset
//Farbpalette
#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
//Anfangs Koordinaten für Zeichnen auf Display
//x1, y1 ist oben links
// x1, y1, x2, y2 Die Lib nutzt keine Breite und Höhe sonst wurde stehen w für x2, und h für y2
uint16_t x1 = 40; uint16_t y1 = 60;
uint16_t x2 = 440; uint16_t y2 = 120;
//Hilfs Koordinat wegen schreiberei
uint16_t x3 = x2 - x2 / 2 + x1 / 2;
void setup() {
Serial.begin(9600);
if (! rtc.begin()) {
Serial.println("RTC3231 nicht gefunden");
Serial.flush();
while (1) delay(10);
}
tft.Init_LCD();
tft.Fill_Screen(BLACK); //Hintergrund Farbe
tft.Set_Rotation(1);
tft.Set_Text_colour(WHITE);
tft.Set_Draw_color(WHITE);
// Grundgerüst wird gezeichnet
tft.Draw_Rectangle( x1, y1, x2, y2);//Großer Rechteck
tft.Draw_Rectangle( x1, y2, x3, y2 + y1); //Erster kleiner Rechteck links
tft.Draw_Rectangle( x3, y2, x2, y2 + y1); //Erster kleiner Rechteck rechts
tft.Draw_Rectangle( x1, y2 + y1, x3, y2 * 2); //Zweiter kleiner Rechteck links
tft.Draw_Rectangle( x3, y2 + y1, x2, y2 * 2); //Zweiter kleiner Rechteck rechts
}
void loop() {
DateTime now = rtc.now();
tft.Set_Text_colour(WHITE);
tft.Set_Text_Size(3);
tft.Set_Text_Mode(0);//Löschen und Überschreiben alten Wert
tft.Set_Text_Back_colour(BLACK);
tft.Print_Number_Int((now.hour()), 60, 75, 2, ' ', 10);
tft.Set_Text_Size(4);
tft.Print_String(":", 98, 70);
tft.Set_Text_Size(3);
if (now.minute() < 10) {
tft.Print_String ("0", 122, 75);
tft.Print_Number_Int((now.minute()), 142, 75, 2, ' ', 10);
}
else tft.Print_Number_Int((now.minute()), 122, 75, 2, ' ', 10);
tft.Print_String("Uhr", 165 , 75);
tft.Print_Number_Int((now.day()), 240, 75, 2, ' ', 10);
tft.Print_String(".", 272 , 75);
if (now.month() < 10) {
tft.Print_String("0", 294, 75);
tft.Print_Number_Int((now.month()), 314, 75, 2, ' ', 10);
}
else tft.Print_Number_Int((now.month()), 294, 75, 2, ' ', 10);
tft.Print_String(".", 328 , 75);
tft.Print_Number_Int((now.year()), 348, 75, 4, ' ', 10);
}
Musste mir die Doku aufmachen, seit 2J mit der Lib nichts gemacht.
Das Display hängt jetzt normalerweise am einem ESP32.
Jetzt noch eine Version mit formatierter Anzeige
mit viel weniger schreiberei, darfst Testen
/* Beispiel für Forum
https://forum.arduino.cc/t/passende-librarys-fur-den-hc-12-funkmodul-und-einem-lcd-tft-display/1172499/25
für 3,95" LCDWicki Display mit ST7796 Treiber
*/
#include "RTClib.h"
RTC_DS3231 rtc;
#include <LCDWIKI_GUI.h> //Core graphics library
#include <LCDWIKI_KBV.h> //Hardware-specific library
//the definiens of 8bit mode as follow:
//die Definitionen des 8bit-Modus wie folgt:
//if the IC model is known or the modules is unreadable,you can use this constructed function
LCDWIKI_KBV tft(ST7796S, 40, 38, 39, 43, 41); //model,cs,cd,wr,rd,reset
//Farbpalette
#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
//Anfangs Koordinaten für Zeichnen auf Display
//x1, y1 ist oben links
// x1, y1, x2, y2 Die Lib nutzt keine Breite und Höhe sonst wurde stehen w für x2, und h für y2
uint16_t x1 = 40; uint16_t y1 = 60;
uint16_t x2 = 440; uint16_t y2 = 120;
//Hilfs Koordinat wegen schreiberei
uint16_t x3 = x2 - x2 / 2 + x1 / 2;
void setup() {
Serial.begin(9600);
if (! rtc.begin()) {
Serial.println("RTC3231 nicht gefunden");
Serial.flush();
while (1) delay(10);
}
tft.Init_LCD();
tft.Fill_Screen(BLACK); //Hintergrund Farbe
tft.Set_Rotation(1);
tft.Set_Text_colour(WHITE);
tft.Set_Draw_color(WHITE);
// Grundgerüst wird gezeichnet
tft.Draw_Rectangle( x1, y1, x2, y2);//Großer Rechteck
tft.Draw_Rectangle( x1, y2, x3, y2 + y1); //Erster kleiner Rechteck links
tft.Draw_Rectangle( x3, y2, x2, y2 + y1); //Erster kleiner Rechteck rechts
tft.Draw_Rectangle( x1, y2 + y1, x3, y2 * 2); //Zweiter kleiner Rechteck links
tft.Draw_Rectangle( x3, y2 + y1, x2, y2 * 2); //Zweiter kleiner Rechteck rechts
}
void loop() {
DateTime now = rtc.now();
tft.Set_Text_colour(WHITE);
tft.Set_Text_Size(3);
tft.Set_Text_Mode(0);//Löschen und Überschreiben alten Wert
tft.Set_Text_Back_colour(BLACK);
static char uhr[8 ];
sprintf(uhr, "%.2d:%.2d ",
now.hour(), now.minute());
tft.Print_String(uhr, 60, 75);
static char jahr[12];
sprintf(jahr, "%.2d.%.2d.%.2d ",
now.day(), now.month(), now.year());
tft.Print_String("Uhr", 168 , 75);
tft.Print_String(jahr, 240, 75);
}
Da sage ich schonmal vielen dank
Sobald das Display da ich werde ich Testen und Präsentieren
Darf ich fragen woher die Real Time Clock die infos für die Uhrzeit herholt ? ich vermite mal die lib nutzt die HC-12 Module als empfänger, so wie vom Prinzip her eine radio controlled uhr funktioniert ?
EDIT:
Ich hab verstanden das ist ein extra Modul mit einer Knopfzelle
Wenn du eine RTC kaufen willst dan nicht die DS1307 ist sehr ungenau.Die DS3231geht wie ein Sweizer😁
mach
LCDWIKI_KBV tft(ILI9488, 40, 38, 39, 43, 41);
nicht das du Hast den mit ILI bekommen, habe beide, und kurioser weise mit ILI funktioniert der auch nur die Farben sind nicht echt, zu grell
Alles Zurück du hast ja keine RTC deshalb mach das mall so eine Minute bitte
Es sollte nur der Rahmen angezeigt werden
/* Beispiel für Forum
https://forum.arduino.cc/t/passende-librarys-fur-den-hc-12-funkmodul-und-einem-lcd-tft-display/1172499/25
für 3,95" LCDWicki Display mit ST7796 Treiber
*/
#include "RTClib.h"
RTC_DS3231 rtc;
#include <LCDWIKI_GUI.h> //Core graphics library
#include <LCDWIKI_KBV.h> //Hardware-specific library
//the definiens of 8bit mode as follow:
//die Definitionen des 8bit-Modus wie folgt:
//if the IC model is known or the modules is unreadable,you can use this constructed function
LCDWIKI_KBV tft(ILI9488, 40, 38, 39, 43, 41); //model,cs,cd,wr,rd,reset
//Farbpalette
#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
//Anfangs Koordinaten für Zeichnen auf Display
//x1, y1 ist oben links
// x1, y1, x2, y2 Die Lib nutzt keine Breite und Höhe sonst wurde stehen w für x2, und h für y2
uint16_t x1 = 40; uint16_t y1 = 60;
uint16_t x2 = 440; uint16_t y2 = 120;
//Hilfs Koordinat wegen schreiberei
uint16_t x3 = x2 - x2 / 2 + x1 / 2;
void setup() {
Serial.begin(9600);
/* if (! rtc.begin()) {
Serial.println("RTC3231 nicht gefunden");
Serial.flush();
while (1) delay(10);
}
*/
tft.Init_LCD();
tft.Fill_Screen(BLACK); //Hintergrund Farbe
tft.Set_Rotation(1);
tft.Set_Text_colour(WHITE);
tft.Set_Draw_color(WHITE);
// Grundgerüst wird gezeichnet
tft.Draw_Rectangle( x1, y1, x2, y2);//Großer Rechteck
tft.Draw_Rectangle( x1, y2, x3, y2 + y1); //Erster kleiner Rechteck links
tft.Draw_Rectangle( x3, y2, x2, y2 + y1); //Erster kleiner Rechteck rechts
tft.Draw_Rectangle( x1, y2 + y1, x3, y2 * 2); //Zweiter kleiner Rechteck links
tft.Draw_Rectangle( x3, y2 + y1, x2, y2 * 2); //Zweiter kleiner Rechteck rechts
}
void loop() {
/* DateTime now = rtc.now();
tft.Set_Text_colour(WHITE);
tft.Set_Text_Size(3);
tft.Set_Text_Mode(0);//Löschen und Überschreiben alten Wert
tft.Set_Text_Back_colour(BLACK);
static char uhr[8 ];
sprintf(uhr, "%.2d:%.2d ",
now.hour(), now.minute());
tft.Print_String(uhr, 60, 75);
static char jahr[12];
sprintf(jahr, "%.2d.%.2d.%.2d ",
now.day(), now.month(), now.year());
tft.Print_String("Uhr", 168 , 75);
tft.Print_String(jahr, 240, 75);
*/
}
Funktioniert Kurioserweise immer noch nicht, ich hoffe nicht das das Panel direkt kaputt ist
Laut eBay ist der Chipsatz ein ST7796S sollte eigl. Funktionieren
ACHSO
Baue mall das zusammen Moment, eigentlich ohne der RTC sollte funktionieren.
Frage was stecht auf der Verpackung normale weise ist der Treiber aufgeschrieben
Doch ILI 9488
Den Letzten Sketch nehmen und auf ILI ändern
Ja, widersprüchlich zu dem was in der Artikelbeschreibung steht