Pantalla OLED 0.96″ I2C/SPI

OLED (Organic light emitting diode) son las siglas que denominan el tipo de led del que están compuestas este tipo de pantallas. Incorpora el controlador SDD1306 que nos permite una conexión I2C o SPI fácil de usar. Es una pantalla monocroma y tiene una resolución de 128 x 64 pixels.

El tipo de interface se distingue, generalmente, por el número de pines. Las que incluyen interface I2C tienen 4 pines, otras con 7 pines implementan tanto SPI como I2C. La comunicación SPI es más rápida que la I2C, por tanto debemos dar preferencia a este tipo de conexión si necesitamos gráficos en movimiento, por ejemplo.

Dos modelos de pantallas OLED de 0,96″, I2C y SPI. Se distinguen por el número de pines

El consumo es extremadamente bajo comparado con otro tipo de pantallas, entorno a los 20mA. Éste dependerá del número de leds que necesitemos encender en un momento dado. Ésto las hacen muy interesantes para proyectos alimentados por baterías.

Algunas pantallas, aun siendo monocromas, presentan dos zonas en distintos colores, las 16 primeras filas de leds son amarillas y las siguientes son azules. Esto permite diferencias claramente una zona de títulos o indicadores y otra de presentación de datos.

Son pantallas de tamaño muy reducido, el módulo completo mide unos 25 x 26 mm y tienen una excelente luminosidad, incluso en ambientes soleados.

Características generales

  • Alimentación: 3,3 – 5V
  • Consumo: sobre los 20mA
  • Resolución: 128 x 64 pixels
  • Color: monocromo
  • Tamaño del módulo: 25 x 26 mm (0,96″ de pantalla)

Más información en el datasheet.

Vemos que aceptan niveles lógicos tanto de 3,3V como de 5V por tanto no tendremos problemas de adaptación de niveles en las distintas placas de Arduino.

Conexión I2C

La conexión I2C es la más sencilla, ya que sólo necesita dos cables para funcionar. Se trata de una conexión típica I2C.

ArduinoOLED I2C
5VVCC
GNDGND
A4SDA
A5SCL

Además de los pines de alimentación VCC y GND, conectaremos el pin A4 de Arduino al SDA del sensor y el pin A5 de Arduino al SCL del sensor.

Conexión de la pantalla OLED I2C con Arduino

ATENCIÓN

Distintos modelos de Arduino pueden usar pines distintos para la comunicación I2C. En las placas UNO, NANO y MINI se usan los pines A4 y A5, en otros modelos pueden ser otro par de pines. Consultar la documentación de la placa.

Conexión SPI

Si nuestra pantalla es un modelo con conexión SPI, las conexiones son las siguientes:

ArduinoOLED SPI
5VVCC
GNDGND
D12CS
D11DC
D13RES
D9D1
D10D0
Conexión de la pantalla OLED SPI con Arduino

Código Arduino I2C

Podemos controlar la pantalla desde nuestro código con la librería Adafruit_SSD1306 desarrollada por Adafruit. Además, si queremos mostrar gráficos podemos usar la librería Adafruit GFX.

El siguiente ejemplo inicializa la pantalla en la dirección I2C 0x3C y muestra «Hola mundo.» en el display:

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

#define SCREEN_WIDTH 128 // Anchura de la pantalla en pixels
#define SCREEN_HEIGHT 64 // Altura de la pantalla en piexels

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

void setup() {
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // 0x3C es la dirección I2C

  delay(2000);
  display.clearDisplay();

  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0, 10);
  display.println("Hola mundo.");
  display.display(); 
}

void loop() {
  
}

NOTA sobre la dirección I2C

Si no conocemos la dirección I2C en la que se encuentra nuestro dispositivo, podemos usar el Scanner I2C para averiguarlo.

Scanner I2C

Hay muchos dispositivos que se conectan a través del bus I2C. En ocasiones no sabemos la dirección I2C que tiene asignada el dispositivo. El siguiente código arduino escanea las posibles direcciones y muestra en...

Read more

Código Arduino SPI

Para el modelo de conexión SPI, el código es un poco distinto. Además, debemos asegurarnos de que en la librería Adafruit_SSD1306.h, descomentamos la instrucción #define SSD1306_128_64 para especificar correctamente el tamaño de nuestra pantalla.

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

#define OLED_MOSI 9
#define OLED_CLK 10
#define OLED_DC 11
#define OLED_CS 12
#define OLED_RESET 13

Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);

#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SH1106.h!");
#endif

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

	delay(2000);
	display.clearDisplay();

	display.setTextSize(1);
	display.setTextColor(WHITE);
	display.setCursor(0,10);
	display.println("Hola mundo.");
	display.display();
}

void loop() {

}

También te podría gustar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *