Deoarece versiunea anterioara avea un mic "defect", schimband intensitatea luminoasa a afisajului matriceal foarte repede daca erau variatii bruste ale luminii din mediu apropiat, am corectat asta in fisierul LEDMatrixV2ro4.ino din subdirectorul LEDMatrixV2ro4.
Deoarece am primit de la Fabritio un mail in legatura cu actualizarea acestui tip de ceas, in care se sa foloseasca actualizarea orei de la Google si nu de la un server NTP, dar sa am informatii locale despre temperatura si umiditatea relativa a aerului din camera, am zis sa studiez un pic programul primit de la el. Am gasit fragmente de blocuri din sketck-urile mele, ceva fragmente dintr-un sketch polonez, dar important ca e un ceas stabil.
Bineinteles ca nu m-am putut abtine si am adaugat controlul automat al intensitatii afisajului, foarte utila pentru a nu deranja pe timp de noapte si sa fie vizibila informatia in zile foarte luminoase. Am adaugat si simbol de grad pentru temperatura, inlocuind un caracter mai putin folosit.
Am continuat sa il testez si pentru ca are caractere groase pentru ceas si normale pentru data, temperatura si umiditate.
Desi eu am folosit 6 module de 8x8 leduri, se poate modifica pentru 4 module, de asemeena, se poti roti caracterele, pentru a putea fi folosit pentru cele 2 tipuri de conexiune a afisajelor
iar datele retelei wifi la care trebuie sa se conecteze ESP8266 se modifica aici
Ca de obicei, am facut niste filmulete, pentru ca se observa mai usor modul de functionare:
29.04.2020
Dupa ce am fost atentionat de vechiul meu colaborator, Bogdan Argatu, ca acest "ceas" actualizeaza data doar dupa trecerea orei GMT, mi-a scris si de la fabritio acelasi mesaj, am urmarit si am constatat si eu acelasi lucru. Am studiat sketch-ul si corectia se face doar la ora, nu si la data, trebuie aflat variabila epoch, de fapt timpul unix la care sa se adauge orele de decalaj de fus oras si orava vara, asa ca mai sunt probeleme, Uneori mai apare valoarea temperaturii la umiditate si invers, deci mai e de lucru la versiunea asta.
Dupa ce am primit de la Mihai Brindusoiu un afisaj matriceal compus din 6 module comandate cu MAX7219, am testat si ei eu ceasurile cu autoreglare zilnica de pe internet, pe care le prezentasem anterior (aici si aici), apoi folosind programul care i-a fost modificat de autorul ceasului original pentru afisaje cu diverse configuratii (cel de aici) am adaugat si un senzor DHT22, schema devenind
Programul adaptat de mine este MatrixClock_ESP8266_DHT.ino si el indica ca si cel original data incepand cu secunda 45, numele zilei si data, doar ca am mai adaugat si temperatura si umiditatea citite de senzorul DHT22 (AM2302). Eu folosesc libraria DHT de aici.
Cel mai bine se vede functionarea in filmuletele realizate de mine:
Am pastrat cea mai importanta facilitate, aceea de a se conecta la reteaua Wi-Fi locala si de acolo la un server dedicat (NTP) si a compara ora de acolo cu cea din RTC, daca difera se corecteaza ora din RTC.
4.4.2019
Am schimbat putin programul (sketch-ul) pentru a fi mai usor de modificat partea de text deplasabil, dupa cum se vede AICI !
Fata de celelalte versiuni, aceasta are multe animatii, fiindu-mi aratat de unul din cititorii blogului, Ady Sos, care a si tradus indicatiile pentru data si indicatii, eu facand doar adaptare pentru DHT22 (DHT11) fata de ce gasise Ady in articolul Multi Mode Digital Clock, ca se s-a inspirat din acelasi articol Mini LED Clock (gasiti si librariiile utilizate la https://github.com/mrnick1234567/miniclock ) 😉
Pentru teste am folosit aceeasi schema ca si in la celelalte variante, doar ca nu are implementata partea de alarma:
Primul program (Mini_ceas_V.1.0-joergeli-niq_ro.ino) a avut doar mici modificari fata de ce mi-a trimis Ady, folosindu-ma de fisierul neamtului pentru caractere. Modul de prezentare al informatiilor se vede in filmuletele:
01.06.20.19
Deoarece am fost atentionat ca ora n se schimba corect (aparea cu -1 fata de cea reglata), m-am uitat in cod si am gasit o parte de autocorectie functe de vara/iarna, pe care am scos-o si pare ok acum... sketch-ul Mini_ceas_V.1.0-joergeli-1-4a-niq_ro.ino este cu autocorectia scoasa.
In completarea articolului anterior, unde am implementat si afisarea temperaturii si umiditatii relative din aer la ceasul cu alarma, de data asta, am modificat sa avem informatia despre temperatura cu virgula:
Punctele portocalii sunt puse (ulterior) pentru usurinta afisarii, iar caracterele sunt cu galben, initial nu le pusesem la temperatura:
- temperatura negativa cu 2 cifre inainte de virgula:
- temperatura negativa cu o cifra inainte de virgula:
- temperatura pozitiva cu o cifra inainte de virgula:
- temperatura pozitiva cu 2 cifre inainte de virgula:
Am gasit un pic de timp pentru a completa proiectul de ceas matricial cu alarma, cu partea de termometru si higrometru. Senzorul folosit de mine este AM2302 (DHT22), dar se poate folosi si versiunea mai putin precisa, DHT11.
Schema nu difera mult fata de cea din articolul precedent:
Pentru inceput a trebuit sa simulez modul de afisare a temperaturii si umidittii si am realizat ca nu am caractere pentru procent, semnele +, -, semnul de grad Celsius, asa ca am studiat cum sunt create cele din exemplul functional si am modificat si eu fisierul in care sunt definite. Am constata ca fisierul se numeste FontLEDClock.h si se gaseste in subdirectorul libraries din programul Arduino IDE. pentru a nu aparea probleme am creat si eu un fisier cu nume putin diferit, FontLEDClock1.h si l-am pus in acelasi subdirector.
Am ales primele 3 litere, scrii intr-un fisier numerele in hexazecimal, corespondenta lor in binar (folosind utilitarul de la https://www.binaryhexconverter.com/hex-to-binary-converter), apoi am desenat corespondenta. Am constatat ca am caractere scrise de sus in jos, si in oglinda, sa zic asa.
Fisierul meu are modificate doar liniile unor caractere de care nu am nevoie in mod uzual:
Revenind la chestii utile, in prima faza am simulat umiditatea si temperatura, atat pentru valori negativ, cat si pozitive (numere intregi, fara virgula):