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.
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 pantalla | Pin Arduino |
|---|---|
| CS | 2 |
| DC | 3 |
| RST | 4 |
| D0 | 5 |
| D1 | 6 |
| Vcc | 3.3V |
| GND | GND |
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);
}

