duminică, 2 noiembrie 2025

Ceas cu reglaj pe afisaj P10 de 32x16 leduri (4)

    Dupa ce am verificat ca ceasurile cu noua biblioteca DMD2 sunt stabile, am adaugat un al treilea buton pentru a putea avea un reglaj rapid si a nu intra in meniul de reglaj ceas si data.

   Schema devine

Cele 3 butoane fac urmatoarele functii:
- daca se apasa butonul + se comuta modul de afisare intre font subtire si cel gros.
- daca se apasa butonul - se intra in modul de reglare intensitate luminoasa (brithness, semnalata prin aparitia unui punct pe primul rand de sus, in extrema stanga este minimul (PWM = 5) si in dreaptta (PWM = 255), cresterea intensitatii se face din butonul +, respectiv scaderea prin apasarea butonului -, iar iesirea si memorarea in EEPROM prin apasarea butonului MENU.
- daca se apasa butonul MENU se intra in modul de reglaj ceas si data, folosind butoane + si -, respectiv MENU/NEXT pentru trecerea la parametrul urmator, asemanator de modul cum s-a prezentat in articolul Ceas cu reglaj pe afisaj P10 de 32x16 leduri
a) ora
b) minutele
c) anul
d) luna
e) ziua
- la treapta minima 0 din 16 (PWM = 5 din 255), consum 0,02A, respectiv 0,05A
- la o treapta intermediara, 3 din 16 (PWM = 48 din 255), consum 0,20A, respectiv 0,44A
- la maxim, treapta 16 din 16 (PWM = 255 din 255), consum 1A, respectiv peste 2A
   Ca de obicei, am facut si 2 filmulete:


Ceas cu reglaj pe afisaj P10 de 32x16 leduri (3)

    Deoarece fontul gros folosit la ceasul anterior nu permite adaugarea unor spatii, am cautat alt font mai ingust, dar tot mare, asa ca am dat de filmuletul Arduino + P10 Panel + DS1307 | Digital Clock Using LED Matrix P10 with Arduino Uno and DS1307 RTC

care are in descriere si fisierul cu fontul cautat (fiserul Font_6x14.h) care se descarca si muta in subdirectorul fonts unde este instalata biblioteca DMD2
si folosind programul actualizat DMD2-P10-clock3d.ino si aceeasi schema 

Ceas cu reglaj pe afisaj P10 de 32x16 leduri (2)

    Dupa ce am modificat cu succes ceasul simplu, dupa cum am prezentat in articolul anterior, am facut aceleasi modifcari si ceasului cu reglaj prin schimbarea bibliotecii DMD cu biblioteca DMD2 pentru a putea reduce intensitatea luminoasa (brightness).

   La nivelul minim al intensitatii (5) 

cu fonturi subtiri, fonturi groase si data consumul este destul de redus
iar cand intensitatea este maxima,
 curentul consumat este semnificativ

    Schema folosita este identica cu cea a ceasului testat acum 5 ani:

   Programul adaptat este DMD2-P10-clock3c.ino care include, pe langa reglajul orei si datei (prin apasarea butomului MENU/NEXT si apoi repetata a butonului +) si schimbarea modului de afisare a orei cu caractere subtiti, apoi groase prin apasarea butonului +.
  A facut si niste filmulete:

Ceas pe afisaj P10 cu 32x16 leduri (2)

    Am (re)gasit, prin cutiile mele, un panou de leduri P10 (32x16) pe care il testase acum vreo 5 ani si facusem, bineinteles, un ceas, ce folosea biblioteca dedicata DMD, dar nu reusisem sa reduc intensitatea luminoasa decat prin reducerea tensiunii, dar si asta pana la o anumita valoare, pentru a functiona stabil.

   Acum am cautat pe net si am constatat ca exista biblioteca DMD2 imbunataita, ce are si functia de reglaj brightness a intensitattii, asa ca am modificat programul original pentru noua bilioteca, acesta devenind DMD2-P10-clock.ino.

   Toata "smecheria" consta in comanda pinului OE a registrelor de deplasare (care comanda sau nu activarea iesirilor) cu semnal PWM (semnal cu factor de umplere reglabil), astfel ca la un factor PWM 5 din 255, cam 2% "vazut" de osciloscopul de hobby (dar si real: 5/255*100 = 1.96%), consumul afisajului este de sub 20mA 
iar daca ar fi la 100% cca 1,1A.

 Schema de conectare este aceeasi



miercuri, 29 octombrie 2025

Lumina de fundal controlabila la afisaje alfanumerice (1602 sau 2004) cu interfata i2c

    De obicei, la afisajele alfanumerice LCD1602 sau LCD 2004 cu interfata i2c lumina de fundal se aprinde sau se stinge cu o comanda de genul lcd.backlight(), respectiv lcd.noBacklight().


   Am gasit in articolul Dimming 16×2 and 20×4 LCD displays ca sunt 3 variante, dar cea mai simpla este cea in care se elimina jumperul si se conecteaza un fir de la pinul dinspre bareta cu multi pini al interfetei i2c la un pin al placii Arduino cu iesire PWM (3,5,9,10 sau 11), eu alegand pinul 11.

  In mod normal, cu jumper-ul conectat, schema de comanda a ledului de fundal este:

iar cand se vrea comanda ledului cu ajutorului iesirii PWM prin comanda analogWrite(11,127) de exemplu (aprinderea cu comanda lcd.backlight() ramane activa si ea pentru a comanda tranzistorul)
asa ca la mine arata asa, in proiectul de termostat reglabil cu ceas RTC cu senzor SHT31 prezentat in articolul Termostat reglabil cu ceas RTC si afisaj LCD2004 (2)

   Mai multe detalii, inclusiv o zona cu posibilitate de schimbare on-line a valorilor frecventei si factorului de umplere (PWM = 0..255 din 255), vedeti articolul Arduino PWM analogWrite() Tutorial – Analog Output, eu am facut niste capturi de ecran doar pentru reglajul factului de umplere:
  
   Programul termostatului cu facilitatea de reglare din encoder si memorare a intensitatii luminoase a fundalului este big_font_clock_thermometer_v6a.ino.
   Am facut si 2 filmulete:

duminică, 26 octombrie 2025

Termostat reglabil cu ceas RTC si afisaj LCD2004 (2)

    Am modificat proiectul anterior unde aveam un senzor DS18B20 si l-am inlocuit cu un senzor pe i2c de tip SHT31 (AHT31), pe care il folosisem si in proiectul numit Ceas RTC cu caractere mari si date meteo pe afisaj LCD2004 (3).

   Schema acestui proiect este 

   Pentru a fi sigur ca totul este in regula, am incarcat programul de cautare periferice i2c (i2c_scanner) s am obtinut:
- 0x27 este adresa interfetei pentru afisajul LCD2004
- 0x68 este adresa RTC-ului (DS3231)
- 0x57 este adresa EEPROM-lui de pe modului RTC
- 0x44 este adresa senzorului SHT31 (AHT31)
   Noul sketch-ul pentru termostatul cu senzor SHT31 este big_font_clock_thermometer_v6.ino si in afara de citirea diferita a noului senzor, am mai adaugat si umiditatea relativa, ca tot era disponibila.
La o apasare scurta a butonului de pe encoder se schimba afisarea cu caractere mari a orei sau a temperaturii
  La apasarea lunga (mai mult de 3-4 secunde) se ajunge la modul de reglare a temperaturii dorite, a histerezisului, a datei si orei, dupa cum se va vedea in filmuleletele urmatoare: