Display piccolo

Salve sono alla ricerca di un display di dimensioni contenute , ho visti gli lcd non conosco la sigla ma sono quadrati e mi pare ic2
Io no ho bisogno di una cosa cosi , ma sono i più piccoli che ho trovato
Voi che mi consigliate ?
Mi basterebbe un 16x2 ma le dimensioni sono enormi
Gli lcd quelli che ho visto quadrati (non conosco la sigla ) sono difficili da usare a livello software ?
Grazie

Scusa, senza offesa, ma se non metti foto o link degli lcd che citi, come facciamo a sapere di che parli ?
Gli lcd 16x2 sono sono testuali, con un modulino diventano I2C.
Gli lcd grafici da 0,96 pollici usano di solito una libreria di Adafruit ssd1306, se fai riferimento a quello.

Cerca gli oled 128x32 o 128x64...

Ciao

Ho preso quei display , sapete quale libreria funziona , prima che diventi matto
Grazie

Ce ne sono almeno due: u8glib e quella di Adafruit. Io mi trovo bene con la prima, tra l'altro è appena uscita la versione 2 ma non l'ho ancora provata.

Anche io uso la u8glib. Reputo però la adafruit più immediata, ma temo che senza il pin reset, la libreria di adafruit non si possa usare.
Ciao

informazioni per chi ci sta sbattendo la testa
ho risolto cosi
sto usando la libreria che h trovato dentro ide di Arduino

#include <U8g2lib.h>

per far funzionare in ic2 con quattro fili
va abilitata una di queste due righe

//U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ 9, /* data=*/ 10, /* reset=*/ 8);
//U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);   // All Boards without Reset of the Display

e poi se si abilita la prima si devono usare i pin 9 e 10 (o cambiarli)
e poi settari anche qui

 /* U8g2 Project: SSD1306 Test Board */
 // pinMode(10, OUTPUT);
 // pinMode(9, OUTPUT);
  //digitalWrite(10, 0);
 // digitalWrite(9, 0);

per la seconda riga basta usare i pin standard SCL SDA

Quella è appunto la nuova versione 2 della u8glib, uscita da poco, che citavo. Ti consiglio di usare il costruttore:

U8G2_SSD1306_128X64_NONAME_1_HW_I2C

Nota che c'è HW al posto di SW: questo implica l'utilizzo dell'i2c hardware, più veloce ed affidabile. Dovrai quindi collegare il display ai pin SDA e SCL.

non la trovo :frowning:

Aggiungilo :). Prende solo un parametro, nel tuo caso U8G2_R0, a meno che tu non voglia ruotare il display.

Praticamente aggiungo la tua riga e i parametri miei
.. comunque funziona .... lo cercavo piccolo ma non me so regolato :slight_smile:
Adesso mi devo studiare le funzioni della libreria

Per passare le variabili che non sono caratteri ho dovuto usare il .print()
E anche le dimensioni dei caratteri devo cercarne qualcuna leggibile

Grazie

U8G2_SSD1306_128X64_NONAME_1_HW_I2C (U8G2_R0);

Funziona anche come hai fatto tu, ma così funziona "meglio".

Sukko, percaso hai avuto modo di constatare se la seconda versione della u8glib è più parca di risorse?
Grazie

No, ma presumo di sì. Fermo restando che comunque a me la u8glib già consuma meno della libreria di Adafruit!

Ok allora sa da provare....
Grazie

Allora son passato dalla versione 1 alla 2 della u8glib e il compilatore mi mostra un risparmio, a vantaggio della 2° versione di 2 punti %.

Ciao

Ho un dubbio, volendo pilotare un oled 128x32 con drive ssd 1306 attraverso la nuova U8g2lib.h se utilizzo questa linea:

U8G2_SSD1306_128X32_UNIVISION_1_HW_I2C u8g2(U8G2_R0);

noto che a differenza di quanto accadeva con la prima versione della u8glib (a parità di sketch), all'avvio di Arduino, l'oded impiega parecchi secondi per accendersi.

Mentre volendo usare quest'altra linea:

U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R0);

se provo a compilare, l'ide mi dice che:

Lo sketch usa 27.140 byte (84%) dello spazio disponibile per i programmi. Il massimo è 32.256 byte.
Le variabili globali usano 1.997 byte (97%) di memoria dinamica, lasciando altri 51 byte liberi per le variabili locali. Il massimo è 2.048 byte.
Poca memoria disponibile, potrebbero presentarsi problemi di stabilità

Notare il 97& di memoria dinamica usata contro il 53% se si usa la prima riga.

Inoltre ho un'altro dubbio: ma assieme alla U8g2lib.h bisogna inserire anche la Arduino.h, no perchè nell'esempio viene usata. Il mio oled funziona anche senza.

Ciao

Il costruttore con 1 dovrebbe essere come sulla vecchia u8glib, che alloca memoria per bufferizzare 1/4 del display. C'è anche la versione con 2 che ne bufferizza metà e quella con F, che lo bufferizza tutto (Full). Ovviamente, più bufferizzi più RAM usi, ma più rapidi saranno gli aggiornamenti. Su una Uno dubito abbia senso qualunque cosa che non sia 1, gli altri costruttori sono per altre MCU con più risorse, tipo una Mega, o magari anche un ESP.

Comunque questo non dovrebbe influire più di tanto sul tempo di accensione, però la libreria credo sia praticamente stata riscritta da capo, per cui avrà cambiato parecchie cose. È un problema attendere qualche secondo?

Arduino.h dovrebbe essere incluso di default in tutti i file .ino, in ogni caso se non hai errori non serve includerlo.

Io non ho ancora fatto test con la versione nuova.

Grazie sto provando con buffer 2 ed in effetti il passaggio tra una pagina e l'altra è più rapido. La prima accensione resta un tantino lenta. Nulla di grave ma quando accendi il quadro dello scooter è bello avere un feedback immediato. Tutto qui. Forse torno indietro alla vecchia versione, ci penso ancora un attimo.

Grazie

Qualcuno sa come poter stampare tramite u8g2 un'icona in verticale di una batteria semi scarica?