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:

5 comentarii:

  1. Salut,
    Functioneaza si cu DS1307 cu biblioteca de aici https://github.com/adafruit/RTClib inlocuind RTC_DS3231 rtc; cu RTC_DS1307 rtc; linia 23 de la TM1637_DS3231_clock1.ino

    RăspundețiȘtergere
    Răspunsuri
    1. am vazut... am testat si eu cu partea de 13067 si merge cu 3231... am si completat in articol ;)

      Ștergere
  2. It would be useful to make a button for setting the seconds to 00. Easy way to set the exact time.

    RăspundețiȘtergere
  3. Buna - unde asi putea sa gasesc library pt proiect ? Asi dori sa realizez acest proiect cu varianta buzer si encoder- Multumesc mult - Stima: Csaba !

    RăspundețiȘtergere
    Răspunsuri
    1. Salut, libraria se gaseste in directorul unde sunt si sketch-urile: https://github.com/tehniq3/TM1637-display

      Ștergere