Display 65k Colori OLED 96x64
interfaccia SPI

Ultimo aggiornamento 22 luglio 2018


 

Indice

 

Descrizione

Questo display OLED da 0.95"risoluzione 96x64 pixel, 65536 Colori è basato sul driver SSD1331 ed è dotato di interfaccia di comando SPI, può essere alimentato con una tensione compresa tra i 3.3V - 5V.

Datasheet del display

NOTA: è disponibile una versione aggiornata della pagina a questo link

Il modulo è disponibile presso il sito

 

homotix

PCBA

 
 

Caratteristiche

Risoluzione: 96*64
Colori: 65536 Colori
Driver IC: SSD1331
Tensione di alimentazione: 3.3 V-5 V
Definizione di SPI Connettore: 1. GND-Gound
2. VCC-Tensione Positiva
3. SCL-Linea di Clock
4. SDA-Linea Dati
5. RES-Reset
6. DC-Dati/Richiesta
7. CS-Chip Select

Schema elettrico

Il circuito del display utilizza oltre al display U1 con il driver tipo driver SSD1331, il circuito di alimentazione è formato dal regolatore U2 tipo LM6206N3 e il Boost converter U3 tipo LM2733, che eleva la tensione sino al valore di 14V.

LM6206N3 Low Dropout CMOS Voltage Regulators

Piedinatura Datasheet Foto dell'integrato

LM2733 Boost Converter

Piedinatura Datasheet Foto dell'integrato

Piedinatura

GND  Power ground
VCC  2.8-5.5V power supply
SCL (SCLK)  Serial Clock (emesso dal master)
SDA (MOSI)  Serial Data Output, Master Output Slave Input (uscita dal master)
RES  Reset
DC  Data / command
CS Chip Select, Slave Select, emesso dal master per scegliere con quale dispositivo slave vuole comunicare

Connessioni interfaccia SPI

La seguente tabella mostra su quali pin le linee SPI sono scomposte sulle diverse schede Arduino:

Scheda SCL (SCK) SDA (MOSI) RES DC CS Livello
Uno 13 o ICSP-3 11 o ICSP-4 9 8 10 5V
Nano 13 o ICSP-3 11 o ICSP-4 9 8 10 5V
Mega1280 or Mega2560 52 o ICSP-3 51 o ICSP-4 9 8 10 5V
Due

ICSP-3

ICSP-4 9 8 10 3,3V
Wemos d1 mini            

Si noti che SCK e MOSI sono disponibili in una posizione fisica coerente sull'intestazione ICSP; questo è utile, ad esempio, nella progettazione di uno shield che funzioni su ogni scheda.

Libreria per Arduino

Per utilizzare il display OLED è necessario installare l'apposita libreria, questa può essere cercata tra le librerie installabili nell’IDE, basterà inserire nel campo "SSD1331".
In questo caso si è scelta quella fornita dalla Adafruit nella versione 1.0.2, una volta caricata sarà mostrata la dicitura "INSTALLED"
Per maggiori informazioni vedere il link.

Analogamente, sempre per gestire la parte grafica occorre caricare la libreria grafica "Adafruit GFX Library", in questo caso si è scelta la versione 1.2.9, una volta caricata sarà mostrata la dicitura "INSTALLED".
Per maggiori informazioni vedere il link.

Esempio di utilizzo

Test base con Arduino UNO

Test base per la prova di funzionamento del display, si è utilizzato un Arduino UNO collegando tramite cavi il display montato su una piccola breadBoard. Si potrà utilizzare lo Sketch presente nella cartella esempi della libreria, oppure lo Sketch mostrato sotto.


sketch di Test_oled_SSD1331_arduino_uno.ino

Sketch testato con versione IDE 1.8.5 e libreria versione 1.0.2

/*
    Programma: Test_oled_SSD1331_arduino_uno.ino
    
   This is a example sketch demonstrating the graphics
   capabilities of the SSD1331 library  for the 0.96"
   16-bit Color OLED with SSD1331 driver chip

    Ultima modifica il 6/5/2018

    Applicazione realizzata da Adriano Gandolfo
    Sito 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.
*/

// Definizione dei pin di collegamento
#define sclk 13
#define mosi 11
#define cs   10
#define rst  9
#define dc   8

// Definizione dei colori
#define	BLACK           0x0000
#define	BLUE            0x001F
#define	RED             0xF800
#define	GREEN           0x07E0
#define 	CYAN            0x07FF
#define 	MAGENTA         0xF81F
#define 	YELLOW          0xFFE0
#define 	WHITE           0xFFFF

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1331.h>
#include <SPI.h>

Adafruit_SSD1331 display = Adafruit_SSD1331(cs, dc, rst);

void setup(void) {
  display.begin();
}

void loop() {
  display.fillScreen(BLACK);
  display.setTextSize(2);
  display.setCursor(20, 0);
  display.setTextColor(WHITE);
  display.print("TEST");
  display.setCursor(5, 16);
  display.setTextColor(YELLOW);
  display.print("DISPLAY");
  display.drawFastHLine(0, 45, display.width() - 1, RED);
  display.setCursor(0, 52);
  display.setTextColor(GREEN);
  display.setTextSize(1);
  display.print("WWW.ADRIROBOT.IT");
  delay(1500);
}

Test base con Arduino Nano

Test base per la prova di funzionamento del display utilizzando un Arduino Nano clone dalla HiLetgo il cui negozio online potrete trovare su AMAZON.

 

Sia la scheda Arduino Nano che il display OLED sono stati montati su una breadboard 400 punti dalle dimensioni di 85x55mm, per i collegamenti si utilizzeranno dei cavi jumper 100mm maschio/maschio di diverso colore. Nello schema sotto riportato sono riportati i vari collegamenti.
Una volta effettuati i collegamenti si collegherà l'Arduino Nano al PC e si caricherà lo Sketch nella memoria.  Una volta caricato, lo Sketch, mostrerà una serie di parole sul display.


sketch di Test_oled_SSD1331_arduino_nano.ino

Sketch testato con versione IDE 1.8.5 e libreria versione 1.0.2

/*
    Programma: Test_oled_SSD1331_arduino_nano.ino
    
   This is a example sketch demonstrating the graphics
   capabilities of the SSD1331 library  for the 0.96"
   16-bit Color OLED with SSD1331 driver chip

    Ultima modifica il 22/7/2018

    Applicazione realizzata da Adriano Gandolfo
    Sito 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.
*/

// Definizione dei pin di collegamento
#define sclk 13
#define mosi 11
#define cs   10
#define rst  9
#define dc   8

// Definizione dei colori
#define	BLACK           0x0000
#define	BLUE            0x001F
#define	RED             0xF800
#define	GREEN           0x07E0
#define CYAN            0x07FF
#define MAGENTA         0xF81F
#define YELLOW          0xFFE0
#define WHITE           0xFFFF

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1331.h>
#include <SPI.h>

Adafruit_SSD1331 display = Adafruit_SSD1331(cs, dc, rst);

void setup(void) {
  display.begin();
}

void loop() {
  display.fillScreen(BLACK);
  display.setTextSize(2);
  display.setCursor(5, 0);
  display.setTextColor(WHITE);
  display.print("ARDUINO");
  display.setCursor(25, 16);
  display.setTextColor(GREEN);
  display.print("NANO");
  display.setCursor(10, 32);
  display.setTextColor(RED);
  display.print("Hi");
  display.setTextColor(WHITE);
  display.print("Letgo");
  display.drawFastHLine(0, 50, display.width() - 1, RED);
  display.setCursor(0, 54);
  display.setTextColor(BLUE);
  display.setTextSize(1);
  display.print("WWW.ADRIROBOT.IT");
  delay(1500);
}

Test base con Wemos Mega

La versione dello Sketch per la scheda WeMos Mega, è simile a quella per Arduino UNO l'unica modifica all'interno dello Sketch sono i pin che si utilizzeremo

 


sketch di Test_oled_SSD1331_wemos_mega.ino

Sketch testato con versione IDE 1.8.5 e libreria versione 1.0.2

/*
    Programma: Test_oled_SSD1331_wemos_mega.ino
    
   This is a example sketch demonstrating the graphics
   capabilities of the SSD1331 library  for the 0.96"
   16-bit Color OLED with SSD1331 driver chip

    Ultima modifica il 6/5/2018

    Applicazione realizzata da Adriano Gandolfo
    Sito 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.
*/

// Definizione dei pin di collegamento
#define sclk 52
#define mosi 51
#define cs   10
#define rst  9
#define dc   8

// Definizione dei colori
#define	BLACK           0x0000
#define	BLUE            0x001F
#define	RED             0xF800
#define	GREEN           0x07E0
#define 	CYAN            0x07FF
#define 	MAGENTA         0xF81F
#define 	YELLOW          0xFFE0
#define 	WHITE           0xFFFF

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1331.h>
#include <SPI.h>

Adafruit_SSD1331 display = Adafruit_SSD1331(cs, dc, rst);

void setup(void) {
  display.begin();
}

void loop() {
  display.fillScreen(BLACK);
  display.setTextSize(2);
  display.setCursor(20, 0);
  display.setTextColor(WHITE);
  display.print("TEST");
  display.setCursor(5, 16);
  display.setTextColor(YELLOW);
  display.print("DISPLAY");
  display.drawFastHLine(0, 45, display.width() - 1, RED);
  display.setCursor(0, 52);
  display.setTextColor(GREEN);
  display.setTextSize(1);
  display.print("WWW.ADRIROBOT.IT");
  delay(1500);
}

 

 

Test base con Wemos D1 mini

Se si utilizza il display con il modulo Wemos D1 mini, il compilatore potrebbe segnalarvi l'errore sotto riportato

Adafruit_SSD1331.cpp:308:15: error: cannot convert 'volatile uint32_t* {aka volatile unsigned int*}' to
'PortReg* {aka volatile unsigned char*}' in assignment rsportreg = portOutputRegister(digitalPinToPort(_rs));

in questo caso occorre modificare la libreria inserendo alcune righe all'interno del file Adafruit_SSD1331.h come mostrato in questa pagina oppure scaricare direttamente questo file e sostituitelo a quello presente nella cartella della libreria relativa.


sketch di Test_oled_SSD1331_wemos_d1.ino

Sketch testato con versione IDE 1.8.5 e libreria versione 1.0.2

/*
    Programma: Test_oled_SSD1331_wemos_d1.ino
    
   This is a example sketch demonstrating the graphics
   capabilities of the SSD1331 library  for the 0.96"
   16-bit Color OLED with SSD1331 driver chip

    Ultima modifica il 10/5/2018

    Applicazione realizzata da Adriano Gandolfo
    Sito 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.
*/

// Definizione dei pin di collegamento
#define sclk D5
#define mosi D7
#define cs   D8
#define rst  D3
#define dc   D1

// Definizione dei colori
#define	BLACK           0x0000
#define	BLUE            0x001F
#define	RED             0xF800
#define	GREEN           0x07E0
#define 	CYAN            0x07FF
#define 	MAGENTA         0xF81F
#define 	YELLOW          0xFFE0
#define 	WHITE           0xFFFF

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1331.h>
#include <SPI.h>

//Adafruit_SSD1331 display = Adafruit_SSD1331(cs, dc, rst);
Adafruit_SSD1331 display = Adafruit_SSD1331(cs, dc, mosi, sclk, rst);

void setup(void) {
  display.begin();
}

void loop() {
  display.fillScreen(BLACK);
  display.setTextSize(2);
  display.setCursor(20, 0);
  display.setTextColor(WHITE);
  display.print("TEST");
  display.setCursor(5, 16);
  display.setTextColor(YELLOW);
  display.print("DISPLAY");
  display.drawFastHLine(0, 45, display.width() - 1, RED);
  display.setCursor(0, 52);
  display.setTextColor(GREEN);
  display.setTextSize(1);
  display.print("WWW.ADRIROBOT.IT");
  delay(1500);
}

 

 

Elenco revisioni:
22/07/2018 Aggiornato pagina, inserito gestione con Arduino Nano
10/05/2018 Aggiornato pagina, inserito gestione con Arduino uno, Wemos D1 mini, inserto possibilità di scaricare sketch
07/03/2018 Emissione preliminare
Private Policy Cookie Policy