miercuri, 26 decembrie 2018

Ceas reglabil animat cu termometru şi higrometru pe afisaj multiplexat cu 4 cifre led

 
    Am adăugat ceasului cu prezentare informaţii animate şi reglaj al ceasului şi datei, pentru a putea avea un ceas independent. Am păstrat si reglajul intensităţii (automat sau manual) cum e prezentat în articolul precedent.
sau 

    Am adăugat doar 2 butoane fără reţinere (pushbutoane) la pinii A1, respectiv A2:
   Schema de bază rămânând aceeaşi
    Apăsând butonul MENU/MENIU se intră în modul de reglaj, întâi al orelor care clipesc repede şi creşte valoare la fiecare apăsare a butonului +, dar dacă se ajunge la 23 şi s eappară o să avem ora 00.
   Dacă se apasă iar butonul MENIU se intră în meniul de reglare al minutelor, care clipesc mai repede, iar valoarea lor creşte prin apăsarea butonului + (sau menţinerea apăsată pentru creştere mai rapidă) până la 59, după care trece la 00.
   La următoarea apăsare a butonului MENIU apare anul, care poate fi schimba doar de la 2018 la 2049
urmează schimbarea lunilor de la 1 la 12
apoi prin apăsarea butonului MENIU se intră la reglarea zilelor, care depind de luna şi an (pentru februarie), în acest mod zilele clipesc rapid pentru a şti ce se modifică
  Acest mod de reglaj l-am găsit la Andy pe blog in articolul Arduino Astronomical Clock (or Arduino Pond Pump Controller!)  şi mi-a plăcut modul de implementare, aşa că l-am tot folosit de-a lungul timpului.
   Sketch-ul folosit este multiplexed_scroll_clock3.ino şi în filmuleţele următoare se vede foarte bine modul de funcţionare şi cum se face reglajul

Ceas animat cu termometru şi higrometru pe afisaj multiplexat cu 4 cifre led (2)

    Fata de articolul anterior, am adăugat reglaj al intensităţii, deoarece noaptea e deranjantă lumina ceasului, aceasta făcându-se prin adăugarea
- unui divizor rezistiv format dintr-o fotorezistenţă şi o rezistenţă de 10kohmi, pentru reglaj automat, funcţie de intensitatea luminoasă pe pastila fotorezistenţei
- unui comutator cu 2 poziţii (NIGHT-NOAPTE - intensitate redusă a afişajului, respectiv DA/ZI - intensitate crescută)
  Măsurarea tensiunii pe pinul analog A3 va determina introducerea unui timp mai mic sau mai mare la multiplexare şi astfel afişajul se va aprinde cu intensitate mai mare sau mai mică.
   Programul care face toate acestea este multiplexed_scroll_clock2.ino şi păstrează facilitatea testării, respectiv funcţionării cu afişaj cu cator comun sau anon, cum am descris in articolul anterior.
   Schema de conectare a modului de ceas RTC, a senzorului DHT22 (AM2302) e aceeaşi
   Ceasul, arată, în afara orei (ca în prima poză) timp de 10 secunde, cu secundă care se stinge şi se aprinde
şi următoarele informaţii, fiecare cca 2,5 secunde cu efecte de intrare şi ieşire pe ecran:
- temperatura ambiantă
- umiditatea relativă a aerului
- data (zi şi lună)
   In filmuletele următoare se vede cum se poate regla manual intensitatea

sâmbătă, 22 decembrie 2018

Ceas animat cu termometru şi higrometru pe afisaj multiplexat cu 4 cifre led

   In articolul anterior am prezentat un ceas cu animaţii la schimbarea informaţiilor (oră, temperatură, dată) pe care l-am testat împreună cu GeoMar, eu simulând funcţionare şi având un afişaj cu catod comun, iar el având un afişaj cu anod comun, modul RTC (DS3231 sau DS1307) şi un senzor de temperatură DS18B20.
   Am căutat şi eu module şi am dat de un modul RTC cu DS3231 şi de un senzor de temperatură şi umiditate cu DHT22 (AM2302), aşa că am făcut un montaj şi am modificat programul, păstrând facilitatea de testare fără RTC şi senzor, modificând totoodată să am si caracterele r şi h pentru a scrie rh (umiditate relativă). Programul (sketch-ul) este multiplexed_scroll_clock1.ino.
   Momentan, nu am implementat schimbarea orei şi datei din butoane, dar le-am pus pe breadboard, să fie la îndemână... schemele pentru anod comun sau catod comun sunt identice pentru afisaje mici
   De fapt, schema arată asa, pentru că folosesc un afisaj cu 4 cifle ce se comandă doar multiplexat, exact cum folosesc si eu, în cazul meu, modelul LFD080AAG-103 care are cifre de cca 20mm înălţime (0.8inch)

   Am testat funcţionarea schimbând variabila test  = 1 
