Dupa ce am constatat ca ceasul RTC reglabil pe afisaj LCD4002 este stabil, am zis sa transfer proiectul pe afisajul LCD4004, pentru ca acele caractere pe 2 randuri sunt destul de prietenoase.
Schema de test este aceeasi, care include interfata i2c catre afisajul LCD4004, o schema clasica de Arduino cu modul RTC (DS3231) si un encoder KY-040
pentru ca am folosit acelasi cablaj (e cumva un cablaj universal folosit la mai multe proiecte, schimband doar afisajul cu interfata i2c: LCD1602, LCD2004, LCD4002 sau LCD4004). Cablajula fost proiectat si realizat de Vlad Gheorghe.
Programul adaptat pentru afisajul LCD4004 este LCD4004_RTC_clock_3.ino si modul de functionare se observa in filmulete:
Ora (in format: ora, minute si secunde) este afisata pe randurile 1 si 2 cu caractere mari ("desenate" pe cele 2 randuri), iar pe randurile 3 si 4 apar la fiecare secunde: data, temperatura si nume zi
Dupa cum se observa si din filmulete, daca se apasa scurt butonul de pe encoder, in loc de ora apare un mesaj ca ceasul este realizat de mine, iar pe randurile 3 si 4 temperatura, data sau numele zilei, depinde cum e momentul:
Daca se apasa indeajuns de lung pe encoder, de intra in meniul de reglaj
- an (reglaj prin rotire stanga pentru scadere si in drepta pentru crestere valoare) si trecere la reglaj luna prin apasarea butinului de pe encoder
Pasul urmator, pentru un ceas complet, a fost sa adaug si un mod de reglaj, iar cel cu encoder, a fost cel mai usor,, deoarece am folosit mare parte din ce facusem pentru ceasul RTC cu caractere mari si date meteo pe afisaj LCD2004 (3) si, in plus, cablajul are conector pentru encoder 😇
Am mutat montajul provizoriu al interfetei i2c la afisajul LCD4004, pe baza schemei prezentate in articolul anterior doar ca am introdus o rezistenta de 470Ω in serie cu ledul/ledurile de fundal (pentru a reduce curentul de la cca 200-230ma la 3.8mA). Luminozitatea fundalului este suficienta sa nu deranjeze noaptea, dar suficienta sa fie informatia vizibila pe timp de zi.
Montajul a fost asamblat pe un cablaj de test si firicele, dar mult mai bun ca cel de pe breadboard, pentru ca am pus si un minibreadboard ca suport/distantier.
Am achizitionat, din curiozitate, 2 afisaje alfanumerice, unul LCD4002 si unul LCD4004. Dupa cum le apare si numele, primul are 40 coloane si 2 randuri, iar cel de-al doilea 40 coloane si 4 randuri.
Afisajul LCD4002 a fost conectat la o interfata i2c si a functionat fara probleme (o sa fac un articol si cu el ulterior).
In schimb, afisajul LCD4004 mi-a dat un pic de lucru, dar dupa ce am cautat pe internet, am gasit o discutie de prin anii 2019-2020 cu titlul LCD 4004 ( 40x4 ) I2C working. Urmand informatiie de acolo, dar si dupa ce am studiat niste fise de catalog ale afisajului original si al reproducerilor (le gasiti incarcate in directorul docs unde am pus si biblioteca si programele cu acest afisaj -> github.com/tehniq3/LCD4004_i2c
Afisajul este contruit ca 2 afisaje LCD4002 (datorita memoriei necesare driver-ului ST7066 compatibil cu clasicul HD44780), asa ca schema de conectare la interfata i2c (cu integratul PCF8574) este
care respecta informatiile gasite pe forum-ul Arduino in discutia mentionata la inceput
Primul test a fost facut, bineinteles, cu ce era pe forum, programiorul numit LCD4004_test.ino, iar biblioteca, utilizata si ulterior, este LiquidCrystal_I2C_4004.
In zilele urmatoare o sa postez informatii si despre numerele uriase create pentru a simula, apoi realiza un ceas RTC, inclusiv cu reglaj de ora cu encoder.