sâmbătă, 26 septembrie 2015

Afisaj P20F04D-12L cu rezolutie 16x8 pixeli 2R1G1B

   Acest afisaj este doar o parte a unui afisaj stradal.. el are dimensiunea de 32x16cm si o rezolutie de 16x8 "pixeli" 2R1G1B, adica fiecare e realizat din 2 leduri rosii, unul verde si unul albastru.
   El are un conector de alimentare pentru 5V (pentru VCC si cele 2 VDD-uri), iar interfata de comanda este cu conector HUB40A.
 

    In mod normal, acest panou intra in componenta unui ecran stradal, care poate avea 8 panouri pe verticala (comandate de placa de mai jos):
iar pe orizontala, se monteaza in cascada panouri:
   Curios, dar despre protocolul de comunicare HUB40A nu am gasit mare lucru, ci doar doar o poza cu explicitarea pinilor:
asa ca m-am apucat de experimente sa vad cum il pot comanda si, mai ales, controla, dupa ce am gasit ca pe cablaj exista 2 integrate 74HC245D si 32 de integrate de tip MBI5026GF, fiecare comanda 16 canale, in total 512 leduri = 4 culori (2 rosii, un verde si un albastru) x 16 coloane x 8 randuri.
   Ecranul este impartit in 2 zone mari, una jos si una sus, iar fiecare din acestea e impartia in 4 "patrate" de 4x4 pixeli, diferit de modul nostru de a "vedea":
   In mare, informatia se introduce serial, ca la orice registru de deplasare, doar ca sunt 8 date (cele 2 zone si cele 4 "culori": 2 rosii, un verde si un albastru).
  Pentru a comanda afisajul am ales o placa tip Arduino Nano cu adaptor, care e suficient, cel putin, pentru primele experimente. Schema (in schema mea apare Arduino Uno, dar functioneaza la fel):
  De asemenea afisajul (panoul) a fost alimentat dintr-o sursa de tensiune de 5V/40A (suficienta sa comande cel putin 4 panouri, dupa numarul de mufe).
  Pentru inceput, am modificat un sketch de la www.arduino.cc/en/Reference/ShiftOut si am obtinut textul (care e tratat ca o imagine), comandand doar zona de sus:
si am facut un prim filmulet numit afisaj 2R1G1B cu interfata HUB40A controlat de Arduino

apoi am modificat sa am combinatie de 2 culori de baza (am comandat doar un rosu, verdele si albastru):
- bleo, obtinut din verde si albastru:
- galben, obtinut din verde si rosu:
- violet, obtinut din rosi si albastru:

apoi am obtinut is "alb", din combinatia celor 3 culori:
   Urmatorul pas a fost sa comand si partea de jos:
apoi pe tot ecranul, sus si jos:
   Am trecul la scrierea acestui text pe mijloc, in culorile de baza:

   Am afisaj apoi in combinatie de 2 culori:
   Modul de afisare se vede in filmuletul afisaj 2R1G1B cu interfata HUB40A controlat de Arduino (5)
   Am comandat si cele 3 culori pentru "alb":
dupa cum se vede si in filmuletul afisaj 2R1G1B cu interfata HUB40A controlat de Arduino (6) in care am folosit sketch-ul HUB40A_test4m1g.ino:
   Am schimbat "imaginea" de pe ecran, pentru a ocupa cat mai mult:
si am obtinut pe ecran efectul dorit:
 
 
 
 
 
   In filmuletul afisaj 2R1G1B cu interfata HUB40A controlat de Arduino (7) se vad combinatiile de culori in care am folosit sketch-ul HUB40A_test4m1h.ino
   Pentru moment atat.. eu continui experimentele...

PS: am conectat si al doilea panou si am simulat afisarea orei:

luni, 21 septembrie 2015

Termostat cu afisaj LED (5)

   Fata de termostatul din articolul precedent unde folosisem un senzor digital DS18B20, acum am (re)folosit un LM35 in configuratia extinsa, pentru a putea masura si temperaturi negative. Schema folosita este:
   Am folosit partea principala din sketch-ul anterior, dar adaptat pentru LM35 si, in plus, pot face corectie la masurarea temperaturii, pe langa reglajul pragului de temperatura, histerezis temperatura, tip termostat (sistem incalzire sau racire) si timp intre masuratori.
   Pe ecran, am urmatoarele indicatii:
- temperatura curenta:
- prag temperatura:
- histerezis temperatura:
- termostat pentru racire
- termostat pentru incalzire
- interval de timp intre masuratori:
- procent corectie temperatura la citire folosind si multiplexare:
 
   Folosind sketch-ul 4dig7segm_cc_LM35_thermostat_ver4m8.ino am facut 2 filmulete:

  Pentru un afisaj cu anod comun se foloseste sketch-ul 4dig7segm_ca_LM35_thermostat_ver4m8.ino, care difera foarte putin de sketch-ul anterior:
fata de: