Creando una Mascota Virtual con Arduino (Parte 1):
Introducción
¡Bienvenidos a la primera parte de esta emocionante serie donde exploraremos la creación de una mascota virtual interactiva utilizando Arduino! En este proyecto, daremos vida a un pequeño personaje digital que podrá interactuar con el mundo real a través de una pantalla OLED y botones (generan emoji). Esta primera entrega se centrará en la configuración inicial, la interacción básica con la pantalla y la lectura de entradas digitales, la configuracion de las librerias OLED.
Creacion de emojis
Para la creacion de los emojis usamos Gemini IA Usando un prompt en el que solicitamos "crea una imagen de un emoji sonriente en colores blanco y negro sin sombras ni colores o grises".
Luego para cada uno de los rostros generamos el mismo prompt cambiando la emocion usamos sonriente, sorprendido, enojado y jugueton.
Emojis Generados
Configuracion de tamaño
Para la configuracion del tamaño usamos presentaciones de Documentos de google, para girar la imagen, ya que se deben usar imagenes de 128 x 64 pixeles (mas ancho que alto)
Pero para que la imagen quede exactamente del tamaño requerido debemos usar Redimensionar, con lo cual podemos asegurar cada tamaño de la imagen ancho 128, alto = 64; debemos deshabilitar Mantener relación de aspecto y activar la opcion No agrandar si el original es más pequeño
Obtener el codigo estilo Hexadecimal
Para obtener el codigo hexadecimal para cada variable debemos con la imagen convertida al tamaño adecuado en el paso anterior, crearla con la siguiente pagina en la url Rinky-dink Electronics
Alli de a cuerdo a cada imagen cargada nos dara un codigo hexadecimal que sera el que usemos para cada imagen en el codigo
Uso de la Pantalla OLED y Librerías
Para interactuar visualmente con nuestra mascota, utilizaremos una pantalla OLED. La librería Adafruit GFX Library proporciona las funciones básicas de dibujo (líneas, círculos, texto), mientras que la librería Adafruit SSD1306 es específica para controlar las pantallas OLED basadas en el chip SSD1306.
En el código, incluimos estas librerías al inicio. La línea Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); crea un objeto llamado display para controlar nuestra pantalla, para acceder a ellos vamos al Arduino IDE. Y seguimos la ruta
E instalamos las ya mencionadas "Adafruit GFX Library" debe ser "by Adafruit"
Tambien "Adafruit SSD 1306" ebe ser "by Adafruit"
La tercera libreria a instalar tambien se trae desde la pagina Rinky-dink Electronics llamada "OLED_I2C.zip"
Código Inicial de Arduino
Aquí te presento el código base con el que comenzaremos a interactuar con nuestra mascota virtual. Este código incluye la inicialización de la pantalla OLED y la configuración de los pines de los botones.
//CONEXION OLED -> ARDUINO (NANO o UNO)
// OLED UNO / NANO
// 5V 5V
// GND GND
// SCL A5
// SDA A4
//ASIGNACION DE BOTON Y ENTRADA PARA CADA BOTON DE EMOCION
// Emoji Sonriente -> Botón conectado entre PIN 2 y GND (INPUT)
// Emoji Sorprendido -> Botón conectado entre PIN 3 y GND (INPUT)
// Emoji Enojado -> Botón conectado entre PIN 4 y GND (INPUT)
// Emoji Juguetón -> Botón conectado entre PIN 5 y GND (INPUT)
//las imagenes fueron creadas con gemini IA su relacion de aspecto configurada con google presentaciones
//El Tamaño de las imagenes se cambio con https://www.iloveimg.com/es/redimensionar-imagen/jpg-cambiar-tamano#resize-options,pixels
//Las imagenes se transforman en hexadecimal en http://www.rinkydinkelectronics.com/t_imageconverter_mono.php
#include
OLED myOLED(SDA, SCL, 8); // Objeto display OLED
extern uint8_t SmallFont[]; //seleccion de fuente
// 1. DECLARACIÓN DE EMOJIS EN MEMORIA FLASH (PROGMEM)
//la declaracion de las variables se hace con uint8_t por los 8 bits que maneja (1 byte). Cada elemento del array representa un valor entre 0 y 255.
// --------------------------------------------------
const uint8_t sonriente128x64[] PROGMEM = { //imaggenes 128 x 64 eh hexa
0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // 0x0010 (16) pixels
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // 0x0020 (32) pixels
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x81, 0x81, 0xC1, 0xC1, 0xE1, 0xE1, 0xF1, 0xF1, 0xF9, // 0x0030 (48) pixels
0x79, 0x79, 0x79, 0x3D, 0x3D, 0x3D, 0x3D, 0x1F, 0x1F, 0x9F, 0xDF, 0xDF, 0xDF, 0x9F, 0x9F, 0x9F, // 0x0040 (64) pixels
0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x3D, 0x3D, 0x3D, 0x3D, 0x7D, 0x79, 0x79, 0xF9, // 0x0050 (80) pixels
0xF1, 0xF1, 0xE9, 0xE9, 0xD1, 0xD1, 0xB1, 0xA1, 0x41, 0x81, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // 0x0060 (96) pixels
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // 0x0070 (112) pixels
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, // 0x0080 (128) pixels
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0090 (144) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, // 0x00A0 (160) pixels
0xE0, 0xF0, 0xF8, 0xFC, 0x7E, 0x3E, 0x1F, 0x0F, 0x0F, 0x07, 0x03, 0x03, 0x01, 0x01, 0x80, 0xC0, // 0x00B0 (176) pixels
0xC0, 0xE0, 0xF0, 0xF0, 0xF0, 0xF8, 0xF8, 0xFC, 0xFC, 0xFD, 0xFD, 0xFF, 0xFF, 0x3F, 0x1F, 0x0F, // 0x00C0 (192) pixels
0x3F, 0x3E, 0x3C, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x00D0 (208) pixels
0x00, 0xC1, 0xC1, 0xC3, 0xC3, 0x87, 0x07, 0x0F, 0x1F, 0x3E, 0x7E, 0xFC, 0xF8, 0xF0, 0xE0, 0xC0, // 0x00E0 (224) pixels
0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x00F0 (240) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, // 0x0100 (256) pixels
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0110 (272) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0xFE, 0xFF, 0x3F, // 0x0120 (288) pixels
0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0xF8, 0xFC, 0x7E, 0x3F, 0x1F, 0x1F, // 0x0130 (304) pixels
0xFB, 0xFF, 0x7F, 0x1B, 0x18, 0x18, 0xF8, 0xFE, 0xFF, 0xFF, 0x3F, 0x07, 0x01, 0x00, 0x00, 0x00, // 0x0140 (320) pixels
0x70, 0xF8, 0xFC, 0xFC, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFC, 0xFC, 0xF8, 0xF0, // 0x0150 (336) pixels
0x00, 0x01, 0x01, 0x03, 0xDF, 0xFF, 0xFF, 0xFE, 0xF0, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x3F, // 0x0160 (352) pixels
0xFF, 0xFF, 0xFC, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0170 (368) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, // 0x0180 (384) pixels
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0190 (400) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x1F, 0x01, 0x00, // 0x01A0 (416) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFE, 0xFF, 0xFF, 0xFF, 0xC7, 0xC3, 0xC3, 0xC3, 0x83, 0xFF, // 0x01B0 (432) pixels
0xFF, 0xFF, 0xC3, 0xC3, 0x83, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x01C0 (448) pixels
0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, // 0x01D0 (464) pixels
0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x01E0 (480) pixels
0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFE, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x01F0 (496) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, // 0x0200 (512) pixels
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0210 (528) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xF8, 0x80, 0x00, // 0x0220 (544) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x7F, 0xFF, 0xFF, 0xFF, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xFF, // 0x0230 (560) pixels
0xFF, 0xFF, 0xE1, 0xE1, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0240 (576) pixels
0x00, 0x00, 0x80, 0xE0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x00, // 0x0250 (592) pixels
0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0260 (608) pixels
0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0x7F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0270 (624) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, // 0x0280 (640) pixels
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0290 (656) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x7F, 0xFF, 0xFE, // 0x02A0 (672) pixels
0xF8, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x1F, 0x3F, 0x7E, 0xFC, 0xFC, 0xFC, // 0x02B0 (688) pixels
0xFF, 0xFF, 0xFF, 0xFC, 0x1C, 0x1C, 0x1F, 0x7F, 0xFF, 0xFF, 0xFE, 0xE0, 0x80, 0x00, 0x00, 0x00, // 0x02C0 (704) pixels
0x0E, 0x1F, 0x3F, 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F, 0x3F, 0x1F, 0x0F, // 0x02D0 (720) pixels
0x00, 0x80, 0x80, 0xE0, 0xF9, 0xFF, 0xFF, 0x7F, 0x0F, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0xFC, // 0x02E0 (736) pixels
0xFF, 0x7F, 0x3F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x02F0 (752) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, // 0x0300 (768) pixels
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0310 (784) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // 0x0320 (800) pixels
0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7E, 0x7C, 0xF8, 0xF0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x81, 0x01, // 0x0330 (816) pixels
0x03, 0x07, 0x07, 0x0F, 0x0F, 0x1F, 0x1F, 0x1F, 0x3F, 0xBF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0xF0, // 0x0340 (832) pixels
0xFC, 0x7E, 0x3E, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0350 (848) pixels
0x80, 0x83, 0xC3, 0xC3, 0xE3, 0xE1, 0xF0, 0xF8, 0xF8, 0x7C, 0x3E, 0x1F, 0x1F, 0x0F, 0x07, 0x03, // 0x0360 (864) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0370 (880) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, // 0x0380 (896) pixels
0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 0x0390 (912) pixels
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 0x03A0 (928) pixels
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x83, 0x83, 0x87, 0x87, 0x8F, 0x8F, // 0x03B0 (944) pixels
0x8F, 0x9F, 0x9E, 0x9E, 0xBE, 0xBC, 0xBC, 0xBC, 0xBC, 0xBD, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF8, // 0x03C0 (960) pixels
0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0x9E, 0x9E, 0x9E, 0x8F, 0x8F, // 0x03D0 (976) pixels
0x8F, 0x87, 0x87, 0x83, 0x83, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 0x03E0 (992) pixels
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 0x03F0 (1008) pixels
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, // 0x0400 (1024) pixels
};
const uint8_t sorprendido128x64[] PROGMEM = { //imagenes 128 x 64 eh hexa
0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // 0x0010 (16) pixels
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // 0x0020 (32) pixels
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x81, 0x81, 0xC1, 0xC1, 0xE1, 0xE1, 0xF1, 0xF1, 0xF1, // 0x0030 (48) pixels
0x71, 0x79, 0x79, 0x39, 0x3D, 0x3D, 0x3D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1F, 0x1F, 0x1F, 0x1F, // 0x0040 (64) pixels
0x1F, 0x1F, 0x1D, 0x1D, 0x1D, 0x1D, 0x3D, 0x3D, 0x3D, 0x39, 0x39, 0x79, 0x79, 0x71, 0xF1, 0xF1, // 0x0050 (80) pixels
0xE1, 0xE1, 0xC1, 0xC1, 0x81, 0x81, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // 0x0060 (96) pixels
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // 0x0070 (112) pixels
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, // 0x0080 (128) pixels
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0090 (144) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, // 0x00A0 (160) pixels
0xE0, 0xF0, 0xF8, 0x7C, 0x3E, 0x1E, 0x0F, 0x0F, 0x07, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, // 0x00B0 (176) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x00C0 (192) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, // 0x00D0 (208) pixels
0x01, 0x01, 0x73, 0xF3, 0xF7, 0xF7, 0xEF, 0xFF, 0xFE, 0xFC, 0xF8, 0xF8, 0xF0, 0xE0, 0xC0, 0x00, // 0x00E0 (224) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x00F0 (240) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, // 0x0100 (256) pixels
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0110 (272) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0xFE, 0xFF, 0x1F, 0x0F, // 0x0120 (288) pixels
0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 0x0130 (304) pixels
0x80, 0x80, 0x40, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0140 (320) pixels
0x3C, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7C, // 0x0150 (336) pixels
0x38, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x1F, 0x7F, // 0x0160 (352) pixels
0xFE, 0xFC, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0170 (368) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, // 0x0180 (384) pixels
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0190 (400) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, // 0x01A0 (416) pixels
0x00, 0xE0, 0xF0, 0xFC, 0xFC, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 0x01B0 (432) pixels
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x01C0 (448) pixels
0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, // 0x01D0 (464) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, // 0x01E0 (480) pixels
0x03, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x01F0 (496) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, // 0x0200 (512) pixels
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0210 (528) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x7F, 0xFF, 0xFF, 0xF8, 0xC0, 0x00, 0x00, // 0x0220 (544) pixels
0x00, 0x01, 0x07, 0x0F, 0x0F, 0x1F, 0x1F, 0x3F, 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, // 0x0230 (560) pixels
0x7F, 0x7F, 0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F, 0x0F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0240 (576) pixels
0x00, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, // 0x0250 (592) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0xF0, 0xE0, 0x80, 0x00, 0x80, // 0x0260 (608) pixels
0xF0, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0270 (624) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, // 0x0280 (640) pixels
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0290 (656) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x3F, 0x7E, 0xFC, // 0x02A0 (672) pixels
0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x02B0 (688) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x02C0 (704) pixels
0x0F, 0x1F, 0x3F, 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F, 0x3F, 0x1F, 0x0F, // 0x02D0 (720) pixels
0x07, 0x00, 0x80, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFE, 0x3F, // 0x02E0 (736) pixels
0x1F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x02F0 (752) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, // 0x0300 (768) pixels
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0310 (784) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0320 (800) pixels
0x01, 0x03, 0x07, 0x0F, 0x1F, 0x1E, 0x3C, 0x7C, 0x78, 0xF0, 0xF0, 0xE0, 0xE0, 0xC0, 0xC0, 0xC0, // 0x0330 (816) pixels
0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0340 (832) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xC0, 0xC0, // 0x0350 (848) pixels
0xE0, 0xE0, 0xF3, 0xF3, 0x7B, 0x7B, 0x3F, 0x3F, 0x1F, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, // 0x0360 (864) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0370 (880) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, // 0x0380 (896) pixels
0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 0x0390 (912) pixels
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 0x03A0 (928) pixels
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x83, 0x83, 0x83, // 0x03B0 (944) pixels
0x87, 0x87, 0x87, 0x87, 0x8F, 0x8F, 0x8F, 0x8E, 0x8E, 0x8E, 0x8E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, // 0x03C0 (960) pixels
0x9E, 0x9E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8F, 0x8F, 0x87, 0x87, 0x87, 0x87, 0x83, 0x83, 0x83, // 0x03D0 (976) pixels
0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 0x03E0 (992) pixels
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 0x03F0 (1008) pixels
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, // 0x0400 (1024) pixels
};
const uint8_t enojado128x64[] PROGMEM = { //imagenes 128 x 64 eh hexa
0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // 0x0010 (16) pixels
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // 0x0020 (32) pixels
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x81, 0x81, 0xC1, 0xC1, 0xC1, 0xE1, 0xE1, 0xF1, // 0x0030 (48) pixels
0xF1, 0xF1, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xFD, 0x7D, 0x7D, 0x7D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, // 0x0040 (64) pixels
0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x3D, 0x3D, 0x39, 0x39, 0x39, 0x79, 0x71, 0x71, 0xF1, 0xE1, 0xE1, // 0x0050 (80) pixels
0xE1, 0xC1, 0xC1, 0x81, 0x81, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // 0x0060 (96) pixels
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // 0x0070 (112) pixels
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, // 0x0080 (128) pixels
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0090 (144) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, // 0x00A0 (160) pixels
0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE, 0x7E, 0x7F, 0x3F, 0x1F, 0x1F, 0x0F, 0x07, 0x07, 0x07, 0x03, // 0x00B0 (176) pixels
0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, // 0x00C0 (192) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0x80, // 0x00D0 (208) pixels
0x01, 0x01, 0x03, 0x03, 0x07, 0x0F, 0x1F, 0x1E, 0x3C, 0x78, 0xF8, 0xF0, 0xE0, 0xC0, 0x00, 0x00, // 0x00E0 (224) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x00F0 (240) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, // 0x0100 (256) pixels
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0110 (272) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0xFE, 0x7F, 0x7F, // 0x0120 (288) pixels
0x3F, 0x0F, 0x07, 0x03, 0x21, 0x38, 0x3C, 0xFC, 0xEE, 0xFE, 0xF6, 0x7E, 0x78, 0x78, 0x78, 0xF0, // 0x0130 (304) pixels
0xF0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x3F, 0xFF, 0xFF, 0xFF, 0xDE, // 0x0140 (320) pixels
0xEF, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xE7, 0xCF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0x7F, 0x3F, // 0x0150 (336) pixels
0x1F, 0x06, 0x80, 0xE0, 0xF0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x3F, 0xFE, // 0x0160 (352) pixels
0xFC, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0170 (368) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, // 0x0180 (384) pixels
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0190 (400) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x3F, 0x01, 0x00, 0x00, // 0x01A0 (416) pixels
0x00, 0x00, 0x00, 0x06, 0x1E, 0xFC, 0xF8, 0xE7, 0x3F, 0xFF, 0xFE, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, // 0x01B0 (432) pixels
0x1F, 0xFF, 0xFF, 0x1F, 0x1F, 0x1F, 0x7F, 0xFC, 0xF8, 0xE0, 0x80, 0x00, 0x01, 0x03, 0x07, 0x0F, // 0x01C0 (448) pixels
0x0F, 0x0F, 0x1F, 0x1F, 0x3F, 0xBF, 0xFF, 0xFF, 0x7F, 0x6F, 0x67, 0x63, 0xE1, 0x80, 0x18, 0x1C, // 0x01D0 (464) pixels
0x0E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x01E0 (480) pixels
0x0F, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x01F0 (496) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, // 0x0200 (512) pixels
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0210 (528) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xFE, 0xC0, 0x00, 0x00, // 0x0220 (544) pixels
0x00, 0x00, 0x80, 0xC0, 0xF0, 0x7F, 0x3F, 0xCF, 0xF0, 0xFF, 0xFF, 0xBF, 0x8E, 0x8E, 0x8E, 0x8E, // 0x0230 (560) pixels
0x8E, 0xFF, 0xFF, 0x8E, 0x8E, 0x8E, 0x8E, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x80, 0xC0, // 0x0240 (576) pixels
0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xF1, 0xFB, 0xFB, 0xFB, 0xDF, 0x9B, 0x1B, 0x1B, 0x63, 0xE0, 0xC0, // 0x0250 (592) pixels
0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, // 0x0260 (608) pixels
0xF8, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0270 (624) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, // 0x0280 (640) pixels
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0290 (656) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x3F, 0x7F, 0xFC, // 0x02A0 (672) pixels
0xF0, 0xE0, 0xC1, 0x1F, 0x3C, 0x7E, 0x7F, 0x7F, 0x7F, 0x3B, 0x7B, 0x7B, 0x7B, 0x7B, 0x7B, 0x7B, // 0x02B0 (688) pixels
0x7F, 0xFF, 0xFF, 0xFD, 0xFF, 0xFD, 0xFF, 0xFF, 0x7F, 0x3F, 0xDD, 0xC0, 0xFE, 0xFF, 0xFF, 0xCF, // 0x02C0 (704) pixels
0xDF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0x9F, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xF8, 0xF1, // 0x02D0 (720) pixels
0xE3, 0x83, 0x07, 0x1F, 0x7C, 0x78, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0xF8, 0x7E, 0x3F, // 0x02E0 (736) pixels
0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x02F0 (752) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, // 0x0300 (768) pixels
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0310 (784) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0320 (800) pixels
0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3E, 0x3C, 0x78, 0x70, 0xF0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, // 0x0330 (816) pixels
0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x07, 0x07, 0x05, // 0x0340 (832) pixels
0x03, 0x03, 0x03, 0x03, 0x03, 0x83, 0xC3, 0xC1, 0xC7, 0xC7, 0xE3, 0x61, 0x6F, 0x8F, 0x8F, 0xC7, // 0x0350 (848) pixels
0xC7, 0xC1, 0xE0, 0xF0, 0xF0, 0x78, 0x3C, 0x3C, 0x1E, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, // 0x0360 (864) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0370 (880) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, // 0x0380 (896) pixels
0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 0x0390 (912) pixels
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 0x03A0 (928) pixels
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x83, 0x83, 0x87, // 0x03B0 (944) pixels
0x87, 0x87, 0x87, 0x8F, 0x8E, 0x8E, 0x8E, 0x8E, 0x9E, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, // 0x03C0 (960) pixels
0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9F, 0x8F, 0x8F, 0x8E, 0x8E, 0x8F, 0x87, 0x87, 0x87, 0x83, 0x83, // 0x03D0 (976) pixels
0x83, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 0x03E0 (992) pixels
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 0x03F0 (1008) pixels
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, // 0x0400 (1024) pixels
};
const uint8_t jugueton128x64[] PROGMEM = { //imagenes 128 x 64 eh hexa
0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // 0x0010 (16) pixels
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // 0x0020 (32) pixels
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xA1, 0xB1, 0xD1, 0xC1, 0xE1, // 0x0030 (48) pixels
0xE1, 0xE1, 0x71, 0x71, 0x71, 0x71, 0x31, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, // 0x0040 (64) pixels
0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x31, 0x71, 0x71, 0x71, 0xE1, 0xE1, 0xE1, 0xC1, 0xC1, // 0x0050 (80) pixels
0xC1, 0x81, 0x81, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // 0x0060 (96) pixels
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // 0x0070 (112) pixels
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, // 0x0080 (128) pixels
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0090 (144) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x00A0 (160) pixels
0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x3C, 0x1C, 0x0E, 0x0F, 0x07, 0x03, 0x03, 0x01, 0x01, 0x81, // 0x00B0 (176) pixels
0x00, 0x00, 0xA0, 0xD0, 0xD0, 0xE8, 0xE8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xE0, // 0x00C0 (192) pixels
0xE0, 0xC4, 0xA0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x61, 0xE1, // 0x00D0 (208) pixels
0xEB, 0xC3, 0x87, 0x07, 0x0E, 0x1E, 0x1C, 0x38, 0x78, 0xF0, 0xE0, 0xC0, 0x80, 0x04, 0x00, 0x00, // 0x00E0 (224) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x00F0 (240) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, // 0x0100 (256) pixels
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0110 (272) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0x7E, // 0x0120 (288) pixels
0x1F, 0x07, 0x03, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF4, 0xFA, 0xFD, 0x7E, // 0x0130 (304) pixels
0x1F, 0x0F, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xC0, 0xFF, // 0x0140 (320) pixels
0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0150 (336) pixels
0x01, 0x03, 0xFF, 0xFF, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x3F, 0xFC, 0xF8, // 0x0160 (352) pixels
0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0170 (368) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, // 0x0180 (384) pixels
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0190 (400) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFE, 0xFF, 0xFF, 0x01, 0x00, // 0x01A0 (416) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF8, 0xFE, 0xFF, 0xFF, 0x0F, 0x03, 0x00, 0x00, // 0x01B0 (432) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, // 0x01C0 (448) pixels
0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x01D0 (464) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, // 0x01E0 (480) pixels
0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x01F0 (496) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, // 0x0200 (512) pixels
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0210 (528) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7F, 0xFF, 0xFF, 0xC0, 0x00, // 0x0220 (544) pixels
0x00, 0x00, 0xC0, 0xF0, 0xF8, 0x3C, 0x1C, 0x8F, 0x8F, 0xDF, 0xFF, 0xFF, 0xF0, 0xC0, 0x00, 0x80, // 0x0230 (560) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x60, 0xE0, 0xE0, // 0x0240 (576) pixels
0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xC0, // 0x0250 (592) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, // 0x0260 (608) pixels
0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0270 (624) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, // 0x0280 (640) pixels
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0290 (656) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1F, 0x7E, // 0x02A0 (672) pixels
0xF8, 0xF0, 0xC0, 0x87, 0x0F, 0x0F, 0x1C, 0x1D, 0x19, 0x19, 0x39, 0x39, 0x3F, 0x3F, 0x7F, 0xFE, // 0x02B0 (688) pixels
0xF8, 0xF4, 0xE8, 0xE8, 0xD8, 0xB0, 0xC0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0xFF, // 0x02C0 (704) pixels
0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x1C, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xE0, 0xF0, 0x7F, 0x3F, 0x1F, // 0x02D0 (720) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x80, 0xE0, 0xF0, 0xFC, 0x3F, 0x1F, // 0x02E0 (736) pixels
0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x02F0 (752) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, // 0x0300 (768) pixels
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0310 (784) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0320 (800) pixels
0x00, 0x01, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0x38, 0x70, 0xF0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, // 0x0330 (816) pixels
0x00, 0x01, 0x01, 0x83, 0x83, 0x07, 0x07, 0x07, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x03, 0x03, // 0x0340 (832) pixels
0x03, 0x03, 0x01, 0x00, 0x80, 0xC0, 0x80, 0x80, 0xC0, 0xC1, 0xE1, 0x60, 0x40, 0x40, 0x80, 0xA0, // 0x0350 (848) pixels
0xD0, 0xD0, 0xE0, 0xE0, 0x70, 0x7A, 0x3C, 0x1C, 0x1E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, // 0x0360 (864) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x0370 (880) pixels
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, // 0x0380 (896) pixels
0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 0x0390 (912) pixels
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 0x03A0 (928) pixels
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x83, 0x83, 0x83, // 0x03B0 (944) pixels
0x87, 0x87, 0x87, 0x8E, 0x8E, 0x8E, 0x8F, 0x9C, 0x9D, 0x9D, 0x9D, 0x9D, 0x9C, 0x9C, 0x9C, 0x9C, // 0x03C0 (960) pixels
0x9C, 0x9C, 0x9D, 0x9D, 0x9D, 0x9D, 0x8D, 0x8F, 0x8E, 0x8E, 0x8E, 0x87, 0x87, 0x87, 0x83, 0x83, // 0x03D0 (976) pixels
0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x90, 0x80, 0x80, // 0x03E0 (992) pixels
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 0x03F0 (1008) pixels
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, // 0x0400 (1024) pixels
};
// 2. CONFIGURACIÓN DE PINES Y VARIABLES
// -------------------------------------
const int entrada1 = 2; // Botón 1: Emoji Sonriente (digita 2 arduino)
const int entrada2 = 3; // Botón 2: Emoji Sorprendido (digita 3 arduino)
const int entrada3 = 4; // Botón 3: Emoji Enojado (digita 4 arduino)
const int entrada4 = 5; // Botón 4: Emoji Juguetón (digita 5 arduino)
void setup() {
// Inicialización OLED
myOLED.begin();
myOLED.invert(false); //Controla la inversión de colores de la pantalla
// Configuración pines con pull-up interno (tambien se puede usar solo pinMode(entrada1, INPUT pero requiere mas hardware como en mi video);
pinMode(entrada1, INPUT_PULLUP);
pinMode(entrada2, INPUT_PULLUP);
pinMode(entrada3, INPUT_PULLUP);
pinMode(entrada4, INPUT_PULLUP);
// Mensaje inicial
mostrarMensajeInicial(); //FUNCION DE MOSTRAR EL MENSAJE INICIAL
}
void loop() {
// Lectura de botones (LOW = presionado)
bool btn1 = !digitalRead(entrada1);
bool btn2 = !digitalRead(entrada2);
bool btn3 = !digitalRead(entrada3);
bool btn4 = !digitalRead(entrada4);
// Mostrar emoji correspondiente
if (btn1) mostrarEmoji(sonriente128x64);
else if (btn2) mostrarEmoji(sorprendido128x64);
else if (btn3) mostrarEmoji(enojado128x64);
else if (btn4) mostrarEmoji(jugueton128x64);
else mostrarMensajeInicial();
delay(100); // Tiempo de Anti-rebote básico
}
// 3. FUNCIONES AUXILIARES
// ------------------------
void mostrarEmoji(const uint8_t* emoji) { //funcion de mostrar emoji cargado
myOLED.clrScr();
myOLED.drawBitmap(0, 0, emoji, 128, 64);
myOLED.update();
}
void mostrarMensajeInicial() {
myOLED.clrScr();
myOLED.setFont(SmallFont);
myOLED.print("Seleccione emoji", CENTER, 32);
myOLED.update();
}
Conexión Pull-Up para Botones
¿Qué es una Conexión Pull-Up?
Para leer de forma fiable el estado de los botones, utilizamos una configuración de "pull-up". Esto significa que conectamos una resistencia (generalmente de 10kΩ) entre el pin del botón y la alimentación de 5V. Cuando el botón no está presionado, el pin de entrada del Arduino se mantiene en un estado HIGH (5V). Al presionar el botón, se conecta el pin directamente a tierra (GND), llevando el estado a LOW (0V). Esto asegura una lectura definida tanto cuando el botón está presionado como cuando no lo está.
En el código, las líneas pinMode(buttonPinUp, INPUT_PULLUP); configuran los pines de los botones para utilizar la resistencia pull-up interna del Arduino, simplificando el circuito externo.
Diagrama del Circuito (Activado por botones)
Este diagrama muestra la conexión básica de la pantalla OLED a los pines I2C del Arduino (SDA y SCL) y la conexión de los tres botones a los pines digitales 2, 3 y 4, utilizando la configuración pull-up interna.
¡Botones de Emociones para Mascota Virtual en Acción! (Video)
Recuerda activar la mejor calidad en youtube, para mejor visualizacion del video
Echa un vistazo a este breve video para ver esta primera parte del proyecto funcionando, mostrando la inicialización de la pantalla y la preparación para la interacción con los botones.