Pic
shadow

OLED (siglas en inglés de Organic Light-Emitting Diode, en español: diodo orgánico de emisión de luz) es una tecnologia usada para fabricar pantallas de todos los tama&mtilde;os.

Simplificandolo se basa en una capa de componentes organicos que ante una estimulación eléctrica reaccionan desprendiendo Luz.

Las principales ventajas de la tecnologia OLED son:

  • Pantallas muy delgadas
  • Amplio grado de luz y contraste
  • Bajo consumo

Actualmente podemos encontrar pantallas OLED de multiples tamaños y a muy diversos precios, pero sobre todo, que es lo que nos interesa para este tutorial, con conexión SPI que nos permite conectarlo fácilmente a nuestro Arduino.

  • Protoboard Ampliar
    Esquema Ampliar

La disposición de los pines puede variar en función del modelo qu compremos, por lo que es importante fijarnos en la serigrafía del conector y asegurarnos de que se cumpla esta correspondencia:

Pin pantallaPin Arduino
CS2
DC3
RST4
D05
D16
Vcc3.3V
GNDGND

Así de fácil. Ahora para controlarla y poder dibujar en ella contamos con una librería llamada U8Glib que cuenta con muchas funciones para ayudarnos a mostrar lo que queramos en nuestra pantalla y de la que disponemos de estupendo tutorial.

	#include <U8glib.h>
 
#define cs 2     // CS
#define a0 3     // DC
#define reset 4  // RST
#define sck 5    // D0
#define mosi 6   // D1
 
int x, y;
 
//SPI Comunicación por SW (sck, mosi, cs, a0 , reset)
U8GLIB_SSD1306_128X64 u8g(sck, mosi, cs, a0, reset);
 
void setup() {
  x = 50;
  y = 5;
}
 
void loop() {
  // picture loop
  u8g.firstPage();
  do {
   draw("Trastejant");
   pie(x, y, "www.trastejant.es");
 
  
 
   u8g.drawPixel(14,23);
   u8g.drawPixel(24,43);
   u8g.drawPixel(125,53);
   u8g.drawPixel(0,0);
   u8g.drawPixel(127,0);
   u8g.drawPixel(127,63);
   u8g.drawPixel(0,63);
 
  } while( u8g.nextPage() );
  if (y <= 62) {
    y++;
  }
 
  // vuelve a dibujar el display cada 5milisegundos
  delay(5);
}
 
void draw(char* text) {
  // graphic commands to redraw the complete screen should be placed here
  u8g.setFont(u8g_font_unifont);
  u8g.drawStr( 0, 20, text);
}
 
void pie(int x, int y, char* text) {
  // graphic commands to redraw the complete screen should be placed here
  u8g.setFont(u8g_font_04b_03);
  u8g.drawStr( x, y, text);
}