De-a lungul timpului, am tot cochetat cu ideea folosirii pe diorama a unor display-uri digitale ce se doreau a fi "panouri publicitare la scara". Chiar daca modulele alfanumerice folosite (de obicei 1602 - cu 2 randuri a 16 caractere) ofereau o buna lizibilitate a mesajelor afisate, erau totusi departe de realitatea la scara 1:1.
De ceva vreme au aparut insa mini-displayuri gandite parca anume pentru noi: module OLED cu diagonala de 0.96 inch, care s-ar traduce la scara ca "plasme de 2,12m", deci numai bune pentru, de exemplu, tabelele electronice din garile dioramelor!
Afisajele sunt grafice, nu alfanumerice, au o rezolutie de 128x64 pixeli, si sunt in general gandite pentru a fi folosite cu microcontrolere AVR mai potente pe platforme gen Arduino, care permit afisarea unor imagini grafice simple sau fonturi de diferite marimi.
Nu am vrut insa nimic "fancy", doar afisarea unor tabele de tip text, cu font cat mai mic dar clar si eventual ceva animatie care sa fie vizibila de la oarecare distanta. Ma intrebam daca as putea folosi controlere mai simplute gen PIC, pentru a mentine schema si intregul circuit cat mai "suple". Iata ce a iesit:



Schema este simpla, cu doar cateva componente si microcontrolerul PIC 16F648A, cu o memorie program de 4k. Ma intrebam daca o sa fie suficienta; a trebuit sa creez de la zero biblioteca de functii pentru comanda display-ului, precum si sa definesc fontul necesar afisarii mesajelor. Impreuna cu o tabela de 20 linii de text au ocupat in total 1.8k din cei 4. Exista asadar si potential pentru dezvoltare...



Caracterele au fost create dupa fontul folosit de afisajele 1602 si sunt definite intr-o matrice de 6x8 pixeli ce include o coloana de spatiu intre caractere. Incap astfel 21 caractere pe rand (21x6=126 din 128) si 8 randuri pe ecran. Din cei 2 pixeli ramasi ("0") unul este afisat inainte si unul dupa text, pentru centrarea mesajului pe display.
Tehnologia OLED vine cu avantajele sale: unghi larg de vizualizare, contrast ridicat, dar si cu dezavantaje legate de uzura neuniforma a pixelilor in functie de gradul de utilizare. Am implementat asadar o rutina de scroll vertical pentru a evita pe cat posibil "pixel burn-in".



Orarul trenurilor a fost inspirat de poze gasite pe net; codurile lor sunt insa relative, incercand sa ma incadrez in limita a 5 caractere.
[img=https://www.youtube.com/watch?v=w8zeNcpIB1w&ab_channel=dacrail]View: https://www.youtube.com/watch?v=w8zeNcpIB1w&ab_channel=dacrail[/img]
(flicker-ul din inregistrare nu se vede in realitate; este cauzat de framerate-ul display-ului: 103 fps)
De ceva vreme au aparut insa mini-displayuri gandite parca anume pentru noi: module OLED cu diagonala de 0.96 inch, care s-ar traduce la scara ca "plasme de 2,12m", deci numai bune pentru, de exemplu, tabelele electronice din garile dioramelor!
Afisajele sunt grafice, nu alfanumerice, au o rezolutie de 128x64 pixeli, si sunt in general gandite pentru a fi folosite cu microcontrolere AVR mai potente pe platforme gen Arduino, care permit afisarea unor imagini grafice simple sau fonturi de diferite marimi.
Nu am vrut insa nimic "fancy", doar afisarea unor tabele de tip text, cu font cat mai mic dar clar si eventual ceva animatie care sa fie vizibila de la oarecare distanta. Ma intrebam daca as putea folosi controlere mai simplute gen PIC, pentru a mentine schema si intregul circuit cat mai "suple". Iata ce a iesit:



Schema este simpla, cu doar cateva componente si microcontrolerul PIC 16F648A, cu o memorie program de 4k. Ma intrebam daca o sa fie suficienta; a trebuit sa creez de la zero biblioteca de functii pentru comanda display-ului, precum si sa definesc fontul necesar afisarii mesajelor. Impreuna cu o tabela de 20 linii de text au ocupat in total 1.8k din cei 4. Exista asadar si potential pentru dezvoltare...



Caracterele au fost create dupa fontul folosit de afisajele 1602 si sunt definite intr-o matrice de 6x8 pixeli ce include o coloana de spatiu intre caractere. Incap astfel 21 caractere pe rand (21x6=126 din 128) si 8 randuri pe ecran. Din cei 2 pixeli ramasi ("0") unul este afisat inainte si unul dupa text, pentru centrarea mesajului pe display.
Tehnologia OLED vine cu avantajele sale: unghi larg de vizualizare, contrast ridicat, dar si cu dezavantaje legate de uzura neuniforma a pixelilor in functie de gradul de utilizare. Am implementat asadar o rutina de scroll vertical pentru a evita pe cat posibil "pixel burn-in".



Orarul trenurilor a fost inspirat de poze gasite pe net; codurile lor sunt insa relative, incercand sa ma incadrez in limita a 5 caractere.
[img=https://www.youtube.com/watch?v=w8zeNcpIB1w&ab_channel=dacrail]View: https://www.youtube.com/watch?v=w8zeNcpIB1w&ab_channel=dacrail[/img]
(flicker-ul din inregistrare nu se vede in realitate; este cauzat de framerate-ul display-ului: 103 fps)