Display monocromo OLED 64x32 con interfaccia I2C

Ultimo aggiornamento 28 aprile 2019


 

Indice

Descrizione

Questo display monocromo OLED commercializzato dalla ICStation con il codice 10786, presenta una diagonale di 0,49", ma è molto leggibile data dall'alto contrasto di un display OLED (Datasheet)

homotix

PCBONLINE

 

Il display presenta 64x32 singoli pixel bianchi OLED, ciascuno è acceso o spento dal chip controller, in questo caso non è richiesta alcuna retroilluminazione e questo riduce l'assorbimento di potenza necessaria.
L'integrato pilota è il modello SSD1306 che è un single-chip CMOS driver  per display tipo OLED / PLED ( Organic Light Emitting Diode, Polymer light-emitting diodes).
L'integrato comunica tramite il protocollo I2C, sono necessari solo 2 pin, linea dati / clock.
Il display OLED deve essere alimentato con una tensione VCC di +5V, il regolatore U2 tipo LM6206N3 si occuperà di ridurla al valore di 3,3V massima tensione di funzionamento dell'integrato U1.
Per l'utilizzo è necessario un microcontrollore con più di 512 byte di RAM in quanto il display deve essere tamponata.
È disponibile per Arduino l'apposita libreria, questa permette di stampare testo, bitmap , pixel , rettangoli, cerchi e linee . Esso utilizza 512 byte di RAM in quanto ha bisogno di tamponare l'intero schermo ma è molto veloce! Il codice è semplice da adattarsi a qualsiasi altro microcontrollore .

LM6206N3 Low Dropout CMOS Voltage Regulators

Piedinatura Datasheet Foto dell'integrato

Caratteristiche

Dimensioni:  
PCB : 15 x 16 mm
Area di visualizzazione : ~ 6 x 12mm
Spessore : 4mm
Alimentazione 3.0-5.5V
Dettagli del display:  
Diagonale del monitor : 0.49 "
Numero di pixel : 64 × 32
Profondità colore : Monocromatico (Bianco-Blu)
Modulo di costruzione : COG
Interfaccia: I2C (High Level 2.2V-5.5V)
Indirizzo I2C: 7 bit 0x3

Librerie per Arduino

Per utilizzare il display OLED è necessario installare le librerie Adafruit SSD1306, in questo caso opportunamente modificate per adattarsi alla ridotta risoluzione.
Per cui occorre scaricare la libreria di supporto presente su GitHub, oppure fare clic su questo link per scaricare il file zip.
Per il giusto funzionamento del display, occorrerà modificare o verificare che all’interno del file Adafruit_SSD1306.h della libreria, la linea che definisce la dimensione del display che l'unica linea senza commento sia quella
#define SSD1306_64_32

// #define SSD1306_128_64
// #define SSD1306_128_32
// #define SSD1306_96_16
#define SSD1306_64_32

per gestire la parte grafica del modulo occorre inoltre scaricare le librerie grafiche Adafruit-GFX-Library presenti su  GitHub, oppure fare clic su questo link per scaricare il file zip.

Test base di utilizzo

Per verificare il display, utilizzeremo una scheda Arduino Nano, e tramite alcuni cavi colorati lo collegheremo il display. Il programma è testato con versione IDE 1.8.5.


sketch test_base_nano.ino

/*
  test_base_nano.ino
  Lo sketch mostra alcuni testi di prova sul display OLED collegato
  tramite I2C.

  Sono utilizzati i seguenti pin
  Pin +5V  -> Alimentazione display
  Pin GND  -> GND display
  Pin A4   -> SDA modulo I2C LCD
  Pin A5   -> SCL modulo I2C LCD

  Creato il 30/04/2018 da Adriano Gandolfo
  Sito web http://www.adrirobot.it
  Blog http://it.emcelettronica.com/author/adrirobot
  Pagina Facebook https://www.facebook.com/Adrirobot-318949048122955
  Istagram https://www.instagram.com/adrirobot/
  This example code is in the public domain.
*/

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define OLED_RESET 0  // GPIO0
Adafruit_SSD1306 display(OLED_RESET);


void setup()
{
  // Impostazione modulo display con indirizzo I2C addr 0x3C
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  // Cancellazione schermo e buffer
}

void loop()
{
  display.clearDisplay();
  // Messaggio iniziale
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.println(" ADRIROBOT");
  display.setTextColor(BLACK, WHITE); // Inverte il colore del testo
  display.println("   TEST   ");
  display.println("  DISPLAY ");
  display.println("1234567891");
  display.display();
  delay(5000);
  display.clearDisplay();
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.print("Value");
  display.setCursor(0, 18);
  display.println("12345");
  display.display();
  delay(5000);
}

Esempio di utilizzo

In questo caso il display è stato utilizzato per realizzare un Meter shield per Wemos D1 mini, lo shield una volta collegato alla scheda Wemos D1 Mini o Wemos Pro permette di visualizzare sul display OLED la misura delle distanza in cm che separa il sensore dall'oggetto posto frontalmente al sensore.

 

Elenco revisioni:
28/04/2019 Aggiornato pagina
30/04/2018 Emissione preliminare