XAN77 Postat Iulie 3, 2021 Partajează Postat Iulie 3, 2021 Lucrez la o aplicatie de ceas cu afișare pe un panel de 4 matrici 8x8 cu MAX7219, cel ce se găsește la chinezi. Afișez un string care conține temperatura și umiditatea și nu reușesc să inserez un caracter custom pentru gradul celsius. Folosesc bibliotecile Adafruit_GFX și Max72xxPanel. Link spre comentariu
cimitavita Postat Iulie 3, 2021 Partajează Postat Iulie 3, 2021 (editat) MAX7219 nu are caractere predefinite ca HD44780, decât pentru afișaje cu 7 segmente. Pentru matrici 8x8, toate caracterele sunt definite în librărie. Alege un caracter care nu îl folosești și îl modifici cum vrei direct în librărie. Editat Iulie 3, 2021 de cimitavita Link spre comentariu
XAN77 Postat Iulie 4, 2021 Autor Partajează Postat Iulie 4, 2021 da ideea e bună, dar n-am găsit unde să modific Link spre comentariu
va_cristi Postat Iulie 4, 2021 Partajează Postat Iulie 4, 2021 Salut! Incearca acest model: /* This code moves a dot over the 8x8 LED Display with 2 pot-meters for x- and y-position. */ #include "SPI.h" #include "Adafruit_GFX.h" #include "Max72xxPanel.h" const unsigned char smiley [] PROGMEM = { 0xC3,0xBD,0x5A,0x7E,0x5A,0x66,0xBD,0xC3, }; // init matrix int pinCS = 10; // Attach CS to this pin, // // DIN to MOSI - for UNO MOSI is pin 11 // // - for Mega MOSI is pin 51 // // CLK to SCK - for UNO SCK is pin 13 // // - for Mega SCK is pin 52 // (cf http://arduino.cc/en/Reference/SPI ) int numberOfHorizontalDisplays = 1; int numberOfVerticalDisplays = 1; Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays); /* const int row[8]={2,7,19,5,13,18,12,16}; // 2-dimensional array of row pin numbers: const int col[8]={6,11,10,3,17,4,8,9}; // 2-dimensional array of column pin numbers: */ int pixels[8][8]; // 2-dimensional array of pixels: void setup() { // Serial monitoring Serial.begin(9600); Serial.println("Hello world"); // Init led matrix matrix.setIntensity(2); // Set brightness between 0 and 15 // clean display matrix.fillScreen(LOW); } // end setup void loop() { matrix.drawBitmap(0, 0, smiley, 8, 8, 0, 1); matrix.write(); } // end loop Link spre comentariu
XAN77 Postat Iulie 10, 2021 Autor Partajează Postat Iulie 10, 2021 Așa am reușit și cu drawPixel, dar ceea ce vreau e să am un caracter pe care să-l pot folosi în string-uri. Practic am 2 moduri posibile de afișare: 1. bufferul ”video” este scris cu matrix.drawChar iar inainte de matrix.write pot face eu diverse modificări cu drawPixel etc. Afișarea se face plină direct, fără efecte de scrolling, defișări de text etc. 2.un mesaj text este trimis unei funcții display_message care îl introduce din dreapta spre stânga prin rulare pe display. Acest mod de afișare durează și ceva cam mult ca timp. Momentan folosesc doar modul 1 de afișare. Dar în eventualitatea în care anumite info aș vrea pe viitor să le afișez în modul 2, am nevoie să pot insera în acel mesaj text un caracter atipic. Link spre comentariu
Liviu M Postat Iulie 10, 2021 Partajează Postat Iulie 10, 2021 Pare "misiune imposibila" ce vrei tu. Fonturile folosite de Adafruit-GLX sunt generate din fonturile "normale" (ttf) de fontconvert. Default, fontconvert asta converteste de la ' ' la '~' (caracterele ASCII vizibile). Am incercat sa fac convertorul sa genereze si '°', da' fisierul rezultat e imens, nu cred ca-l poti folosi cu Arduino. Asa ca am generat numai caracterul '°', il gasesti in fisierul atasat. Incearca sa vezi daca poti sa afisezi caracterul respectiv. Daca da, mai sapam sa vedem daca-l putem "adauga" la sfarsitul unui fisier cu caracterele ASCII. Asa, ca informatie, caracterul e DejaVuSerif, 8 pixeli (?). GradCelsius.h Link spre comentariu
Liviu M Postat Iulie 10, 2021 Partajează Postat Iulie 10, 2021 (editat) Uite si un fisier complet, in care am lipit ° dupa ~.DejaVuSerif8pt7b.h LE Am gasit o virgula lipsa in fisier, asa ca l-am inlocuit cu cel corectat. Editat Iulie 10, 2021 de Liviu M Link spre comentariu
Bandi Szasz Postat Iulie 10, 2021 Partajează Postat Iulie 10, 2021 Pentru "Adafruit_GFX " cauta un editor de font (ttf) de exemplu FontForge. Descarci de pe net un font care iti place, il deschizi cu editorul de font si modifici un caracter de acolo care nu iti e de folos ( niste simboluri gen %,^,&, etc..) si iti faci caracterul propriu. Fisierul modificat de ttf il convertesti cu fontconverter cum zicea si Liviu M si il importi in proiect. Eu asa am facut pentru un display Epaper si mi-am facut un singur "font" care are toate caracterele pe care aveam nevoie inclusiv diacriticile. E putin mai dificil de scris textul dupa in cod pentru ca daca ai pus "ă" sa zicem pe locul lui "^" ca sa scrii "Măr" ar trebuii de fapt in cod sa ai "M^r". Link spre comentariu
Liviu M Postat Iulie 10, 2021 Partajează Postat Iulie 10, 2021 Am gasit o greseala in fisierul uploadat anterior, asa ca l-am schimbat cu unul bun. Cum fisierul fusese deja descarcat o data, pun si postul asta ca avertizare. Link spre comentariu
XAN77 Postat Iulie 11, 2021 Autor Partajează Postat Iulie 11, 2021 (editat) Acum 13 ore, Liviu M a spus: Uite si un fisier complet... am încercat să-l folosesc, am adăugat 2 linii în cod cu care s-a compilat fără erori: #include <Fonts\DejaVuSans8pt7b.h> aici i-am modificat eu numele că era diferit numele fișierului de al fontului matrix.setFont(&DejaVuSans8pt7b); Am făcut o probă cu codul așa ca să văd fontul, dar afișarea e aiurea, se aprind ledurile doar de pe primul rând de sus. Dacă ai adăugat un caracter în plus, și nu ai modificat unul existent, cum îl accesez/folosesc ? Mă scuzați dacă sunt bizon. Nu am spus platforma de lucru. Este vorba de un ceas fără RTC, cu ESP8266 (Nodemcu), care ia timpul de pe net și date de la un DHT22. Este și webserver unde pune datele de la DHT. Schimbarea softului se face din browser. Aceste lucruri sunt funcționale, ceasul îl folosesc în dormitor, doar cu fonturile nu mă pricep. https://postimg.cc/ftq0n1zJ Editat Iulie 11, 2021 de x_dadu Link spre comentariu
Liviu M Postat Iulie 11, 2021 Partajează Postat Iulie 11, 2021 Da, nu merge cum îmi imaginam. Când zici că se aprinde doar o linie, e la toate caracterele, sau doar la grad? Iar caracterul speram să-l poți accesa cu °, da' m-am mai gândit puțin și cred că n-are cum. Așa că nu rămâne decât varianta lui Bandi. Cum eu nu m-am prins cum se poate modifica un caracter, mă retrag din discuție cu scuzele de rigoare că te-am făcut să pierzi timpul. Link spre comentariu
Liviu M Postat Iulie 11, 2021 Partajează Postat Iulie 11, 2021 Tot eu. Fișierul cu un singur caracter l-ai testat? Că după părerea mea, ăla ar trebui să afișeze °. Chiar, tu ce set de caractere ai folosit în proiect? Link spre comentariu
XAN77 Postat Iulie 11, 2021 Autor Partajează Postat Iulie 11, 2021 Cu fontul tău erau afișate punctele de sus la toate caracterele. Fontul cu un singur carter nu l-am testat că nu știu cum să îl includ și cum să îl folosesc. Nu știu ce font este folosit, eu nu declar niciun font. Nu știu ce font folosește în mod default. Link spre comentariu
Liviu M Postat Iulie 11, 2021 Partajează Postat Iulie 11, 2021 Da, presupun ca am folosit dimensiunea "gresita" de caractere. Pentru ca ai matricea pe 8 "pixeli", am generat caracterele cu dimensiunea 8. Probabil conteaza si asta. Nu te mai chinui cu caracterul singur, e generat la fel, asa ca n-are cum sa mearga nici singur. Link spre comentariu
XAN77 Postat Iulie 11, 2021 Autor Partajează Postat Iulie 11, 2021 (editat) am încercat cu acest site https://oleddisplay.squix.ch/#/home am generat font cu Size=7 dar și cu 8. La library version am pus Adafruit_GFX. Fișierul rezultat l-am pus în folderul fonts al adafruit_gfx l-am inclus în proiectul meu și l-am ”activat”cu setFont. Nu afișează nici un caracter toate punctele sunt stinse. Este afișat doar gradul celsius desenat de mine cu drawPixel ce o fac înainte de a apela matrix.write(), dar caractere ioc. Ce greșesc ? Aici e sursa inițială de la care am plecat: https://www.hackster.io/FilippoOnesti/esp8266-clock-using-max7219-led-matrix-display-b036c7 Editat Iulie 11, 2021 de x_dadu Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum