Monitor Oled
 
1️⃣ Collegamenti del Display OLED 0,96” I2C
Questo display utilizza solo 4 fili e si collega alla porta I2C di Arduino.
Ecco la corrispondenza dei pin:
Display OLED |
Arduino UNO/Nano |
VCC |
5V |
GND |
GND |
SCL |
A5 (SCL) |
SDA |
A4 (SDA) |

2️⃣ Installazione della Libreria per OLED
Per utilizzare il display, installiamo due librerie:
- Adafruit SSD1306 (gestisce il display OLED)
- Adafruit GFX (per disegnare testi e numeri)
📌 Passaggi per installarle:
- Apri Arduino IDE
- Vai su Strumenti→ Gestione librerie
- Cerca Adafruit SSD1306 ti chiederà se vuoi istallare anche le librerie dipendenti accetta
- Istallata
Semplice codice di test per il display OLED. Questo codice visualizzerà sullo schermo:
Ciao Silvano
Benvenuto
Tra noi
Codice: |

|
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define LARGHEZZA 128 // Larghezza del display OLED
#define ALTEZZA 64 // Altezza del display OLED
#define INDIRIZZO_I2C 0x3C // Indirizzo I2C standard per display OLED
// Inizializza il display OLED
Adafruit_SSD1306 display(LARGHEZZA, ALTEZZA, &Wire, -1);
void setup() {
Serial.begin(9600);
// Inizializza il display OLED
if (!display.begin(SSD1306_SWITCHCAPVCC, INDIRIZZO_I2C)) {
Serial.println(F("Errore OLED!"));
for (;;); // Blocca l'esecuzione in caso di errore
}
delay(1000); // Attendi 1 secondo per essere sicuri che il display sia pronto
// Impostazione contrasto (opzionale, ma utile per un display visibile)
display.ssd1306_command(SSD1306_SETCONTRAST);
display.ssd1306_command(0xFF); // Imposta il contrasto massimo
display.clearDisplay(); // Pulisce lo schermo
// Imposta la dimensione del testo
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE); // Imposta il colore bianco
// Scrive "Ciao Silvano"
display.setCursor(15, 0);
display.print("Silvano");
// Scrive "Benvenuto tra noi"
display.setCursor(5, 20);
display.print("Benvenuto");
display.setCursor(15, 40);
display.print("Tra Noi");
display.display(); // Aggiorna il display con il testo
}
void loop() {
// Il loop è vuoto perché questo è solo un test statico
} |
Il display OLED 0,96" I2C 128x64 Blue&Yellow ha due colori fissi:
- La parte superiore dello schermo (circa 1/3, 16-20 pixel) è GIALLO
- La parte inferiore (i restanti 2/3) è BLU o NERA (dipende dal modello)
Non è un vero display a colori, ma un OLED bicolore con una divisione fissa. Non puoi cambiare i colori a piacimento, perché sono determinati fisicamente dal pannello.
📌 Come gestire i colori?
Nel codice non puoi impostare direttamente "giallo" o "blu", perché la libreria Adafruit tratta tutto come bianco e nero:
- SSD1306_WHITE → scrive il testo accendendo i pixel (che appariranno gialli o blu in base alla posizione)
- SSD1306_BLACK → spegne i pixel (per cancellare il testo o creare sfondi neri)
Quindi, se vuoi sfruttare la parte gialla, devi posizionare il testo nei primi 16-20 pixel dell'altezza del display.
📌 Come scrivere nel settore giallo?
Se vuoi che "Ciao Silvano" sia giallo e "Benvenuto tra noi" sia blu/nero, nel codice devi fare così:
display.setCursor(10, 5); // Y = 5 → nella zona gialla
display.print("Ciao Silvano");
display.setCursor(10, 25); // Y = 25 → nella zona blu/nera
display.print("Benvenuto tra noi"); |
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Fonts/FreeSans9pt7b.h>
#define LARGHEZZA 128
#define ALTEZZA 64
Adafruit_SSD1306 display(LARGHEZZA, ALTEZZA, &Wire, -1);
void setup() {
Serial.begin(9600);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("Errore OLED!"));
for (;;);
}
display.clearDisplay();
// Usa il font grande
display.setFont(&FreeSans9pt7b);
display.setCursor(10, 20); // Posiziona il testo in alto
display.print("Silvano");
// Usa il font standard con dimensione 2
display.setFont(NULL);
display.setTextSize(2);
display.setCursor(10, 40);
display.print("Benvenuto");
display.display();
}
void loop() {} |
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Fonts/FreeSerif12pt7b.h> // Font più grande e elegante
display.setFont(&FreeSerif12pt7b); // Imposta il font |
Esempio pratico (Usare font grande e testo in due dimensioni)
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Fonts/FreeSans9pt7b.h>
#define LARGHEZZA 128
#define ALTEZZA 64
Adafruit_SSD1306 display(LARGHEZZA, ALTEZZA, &Wire, -1);
void setup() {
Serial.begin(9600);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("Errore OLED!"));
for (;;);
}
display.clearDisplay();
// Usa il font grande
display.setFont(&FreeSans9pt7b);
display.setCursor(10, 20); // Posiziona il testo in alto
display.print("Ciao Silvano");
// Usa il font standard con dimensione 2
display.setFont(NULL);
display.setTextSize(2);
display.setCursor(10, 40);
display.print("Benvenuto tra noi");
display.display();
}
void loop() {} |
✅ Risultato:
- "Ciao Silvano" sarà scritto con un font più elegante.
- "Benvenuto tra noi" sarà scritto con il font base ma più grande (x2).
La libreria <Fonts/FreeSans9pt7b.h> è già installata?
Sì! Se hai installato la libreria Adafruit GFX, questi font sono già inclusi e pronti all'uso.
📌 Controlla di avere la libreria Adafruit GFX installata:
- Apri Arduino IDE
- Vai su Strumenti > Gestione librerie
- Cerca "Adafruit GFX" e installala (se non lo è già)
Dopo aver installato Adafruit GFX, i font si trovano in:
📂 Arduino/libraries/Adafruit_GFX_Library/Fonts/
📌 Cosa significa display.setFont(&FreeSerif12pt7b);?
Questa riga imposta un font alternativo nel display OLED.
💡 Spiegazione:
- display.setFont(...) cambia il carattere di scrittura.
- &FreeSerif12pt7b è un puntatore a una tabella di font memorizzata nella libreria.
- 12pt significa che il font è di 12 punti (abbastanza grande).
- 7b indica che è un font bitmap a 7 bit (usato su display monocromatici).
📌 Vuoi un altro font?
Alcuni font inclusi nella libreria:
- FreeSans9pt7b → Pulito e leggibile
- FreeSerif12pt7b → Elegante, con grazie
- FreeMono9pt7b → Tipo macchina da scrivere
Per cambiare font, basta sostituire il nome:
display.setFont(&FreeSans9pt7b); // Imposta il font Sans
display.setFont(&FreeMono9pt7b); // Imposta il font Mono
display.setFont(NULL); // Torna al font predefinito |
|