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:

  1. Adafruit SSD1306 (gestisce il display OLED)
  2. Adafruit GFX (per disegnare testi e numeri)

📌 Passaggi per installarle:

  • Apri Arduino IDE
  • Vai su StrumentiGestione 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

 

 

display.setFont(NULL);

 

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:

  1. Apri Arduino IDE
  2. Vai su Strumenti > Gestione librerie
  3. 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