Se afișează postările cu eticheta KY-040. Afișați toate postările
Se afișează postările cu eticheta KY-040. Afișați toate postările

miercuri, 18 februarie 2026

Ceas RTC reglabil pe afisaj i2c LCD4004

     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 
- luna
- zi
- ora
- minut
- secunda

marți, 3 februarie 2026

Ceas RTC reglabil pe afisaj i2c LCD4002

    M-am gandit sa fac si un ceas ce foloseste modul RTC de la care sa preiau ora, data si chiar si temperatura, sa fie si reglabil din encoder, dupa ce testasem asta pe afisajul LCD4004 (l-am prezentat in articolul anterior).

    Schema de conectare este cea utilizata si la termostatul reglabil cu ceas RTC si afisaj LCD4002

doar ca nu am conectat senzorul DS18B20, temperatura este preluata de la senzorul din integratul DS3231 din modulul RTC (bineinteles ca afisajul este LCD4002).
    Prima versiune de program este LCD4002_RTC_clock_1.ino, care nu are o prezentare a orei foarte frumoasa (ca aranjare) a fost inspirata de ceasul RTC cu caractere mari si date meteo pe afisaj LCD2004
rezultand
 si cu aceasta ocazie am facut 2 filmulete:
apoi am preluat partea de caractere mari (cifre si litere) de la Custom Large Font for 16x2 LCDs

si programul devine LCD4002_RTC_clock_2.ino cu care am facut urmatoarele filmulete:
    Ca si la interfata i2c de la afisaul LCD4004 am inlocuit un strap (rezistenta 0Ω) cu una de 470Ω si am scazut curentul prin ledul/ledurile de fundal de la 200-230mA la 3,8mA (2,82V cadere de tensiune). Valoarea curentului este suficienta ca lumina ledului sa nu deranjeze noaptea si sa fie vizibila informatia de pe afisaj pe timp de zi.

luni, 13 octombrie 2025

Termostat reglabil cu ceas RTC si afisaj LCD2004

    Dupa ce am fost multumit de modul de afisare, reglare si stabilitate la proietul anterior, de Ceas RTC cu caractere mari si termometru pe afisaj LCD2004 am trecut s la partea de proiect mult mai util, un termostat reglabil cu ceas RTC.

   Schema deriva din cea a ceasului, doar ca am pus 3 leduri, unul rosu pentru temperatura scazuta (sub pragul de temperatura), unul verde pentru temperatura normala (valoare peste pragul de temperatura) si unul galben pentru a simula comanda la centrala / calorifer electric. etc (care se aprinde cand temperatura este sub pragul de temperatura si se stinge la depasirea pragului de temperatura plus valoarea histerezisului)

   La o apasare scurta se comuta afisarea cu caractere mari a orei cu cea a temperaturii, apoi iar ora, etc.
   Cateva exemple:
- temperatura mai mica decat pragul reglat (led rosu aprins, led galben aprins, adica incalzitor pornit, pe afisaj apare si o steluta indicand pornirea sistemului de incalzire)
- temperaura peste pragul reglat, dar mai mica decat pragul de oprire (led verde pornit indicand faptul ca temperatura e mai mare decat valoarea reglata, led galben aprins insemnand ca sistemul de incalzire e pornit, iar pe afisaj este si steluta)
- temperatura este peste pragul de decuplare (led verde aprins, led galben stins indicand oprirea sistemului de  incalzire, iar pe ecran nu mai apare steluta)
   Daca apasam lung pe buton (mai mult de 3-4 secunde), se intra in meniul de reglaj, de data asta avem:
- reglaj temperatura
- reglaj histerezis
- reglaj an
- reglaj luna
- reglaj zi
- reglaj minute
- reglaj secunde
    Am facut si niste filmulete:
PS: Programul (sketch-ul) adaptat de mine si folosit este big_font_clock_thermometer_v5a.ino !

duminică, 9 ianuarie 2022

Control variatie intensitate luminoasa pentru 2 (benzi de) leduri cu encoder

   Fata de articolul precedent, in care am folosit 3 butoane, acum voi folosi un encoder KY-040, schema pentru controlul a 2 leduri cu PWM (sau ulterior a unui driver pentru control sens si turatie motor de curent continuu) este    
   Modul de functionare a fost inspirat din videoul Control a DC Motor using the L9110S driver and a Rotary Encoder with an Arduino - Tutorial
   Am facut 2 filmulete, pentru a vedea cum functioneaza sistemul, daca incarcam programul toy_2leds/blob/main/2leds_encoder_v1a.ino
   Conectarea la un modul driver cu L298 s-ar face astfel:

   Bineinteles, schema si programul pot fi imbunatatite, dar acum exista un punct de plecare 😃

marți, 25 aprilie 2017

Ceas pe afisaj cu TM1637

    Fata de articolul Afisaj cu 4 cifre controlate de TM1637 si Arduino unde am testat afisajul, am pus un senzor de umiditate si temperatura DHT11 si am modficat o librarie pentru a afisa si niste litere, de data asta am conectat un modul de ceas de timp real cu DS3231 obtinand un simplu ceas, in prima faza.
dupa cum se vede si in primele filmulete:

   Schema de conectare este extrem de simpla:
iar sketch-ul folosit este TM1637_DS3231_clock0.ino.
   Modul obisnuit de afisare, ararata pentru ore dintr-o cifra 09, lucru, care pe mine ma deranjeaza asa ca imi afiseaza 9 cu un spatiu in loc de 0, dupa ce am modificat sketch-ul, care devine TM1637_DS3231_cloc0a.ino, partea impotrtanta fiind asta, ca se "traduce"asa: daca cifra zecilor de la ore e zero, nu se afiseaza nimic (caracterul nr. 17 din libraria modificata TM1637).
   In filmuletele
am prezentat diferentele intre aceste doua moduri de functionare.

   Dupa asta am conectat un encoder KY-040, dupa cum se vede in schema de mai jos:
montajul aratand asa (se vede si un difuzor/buzzer dintr-un calculator conectat intre pinul D7 si GND)
si am modificat sketch-ul, pentru a putea schimba ora si minutele, se apasa mai lung pe butonul encoderului pentru a intra in modul de modificare, intai se modifica ora, rotind in sensul acelor de ceasornic pentru cresterea valorii, respectiv se roteste in sens trigonometric pentru scaderea valorii orei, dupa care care se apasa pe butonul encoderului pentru a trece la modificarea minutelor, dupa modificare, se apasa iar pe buton pentru a reveni la functionarea normala.
 
   Sketch-ul care face toate acestea este TM1637_DS3231_clock1.ino iar filmuletele in care se vede modul de functionare sunt:


26.05.29017
   Dupa ce am vazut un comentariu de la un pasionat avizat de Arduino, Vlad Gheorghe, ca functioneaza si cu DS1307 in loc de DS3231 prin inlocuirea liniei RTC_DS3231 rtc; cu RTC_DS1307 rtc; mi-am adus aminte ca eu tastam inainte asa, doar ca merge foarte bine si cu DS3231 si cu DS1307, fara alte modificari.
Am facut si eu modifcarea asta si, in plus, am facut ca la reglaj orele sub 10 sa fie afisate fara 0 in fata.
Dupa incarcarea sketch-ului TM1637_DS3231_clock1a.ino se observa ca merge ok: