INFORMACIÓN
El Display Oled I2C 2.4″ 128×64 un tipo de pantalla que utiliza tecnología OLED (Organic Light-Emitting Diode) disponibles en: Blanco, Azul y Amarrillo. Tienen una resolución de 128×64 píxeles y utiliza los controladores SSD1309, SSD13010 y SSD1311 para gestionar las pantallas. Utilizan el protocolo de comunicación I2C (Inter-Integrated Circuit).
Ofrecen varias ventajas, como un alto contraste, un ángulo de visión amplio, tiempos de respuesta rápidos y la capacidad de mostrar contenido incluso en condiciones de luz ambiente intensa, son ideales para proyectos electrónicos donde se requiere una pantalla compacta y nítida para mostrar información como texto, gráficos, mediciones, y más.
El Display Oled I2C 2.4″ utiliza un controlador encargado de gestionar la pantalla y permite controlar la representación de los píxeles, el brillo, el contraste y otras configuraciones visuales. Se puede utilizar con una variedad de placas de desarrollo y microcontroladores como Arduino, Raspberry Pi y otros sistemas embebidos.
ESPECIFICACIONES Y CARACTERÍSTICAS
- Tamaño de pantalla diagonal: 2.42 «
- Resolución: 128 * 64
- Controlador IC:
- Pantalla color blanco SSD1309
- Pantalla color Azul SSD1310
- Pantalla color Amarillo SSD1311
- I2C definición de interfaz:
- 1. GND (toma de tierra)
- 2. VDD (fuente de alimentación positiva)
- 3.SCL (línea de reloj)
- 4. SDA (datos línea)
- El paquete incluye: 1 módulo de pantalla LCD OLED de 2.4 pulgadas y una tira de 4 pines para soldar
- Peso: 39g
DOCUMENTACIÓN Y RECURSOS
INFORMACIÓN ADICIONAL
-
Para utilizar Display bajaremos la liberaría U8glib
- Conectaremos un Arduino UNO al Display I2C 2.4″ 128×64 SSD1312
- Cargaremos el programa básico para utilizar las pantallas OLED
#include <Arduino.h> #include <U8g2lib.h> #ifdef U8X8_HAVE_HW_I2C #include <Wire.h> #endif //Descomentar la pantalla que se este utilizando // Pantallas OLED Blanco y Amarilla //U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); //Pantallas Azules //U8G2_SSD1312_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ 8); void u8g2_prepare(void) { u8g2.setFont(u8g2_font_6x10_tf); u8g2.setFontRefHeightExtendedText(); u8g2.setDrawColor(1); u8g2.setFontPosTop(); u8g2.setFontDirection(0); } void u8g2_box_frame(uint8_t a) { u8g2.drawStr( 0, 0, "drawBox"); u8g2.drawBox(5,10,20,10); u8g2.drawBox(10+a,15,30,7); u8g2.drawStr( 0, 30, "drawFrame"); u8g2.drawFrame(5,10+30,20,10); u8g2.drawFrame(10+a,15+30,30,7); } void u8g2_disc_circle(uint8_t a) { u8g2.drawStr( 0, 0, "drawDisc"); u8g2.drawDisc(10,18,9); u8g2.drawDisc(24+a,16,7); u8g2.drawStr( 0, 30, "drawCircle"); u8g2.drawCircle(10,18+30,9); u8g2.drawCircle(24+a,16+30,7); } void u8g2_r_frame(uint8_t a) { u8g2.drawStr( 0, 0, "drawRFrame/Box"); u8g2.drawRFrame(5, 10,40,30, a+1); u8g2.drawRBox(50, 10,25,40, a+1); } void u8g2_string(uint8_t a) { u8g2.setFontDirection(0); u8g2.drawStr(30+a,31, " 0"); u8g2.setFontDirection(1); u8g2.drawStr(30,31+a, " 90"); u8g2.setFontDirection(2); u8g2.drawStr(30-a,31, " 180"); u8g2.setFontDirection(3); u8g2.drawStr(30,31-a, " 270"); } void u8g2_line(uint8_t a) { u8g2.drawStr( 0, 0, "drawLine"); u8g2.drawLine(7+a, 10, 40, 55); u8g2.drawLine(7+a*2, 10, 60, 55); u8g2.drawLine(7+a*3, 10, 80, 55); u8g2.drawLine(7+a*4, 10, 100, 55); } void u8g2_triangle(uint8_t a) { uint16_t offset = a; u8g2.drawStr( 0, 0, "drawTriangle"); u8g2.drawTriangle(14,7, 45,30, 10,40); u8g2.drawTriangle(14+offset,7-offset, 45+offset,30-offset, 57+offset,10-offset); u8g2.drawTriangle(57+offset*2,10, 45+offset*2,30, 86+offset*2,53); u8g2.drawTriangle(10+offset,40+offset, 45+offset,30+offset, 86+offset,53+offset); } void u8g2_ascii_1() { char s[2] = " "; uint8_t x, y; u8g2.drawStr( 0, 0, "ASCII page 1"); for( y = 0; y < 6; y++ ) { for( x = 0; x < 16; x++ ) { s[0] = y*16 + x + 32; u8g2.drawStr(x*7, y*10+10, s); } } } void u8g2_ascii_2() { char s[2] = " "; uint8_t x, y; u8g2.drawStr( 0, 0, "ASCII page 2"); for( y = 0; y < 6; y++ ) { for( x = 0; x < 16; x++ ) { s[0] = y*16 + x + 160; u8g2.drawStr(x*7, y*10+10, s); } } } void u8g2_extra_page(uint8_t a) { u8g2.drawStr( 0, 0, "Unicode"); u8g2.setFont(u8g2_font_unifont_t_symbols); u8g2.setFontPosTop(); u8g2.drawUTF8(0, 24, "☀ ☁"); switch(a) { case 0: case 1: case 2: case 3: u8g2.drawUTF8(a*3, 36, "☂"); break; case 4: case 5: case 6: case 7: u8g2.drawUTF8(a*3, 36, "☔"); break; } } #define cross_width 24 #define cross_height 24 static const unsigned char cross_bits[] U8X8_PROGMEM = { 0x00, 0x18, 0x00, 0x00, 0x24, 0x00, 0x00, 0x24, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0xC0, 0x00, 0x03, 0x38, 0x3C, 0x1C, 0x06, 0x42, 0x60, 0x01, 0x42, 0x80, 0x01, 0x42, 0x80, 0x06, 0x42, 0x60, 0x38, 0x3C, 0x1C, 0xC0, 0x00, 0x03, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x24, 0x00, 0x00, 0x24, 0x00, 0x00, 0x18, 0x00, }; #define cross_fill_width 24 #define cross_fill_height 24 static const unsigned char cross_fill_bits[] U8X8_PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x64, 0x00, 0x26, 0x84, 0x00, 0x21, 0x08, 0x81, 0x10, 0x08, 0x42, 0x10, 0x10, 0x3C, 0x08, 0x20, 0x00, 0x04, 0x40, 0x00, 0x02, 0x80, 0x00, 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x01, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x04, 0x10, 0x3C, 0x08, 0x08, 0x42, 0x10, 0x08, 0x81, 0x10, 0x84, 0x00, 0x21, 0x64, 0x00, 0x26, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; #define cross_block_width 14 #define cross_block_height 14 static const unsigned char cross_block_bits[] U8X8_PROGMEM = { 0xFF, 0x3F, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0xC1, 0x20, 0xC1, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0xFF, 0x3F, }; void u8g2_bitmap_overlay(uint8_t a) { uint8_t frame_size = 28; u8g2.drawStr(0, 0, "Bitmap overlay"); u8g2.drawStr(0, frame_size + 12, "Solid / transparent"); u8g2.setBitmapMode(false /* solid */); u8g2.drawFrame(0, 10, frame_size, frame_size); u8g2.drawXBMP(2, 12, cross_width, cross_height, cross_bits); if(a & 4) u8g2.drawXBMP(7, 17, cross_block_width, cross_block_height, cross_block_bits); u8g2.setBitmapMode(true /* transparent*/); u8g2.drawFrame(frame_size + 5, 10, frame_size, frame_size); u8g2.drawXBMP(frame_size + 7, 12, cross_width, cross_height, cross_bits); if(a & 4) u8g2.drawXBMP(frame_size + 12, 17, cross_block_width, cross_block_height, cross_block_bits); } void u8g2_bitmap_modes(uint8_t transparent) { const uint8_t frame_size = 24; u8g2.drawBox(0, frame_size * 0.5, frame_size * 5, frame_size); u8g2.drawStr(frame_size * 0.5, 50, "Black"); u8g2.drawStr(frame_size * 2, 50, "White"); u8g2.drawStr(frame_size * 3.5, 50, "XOR"); if(!transparent) { u8g2.setBitmapMode(false /* solid */); u8g2.drawStr(0, 0, "Solid bitmap"); } else { u8g2.setBitmapMode(true /* transparent*/); u8g2.drawStr(0, 0, "Transparent bitmap"); } u8g2.setDrawColor(0);// Black u8g2.drawXBMP(frame_size * 0.5, 24, cross_width, cross_height, cross_bits); u8g2.setDrawColor(1); // White u8g2.drawXBMP(frame_size * 2, 24, cross_width, cross_height, cross_bits); u8g2.setDrawColor(2); // XOR u8g2.drawXBMP(frame_size * 3.5, 24, cross_width, cross_height, cross_bits); } uint8_t draw_state = 0; void draw(void) { u8g2_prepare(); switch(draw_state >> 3) { case 0: u8g2_box_frame(draw_state&7); break; case 1: u8g2_disc_circle(draw_state&7); break; case 2: u8g2_r_frame(draw_state&7); break; case 3: u8g2_string(draw_state&7); break; case 4: u8g2_line(draw_state&7); break; case 5: u8g2_triangle(draw_state&7); break; case 6: u8g2_ascii_1(); break; case 7: u8g2_ascii_2(); break; case 8: u8g2_extra_page(draw_state&7); break; case 9: u8g2_bitmap_modes(0); break; case 10: u8g2_bitmap_modes(1); break; case 11: u8g2_bitmap_overlay(draw_state&7); break; } } void setup(void) { //Descomentar si se utiliza patalla OLED Amarillo //u8g2.setI2CAddress(0x3C * 2); u8g2.begin(); //u8g2.setPowerSave(0); } void loop(void) { // picture loop u8g2.clearBuffer(); draw(); u8g2.sendBuffer(); // increase the state draw_state++; if ( draw_state >= 12*8 ) draw_state = 0; // deley between each page delay(100); }
NOTA: Se descomentan las línea de comando dependiendo del tipo de pantalla que estemos utilizando
Para la pantalla Amarilla y Blanca
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);
y solo para la pantalla amarilla descomentaremos también en el Void para dejarlo así
void setup(void) { u8g2.setI2CAddress(0x3C * 2); u8g2.begin(); u8g2.setPowerSave(0); }
Para la pantalla azul solo descomentaremos la siguiente línea.
U8G2_SSD1312_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ 8);
Valoraciones
No hay valoraciones aún.