Mi-am adus amite de ora de vara si ora de iarna, si am prevazut un comutator ce se pune pinul D6 (GPIO12) ori la masa/GND (nivel logic LOW) ori la 3,3V (nivel logic HIGH).
In unele versiuni testate anterior trecerea de a ora de vara la cea de iarna se facea din program, dar nu are rost sa complic treaba, mai ales ca e foarte posibil sa nu mai fie aplicata aceatsa ora de vra, apoi cea de iarna.
Selectia se face asa:
- ora de vara, se pune pinul D6 (GPIO12) la masa/GND (nivel logic LOW)
- ora de iarna, se pune pinul D6 (GPIO12) la 3,3V (nivel logic HIGH)
Programul modificat este NTPclock_sw.ino si cu el incarcat in placa cu ESP8266 am facut urmatoarele filmulete:
1) cu comentariu in romana
2) cu comentriu in engleza
19.02.2020
Am primit de la Mihai Brindusoiu, vechiul meu "tester" al proiectelor, poze cu ceasul realizat de el:
Din cauza unor probleme tehnice a trebuit sa lucrez pe un notebook slabut, dar care a fost de baza, pana am vrut sa compile si apoi sa incarc un sketch Arduino pe o placa WeMos D1 Mini si am primit eroarea;'Board d1_mini (platform esp8266, package esp8266) is unknown".
subdirectorul unde gasim acel director se afla din fereastra de "Preferences"
Dupa stergerea acestui director, inchiderea programului Arduino IDE si repornirea lui, apoi compilarea programului, vom obtine un rezultat corespunzator
In articolul anterior am pregatit programul pentru a putea impleemnta usor un modul RTC, asa ca acum am continuat "deszvoltarea" ceasului pe 2 module de 8x8 leduri.
Fata de ce am prezentat anterior, am adaugat modulul RTC cu DS3231 (dar poate fi folosit fara modificari si DS1307) doar se conecteaza pe i2c si alimentare, dupa cum apare si in sketch:
Programul adaptat, se numeste RTCclock.ino si reglajul orei se face astfel, se incarca vesiunea cu linia de reglaj activa (fara // in fata)
Am primit de Vlad Gheorghe versiunea lui pentru afisajele "verticale"
in care a regenerat toate numerele necesare. Programul este two-matrix-reg-rtc.ino, iar pentru o versiune animata se va folosi programul 2matrix-002.ino.
Pana acum am realizat ceasuri cu 4 sau 6 module din matrici de 8x8 leduri cu driver-e MAX7219, dar am zis sa fac si cu 2 matrici, cum am vazut la niste kit-uri din China.
Am cautat pe internet si nu am gasit pentru modelul acela de se fixeaza in continuare, unul in celalalt, ci doar pentru cele cu pini paraleli, dupa cum se vede in articolele:
- Arduino Cheap Minimal Parts Digital Clock
Dupa ce am incarcat programul din primul articol, ce folosesti libraria LedControl, am observat ca textul este rotit la 90 grade, dupa cum era de asteptat, asa ca am incercat sa fac mici schimbari, dar nu am reusit decat regenerand cifrele din nou, folosindu-ma de articolul Online led matrix font generator with binary and hex codes for Arduino, doar ca a trebuit sa fac fiecare cifra sau grup de cifre de la 1 la 12 pentru ore, cu secunde si fara, apoi cele 60 de numere (00-59) pentru minute. Cifrele le-am facut maxim posibile cu inaltime de 8 si latime de 3 pentru ca mai trebuie spatiu (deci 8x4 fiecare), trebuind generate in oglinda, pentru a nu ma chinui in soft, cu aceasta ocazie mi-am testat si abilitatile de "a vedea in oglinda".
Vedeti un exemplu in care este numarul 13 cu 2 puncte:
Urmeaza a face un ceas real, cu modul RTC cu DS3231 (sau cu mai imprecisul DS1307), o alta varianta ar fi cu o placa cu ESP8266 ce se conecteazala un server NTP.
Am aflat de tunerul cu TEF6686 de la Iulian, un radioamator din Craiova. El m-a rugat sa ii modific niste programe Arduino pentru a avea anumite informatii RDS pe PC si ulterior pe un afisaj LCD, pentru a realiza un radio independent. Versiunea comandata de pe PC este folosita mult de radioamatori pasionati de receptii DX, adica "prinderea" unui post indepartat.
Initial, voiam sa iau radioul lui si sa rescriu/modific programele care le avea, dar am preferat sa comand si eu un tuner pentru ca stau foarte prost cu timpul liber si l-as fi incurcat. Pana sa vina tunerul si apoi sa ma apuc eu de lucru, am aflat ca Iulian si prietenul lui, Florin Matei, au rezolvat cu partea de program Arduino pentru comanda de pe PC cu programul XDR-GTK
Dupa sosirea tunerului, am lipit fire cu terminale tata, deoarece pasul intre pini e de 2mm, nu 2,54mm cat e pe breadboard sau cablajele de test
si l-am conectat la o placa Arduino Uno sa ii aflu adresa pe i2c cu programul i2c scanner
M-am "concentrat" pe adaptarea programului de la https://github.com/makserge/tef6686_radio pentru a afisa informatiile pe un afisaj LCD. La indemana a fost un afisaj serial 2004 (cu caractere uriase), ce tocmai il testasem dupa cum se vede in articolele:
- Ceas RTC cu afisaj serial
Bun, deoarece tunerul se conecteaza pe i2c, iar afisajul pe un pin, schema a fost simpla:
si cu aceasta am testat 2 sketch-uri, radio_serialLCD2 ce are informatii radiotext lung si radio_serialLCD3a ce are si informatii PTY si PI, dar radiotextul prelucrat este mult mai scurt decat cel original.
Deoarece interfata seriala seriala nu este prea populara, am preferat sa trec la interfata i2c, asa ca am modificat schema, adaugand (pe parcurs) si butoane pentru a putea da si comenzi locale, nu numai din ecranul de monitorizare seriala sau PUTTY.
Ca si in cazul afisajului serial, am modificat 2 programe, unul cu radiotext lung si PTY, dar fara PI (TEF6686_1602i2c_v2x) si unul cu informatii PI si PTY (TEF6686_1602i2c_v3x), la final existand 6 butoane fizice (volum +/-, cautare autoamta +/-, crestere si scadere frecventa cu pas de 0,1MHz).
Pe parcursul testelor am realizat mai multe filmulete: