Dopo svariati tentativi con diverse librerie attualmente mi sto trovando molto bene con U8glib.
Ha decisamente una buona compatibilità su un buon numero di tipologie di questi oled per Micro.
Numerosi comandi per grafica anche personalizzabile e un impressionante numero di font.
Ovviamente la grafica è pesante per la memoria limitata di alcuni Micro e ci si deve limitare ad uno o due font al massimo.
https://github.com/olikraus/u8g2
https://github.com/olikraus/u8glib/wiki/userreference
https://github.com/olikraus/u8g2/wiki/fntlistallplain
Tutorial italiano
https://m.youtube.com/watch?v=vYA6n8j5rYE
Ciao
Gestione display OLED
0
voti
Avevo provato anche la u8glib, ma era troppo pesante ed occupava un sacco di spazio (non parliamo poi del "mattone" Adafruit, che da solo, includendolo, mi portava via quasi il 90% dello spazio di memoria)
Dipende tutto da quello che poi ci vuoi effettivamente disegnare sopra, se con la u8glib ti avanza abbastanza spazio, usa quella, se invece non ti avanza abbastanza spazio per il programma (ma solo se NON ti serve la grafica, ma solo il testo), usa l'altra.
Purtroppo il 328P (o PB) piu di tanta flash non ha, se il programma e' troppo lungo e ti serve per forza anche la grafica, tocca andare su altre MCU, magari in standalone (la sola MCU e qualche condensatore se ti bastano gli 8MHz dell'oscillatore interno, oppure aggiungi un quarzettino da 16MHz e due condensatorini da 12 o 14 pF, se devi per forza usare i 16MHz) ... ad esempio, Atmega1284P , 128K di flash, 16 di sram interna e 4 di eeprom, e c'e' perfino in PDIP da 40pin.
Dipende tutto da quello che poi ci vuoi effettivamente disegnare sopra, se con la u8glib ti avanza abbastanza spazio, usa quella, se invece non ti avanza abbastanza spazio per il programma (ma solo se NON ti serve la grafica, ma solo il testo), usa l'altra.
Purtroppo il 328P (o PB) piu di tanta flash non ha, se il programma e' troppo lungo e ti serve per forza anche la grafica, tocca andare su altre MCU, magari in standalone (la sola MCU e qualche condensatore se ti bastano gli 8MHz dell'oscillatore interno, oppure aggiungi un quarzettino da 16MHz e due condensatorini da 12 o 14 pF, se devi per forza usare i 16MHz) ... ad esempio, Atmega1284P , 128K di flash, 16 di sram interna e 4 di eeprom, e c'e' perfino in PDIP da 40pin.
"Sopravvivere" e' attualmente l'unico lusso che la maggior parte dei Cittadini italiani,
sia pure a costo di enormi sacrifici, riesce ancora a permettersi.
sia pure a costo di enormi sacrifici, riesce ancora a permettersi.
-

Etemenanki
9.507 3 6 10 - Master

- Messaggi: 5940
- Iscritto il: 2 apr 2021, 23:42
- Località: Dalle parti di un grande lago ... :)
0
voti
Mi sono dimenticato di dire che nella risoluzione del Display che dovrebbe essere 128x64 ho dovuto mettere 128x32 per far funzionare il programma Può essere questo l'inghippo?
Se metto 128x64 il display non si accende.
Qui sotto inserisco la parte iniziale di uno sketch che funziona con lo stesso display
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#define OLED_ADDR 0x3C //verificare che sia corretto per il proprio modello
#define SCREEN_WIDTH 128 // Larghezza del display OLED in pixels
#define SCREEN_HEIGHT 64 // Altezza del display OLED in pixels
// Creiamo istanza del display connesso tramite I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT);
void setup() {
display.begin( SSD1306_SWITCHCAPVCC, OLED_ADDR);
// Avviamo il display pronto a ricevere le informazioni da visualizzare
delay(2000); // Pausa di 2 secondi
Se metto 128x64 il display non si accende.
Qui sotto inserisco la parte iniziale di uno sketch che funziona con lo stesso display
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#define OLED_ADDR 0x3C //verificare che sia corretto per il proprio modello
#define SCREEN_WIDTH 128 // Larghezza del display OLED in pixels
#define SCREEN_HEIGHT 64 // Altezza del display OLED in pixels
// Creiamo istanza del display connesso tramite I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT);
void setup() {
display.begin( SSD1306_SWITCHCAPVCC, OLED_ADDR);
// Avviamo il display pronto a ricevere le informazioni da visualizzare
delay(2000); // Pausa di 2 secondi
0
voti
Il fatto che su un programma funzioni con 64 e con l'altro no, e' un po sospetto, puoi usare direttamente le risoluzioni invece che i "define" ? ... cioe' al posto di :
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT);
Fai piu semplicemente:
Adafruit_SSD1306 display(128, 64);
Inoltre senza anche tutto il resto del TUO programma (quello che non funziona correttamente), come facciamo a capire se c'e' qualche altra cosa che interferisce o cambia qualche parametro al volo ?
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT);
Fai piu semplicemente:
Adafruit_SSD1306 display(128, 64);
Inoltre senza anche tutto il resto del TUO programma (quello che non funziona correttamente), come facciamo a capire se c'e' qualche altra cosa che interferisce o cambia qualche parametro al volo ?
"Sopravvivere" e' attualmente l'unico lusso che la maggior parte dei Cittadini italiani,
sia pure a costo di enormi sacrifici, riesce ancora a permettersi.
sia pure a costo di enormi sacrifici, riesce ancora a permettersi.
-

Etemenanki
9.507 3 6 10 - Master

- Messaggi: 5940
- Iscritto il: 2 apr 2021, 23:42
- Località: Dalle parti di un grande lago ... :)
0
voti
Se posso esprimere i miei dubbi la libreria che stai utilizzando ha dei problemi.
Il display in foto non è 128x32.
Io proverei a cambiere libreria.
Ce ne sono diverse sicuramente più funzionali.
Anche nel tutorial che ti ho allegato nel messaggio precedente si accenna a problemi di compatibilità simili ai tuoi.
Anche io l'avevo utilizzata inizialmente ma avevo riscontrato qualche pecca.
In più è leggermente più macchinosa e sicuramente meno ricca di opzioni.
Ciao
Il display in foto non è 128x32.
Io proverei a cambiere libreria.
Ce ne sono diverse sicuramente più funzionali.
Anche nel tutorial che ti ho allegato nel messaggio precedente si accenna a problemi di compatibilità simili ai tuoi.
Anche io l'avevo utilizzata inizialmente ma avevo riscontrato qualche pecca.
In più è leggermente più macchinosa e sicuramente meno ricca di opzioni.
Ciao
600 Elettra
1
voti
Chiedo scusa per la mia disattenzione.
Non mi ero accorto che per leggere le nuove risposte dovevo cambiare pagina e quindi non avevo letto le vostre risposte.
Abbiate pazienza. i miei 82 anni non mi aiutano ad essere più sveglio.
Non mi ero accorto che per leggere le nuove risposte dovevo cambiare pagina e quindi non avevo letto le vostre risposte.
Abbiate pazienza. i miei 82 anni non mi aiutano ad essere più sveglio.
0
voti
Ho letto su di un forum americano che diversi utenti si lamentavano dello stesso mio problema. Anche loro dovevano impostare il display con un 128x32 ma ottenevano un mal funzionamento dei caratteri presentati sul display.
Quello che più mi preoccupa è che nessuno dava una soluzione al problema.
Il fatto strano (per me) è che impostando un 128x64 , il compilatore non mi da errore e carica il programma su Arduino. Alla fine del caricamento il display rimane nero.
Non so se servirà a qualcosa ma proverò ad utilizzare un display SH1106.
Quello che più mi preoccupa è che nessuno dava una soluzione al problema.
Il fatto strano (per me) è che impostando un 128x64 , il compilatore non mi da errore e carica il programma su Arduino. Alla fine del caricamento il display rimane nero.
Non so se servirà a qualcosa ma proverò ad utilizzare un display SH1106.
0
voti
Attenzione ad una cosa ... la quasi totalita' dei display da 1.3 pollici OLED che trovi in giro (come quello della tua immagine, solo un po piu grande), montano apparentemente un SH1106 (quindi vanno inizializzati con il costruttore dell'SH1106), ma per qualche misteriosa ragione, rispondono all'indirizzo I2C del SSD1306 (il che e' assurdo, lo so, dato che i due datasheet riportano due diversi indirizzi, ma ci sono passato, ore a bestemmiare cercando di capire perche' non funzionavano come dovevano, per poi scoprire con lo scanner I2C che anche se erano SH, avevano l'indirizzo del SSD)
Giusto per il caso che provando con l'indirizzo dichiarato per il SH, il tuo display non funzioni
Giusto per il caso che provando con l'indirizzo dichiarato per il SH, il tuo display non funzioni
"Sopravvivere" e' attualmente l'unico lusso che la maggior parte dei Cittadini italiani,
sia pure a costo di enormi sacrifici, riesce ancora a permettersi.
sia pure a costo di enormi sacrifici, riesce ancora a permettersi.
-

Etemenanki
9.507 3 6 10 - Master

- Messaggi: 5940
- Iscritto il: 2 apr 2021, 23:42
- Località: Dalle parti di un grande lago ... :)
Chi c’è in linea
Visitano il forum: Nessuno e 3 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)




