Se afișează postările cu eticheta u8glib. Afișați toate postările
Se afișează postările cu eticheta u8glib. Afișați toate postările

marți, 24 iulie 2018

Ceas cu reglaj pe lcd Nokia

Inspirat de articolul lui Nicu Florica am adaptat codul lui pentru un display Nokia. Am renuntat la ceasul analogic pentru ca rezolutia acestuia este doar de 64x64, si am adaugat un DHT11 pentru afisarea temperaturii si umiditatii. In plus am adaugat si o fotorezistenta care controleaza lumina de fundal pentru a-l face vizibil si pe timp de noapte. Cod pe github.
Si in aceasta situatie am cautat sa-l fac cit mai vizibil. Celelalte functionalitati sint cele descrise de Nicu Florica pe blog, partea de reglaj fiind identica.


I-am facut si o alimentare de back-up cu un acumulator de tip 18650
Schema de legaturi se poate deduce foarte usor din codul publicat pe github.
Display-ul Nokia e conectat conform:
//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8);// SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8
In cazul meu: U8GLIB_PCD8544 u8g(8, 9, 12, 10, 11);
Senzorul DHT11 pe A0 si pe A2 fotorezistenta

duminică, 4 martie 2018

Ceas cu reglaj si termometru pe LCD "amber-gold" 128/64

Am gasit la chinezi un display mai ciudat dar interesant ca tip de afisare, pe care m-am hotarit sa-l aprind ca sa vad ce face. Aceste este denumit "AMBER GOLD" cu lumina de fundal aurie, cu o rezolutie de 128/64 si arata ca mai jos:

Lipsind documentatia la el am abuzat din nou de google si am descoperit ca are la baza chip-ul ST7565, si se poate aprinde cu ajutorul u8g2
Testele le puteti vedea mai jos cu un cod de test:

Am preluat apoi un proiect anterior dar fara succes pentru ca dimensiunea codului era prea mare pentru arduino uno (mini in cazul meu). Astfel am inceput sa teste cu vechiul u8glib la diverse display-uri suportate si asa am ajuns la :

U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8);// SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Rst = 8

In cod am adaugat linia de mai sus si am comentat-o pe cea veche care era pentru ST7920, am  mai redefinit pinii pentru senzorul de temperatura si butoanele de reglaj.
Desi codul este pentru DS1307, merge foarte bine si cu DS3231 pe care l-am folosit la teste.
Pe github am ridicat si arhiva bibliotecilor folosite.
Rezultatul se poate vedea mai jos, nimic spectaculos fata de ST7920, doar ca e auriu fundalul.
 Desi dimeniunea utila este de 4/2 cm reuseste sa fie suficient de vizibil si pentru ochii mei fara ochelari
 In modul reglaj datele apar afisate imediat dupa denumirea zilei
 Afisarea fara LED-ul de fundal


joi, 31 august 2017

Ceas pe LCD ST7920 CU REGLAJ

Am pornit de la articolul de aici unde mi-a placut realizarea acestuia. Initial am testat codul omului, a functionat insa cercul in realitate arata rau de tot, mai ales daca e privit de aproape, asa ca am renuntat la el. Asta datorita rezolutiei ecranului.
Ulterior m-am hotarit sa fac un ceas mai serios cu cifre cit mai mari si reglaj manual ca sa nu depind de calculator la trecerile ora vara/iarna, eventual alarma daca mai raminea memorie disponibila, si din pacate nu a mai ramas.
Pentru display este folosita o biblioteca U8glib cu care m-am "imprietenit" mai greu (pe link este cea folosita de mine.).
Modul de conectare al display-ului la arduino este descris cu foarte multe detalii de Nicu Florica la el pe blog , si nu voi repeta aici.
I-am adaugat un DS1307, un DS18B20 si trei butoane :
#define meniu 9 
#define minus 10
#define plus 11 
#define ONE_WIRE_BUS 8
La scrierea codului m-am inspirat de aici pentru ca foloseste tot U8GLIB si a iesit ca mai jos:
Am marit atit cit a fost posibil fontul orei iar restul informatiilor le-am incadrat la dimensiunea maxima acceptata de rezolutia ecranului.

 Aici se poate vedea modul de reglaj imediat dupa Duminica  . Am vrut sa sterg ecranul in modul reglaj insa codul depasea marimea maxima a lui Arduino micro (pe asta l-am folosit spre final), si astfel singurul loc liber era cel imediat dupa afisarea zilei.
La rutina de reglaj m-am inspirat tot de la Nicu, ca mi s-a parut foarte simpla de implementat.

(Sketch uses 29814 bytes (97%) of program storage space. Maximum is 30720 bytes.)



Codul final si bibliotecile folosite sint aici:
Consumul este sub 100mA


 Modelul de senzor e temporar pina soseste unul in capsula TO-92
update:34-iul-2018
Dupa varianta lui Nicu realizata cu encoder, am adaptat codul pentru 3 butoane (nu am avut disponibil nici un encoder):
Functionalitatile in mare au ramas cele descrise de Nicu Florica pe blog-ul lui.
Codul pentru poza din stinga este pe github iar pentru cel din dreapta tot pe github. La varianta din dreapta am corectat afisarea secundelor analogice pentru ca era o mica abatere fata de cele numerice.
In plus fata de ce a testat Nicu Florica am adaugat un senzor DS18B20. Fonturile utilizate ocupa foarte multa memorie si am incercat sa fac un compromis pentru o afisare cit mai vizibila.

update 11-aug-2019
A sosit zilele astea display-ul de mai jos pe care am facut citeva teste:


Pentru a functiona a trebuit sa fac upgrade la u8glib, iar driverul a functionat cu:
U8GLIB_DOGM128 u8g(8, 9, 5, 7); // SPI Com: SCK , MOSI, CS, A0
RST-ul LCD-ului l-am legat la pinul reset al lui arduino.
Neajunsul este ca are un offset pe x de -4 puncte.
Codul de test aferent pozelor de mai jos este pe github.
Ecran luminat
Neajunsul cu offset-ul se poate distine usor in partea dreapta unde aprinde pixeli in mod aleatoriu. Mai exact, zona de lucru este de la 4(x=0) la 124, diferenta de 4 pixeli apare aleatoriu in dreapta la pornirea tensiunii de alimentare
Fara lumina de fundal
O alta clona modificata, cod pe github
Update: 22-ian-2022
Cam acelasi cod dar de data asta cu arduino mega si un display 240x64 DG24064 cu T6963




Legaturile se deduc foarte usor din codul postat pe github pentru prima varianta si tot pe github si pentru a doua.

Amplificator ultra simplu cu MOS 40W/8Ohm la 2x30V

 Am început construcția unui amplificator cu tranzistori MOS după o schemă proiectată de Ionel Epure , care se împacă foarte bine cu boxele ...