Fata de testele din articolul anterior, cand iesirile "urmareau" starile butoanelor (ledurile era aprinse cand butoanele erau neapasate si stinse cand erau apasate butoanele), de data asta am modificat ca starea iesirii corespunzatoare butonului fara retinere sa se schimbe la fiecare apasare.
In continuarea articolului anterior, unde PCF8574 era folosit doar ca multiplicator de iesiri (comanda un afisaj led cu 7-segmente), acum va fi folosit si pentru a avea mai multe intrari si/sau iesiri digitale.
Ca de obicei, am verificat adresa interfetei i2c utilizand programul i2c_scanner, rezultand 0x27 (alta adresa uzuala este 0x3F)
Primul test a fost realizat conectand P0 (RS de pe interfata) la butonul fara retinere, iar P7 (DB7 de pe interfata) la un led inseriat cu o rezistenta de 220-470Ω.
Pentru un anumit proiect, am vrut sa controlez un afisaj cu un singur digit de 7-segmente folosind comunicatia i2c si am avut la indemana doar un modul folosit, in mod obisnuit, la afisajele alfanumerice LCD 1602 sau 2004.
Cautand pe internet, am gasit schema modulului la protosupplies.com:
din care se observa ca P3 nu este conectata direct, ci la comanda prin tranzistor a ledului de fundal, asa ca am testat pe un breadboard (2 de fapt) un mic montaj cu niste leduri
Am facut un test folosind informatiile din articolul 7-Segment LED Display PCF8574 I2C Arduino doar ca eu am conectat singurul afisaj led gasit, unul de 1.2" cu catod comun direct, inseriind ledurile cu rezistente de 470Ω tinand cont si de informatiile de aici
Pentru afisajul cu catod comun, ledurile se aprind cand pe iesirea PCF-ului sunt 5V (iesire in HIGH), asa ca am transformat informatia in numar hexazecimal, folosind un calculator online, pentru a putea transmite informatia cu Arduino:
Pentru afisaje cu anod comun, alimentat din +5V, ledurile din segmente inseriate cu rezistente de limitare curent se conecteaza la iesirile PCF-ului si se aprind cand iesire corespunzatoare sunt in 0V (iesire in LOW), iar informatia in hexazecimal este
Dupa cum se constata, am pus iesirea P3 mereu in LOW (0), deoarece nu am acces direct fara o interventie pe placuta si programelul meu de test, este countdown_test1.ino
Pentru a depista adresa i2c a intefetei cu PCF8574 am folosit programiorul numit i2c_scanner (puteti gasi mai multe informatii in articolul de pe arduino.cc), gasind adresa 0x27.
Am facut "punte" (strap) la A0 si acum adresa este 0x26.
si am modificat programul, acesta devenind, countdown_test2.ino in care se defineste adresa la inceput si apoi este ca variabila.
am achizitionat de la chinezi un pachet de 10 memorii 4164, doar ca erau ambalate intr-o punga de plastic, deci neprotejate ESD, asa ca am construit repede un tester cu Arduino, depistand una defecta.
Am folosit informatiile de la github.com/randyrossi/arduino_dram4164_tester ce foloseste 2 leduri, unul verde si unul rosu, in timpul testelor clipesc ambele, daca memoria e buna, la final clipeste lent ledul verde, daca memoria e defecta sau apar erori de citire ramane cel putin ledul rosu aprins,
Am revenit la ceasul google cu data si senzori, de data asta am inlocuit al doilea senzor DS18B20 cu un senzor AM2303 (care este un DHT22 cand are rezistenta de 4k7 incorporata pe placuta de cablaj).
Schema devine
si am considerat ca senzorul de temperatura si umiditate relativa aer este senzorul exterior, asa ca programul modificat, care contine 3 fisiere, este BIG_Clock_ESP8266_DeskClock1L
iar in programul Arduino IDE 1.8.19 (folosit de mine) arata asa
In prima faza, nu am avut montat sistemul de determinare al intensitatii luminoase (divizorul rezistiv realizat din fotorezistenta si rezistenta de 10kΩ) si am realizat 2 filmulete