şi am următoarele cazuri
- ora (am scos 0-ul deranjant de la afişarea clasică)
- data
- umiditate relativă aer
- temperatură negativă mai mică de -10 grade Celsius
- temperatură negativă mai mare de -10 grade Celsius
- temperatură pozitivă mai mică de +10 grade Celsius
- temperatură pozitivă mai mare de +10 grade Celsius
   Am trecut la test = 0, adică caz normal, cu RTC şi senzor DHT
obţinând
- ora
- temperatura
- umiditatea relativă a aerului
- data
   Pentru a fi mai bineînţeles, am pus şi 2 filmuleţe pe canalul de youtube:
ceas animat cu termometru si higrometru pe afisaj multiplexat
animated clock with thermometer and hygrometer on multiplexed led display

Ceas animat cu termometru şi afisaj multiplexat cu 4 cifre led

 
  Faţă de articolele anterioare de ceas cu afişaj led din 7 segmente, cu reglaj sau fără, acum am pus o mică animaţie la schimbarea informaţiilor, după ce am discutat cu GeoMar, care voia un ceas cu termometru.
   Am testat şi făcut modificări în programul lui pentru a putea funcţiona cu informaţii simulate (pentru a vedea dacă afişează corect temperaturi negative şi pozitive) şi printr-o schimbare de variabilă să treacă la funcţionare normală de ceac cu modul RTC (cu DS1307 sau mai bine cu DS3231) şi termometru cu DS18B20, după cum se vede în filmuleţele:
ceas cu termometru pe afisaj multiplexat cu animatie
animated clock with thermometer on multiplexed led display
ceas cu termometru pe afisaj multiplexat cu animatie (2)
animated clock with thermometer on multiplexed led display (2)
   Programul scris şi testat de mine pe partea de simulare şi real de GeoMar este multiplexed_scroll_clock0.ino şi se fac doar mici modificări la 2 variabile pentru
- funcţionare simulată
- funcţionare normală (modul de ceas RTC şi termometru cu DS18B20)
respectiv
- afişaj cu catod comun
- afişaj cu anod comun
   Schema pentru anod comun este
iar pentru catod comun este
   Dupa cum se constată, nu este diferenţă vizibilă între ele, deoarece se schimbă din program modul de comandă. Dacă se folosesc afişaje mai mari, cu consumri mari, atunci se introduc tranzistoare si apar diferenţe.
   Eu am avut afisajul cu catod comun LFD080AAG-103, asa ca am pus tip = 0, Geomar are afişaj cu anod comun, aşa că el testeayă cu tip = 1. Eu neavând decât o placă Arduino Nano şi afişajul am folosit test =1, iar el test  = 0, deoarece are montajul complet.
La teste, am obtinut prezentarea astfel:
- ora când are valoare doar unitară (am scos zero deranjant din faţă)
- data
- temperatura negativă din 2 cifre (temperaturi sun -10 grade Celsius)
- temperatura negativă mai mare de -10 grade Celsius
- temperaturi pozitive mai mice de +10 grade Celsius
- temperaturi pozitive mai mari de +10 grade Celsius
   Conectarea afişajului cu catod comun sau anod comun se poate face şi direct sau cu rezistenţe de limitare de 33..47 ohmi între segmente şi pinii plăcii Arduino, astfel
iar senzorul de temperatura la A0
ca în articolul ESP8266 & Temperature Sensor DS18B20 and Onewire library8b20-and-onewire-library/
   Vrând să fac şi ceasul real, nu am dat de un senzor DS18B20, aşa că am făcut un montaj în care am folosit un senzor DHT22 (AM2302), pe care vi-l prezint în articolul următor.