Logo Guillermo Vásquez

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

Emoji Sonriente
Emoji Sorprendido
Emoji Enojado
Emoji Jugueton

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

  • Sketch
  • Incluir biblioteca
  • Gestionar biblioteca

  • 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
    
    

    Conexión Pull-Up para Botones

    Diagrama de Conexión Pull-Up

    ¿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)

    Diagrama del Circuito Arduino, OLED y Botones (Parte 1)

    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.