// Activar el modo de depuración (debug) si es necesario
#define __DEBUG__
// Incluir las bibliotecas necesarias
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// Definir constantes para las dimensiones de la pantalla OLED
#define ANCHO_PANTALLA 128 // Ancho de la pantalla OLED
#define ALTO_PANTALLA 64 // Alto de la pantalla OLED
// Crear un objeto de la clase Adafruit_SSD1306 para controlar la pantalla
Adafruit_SSD1306 display(ANCHO_PANTALLA, ALTO_PANTALLA, &Wire, -1);
// Definir los pines para el pulsador y el LED
int pinPulsador = 4;
int pinLed = 2;
// Función para mostrar un mensaje en la pantalla
void mostrarMensajeEnPantalla(const char* mensaje) {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println(mensaje);
display.display();
}
void setup() {
// Iniciar la comunicación serial para depuración (si está habilitada)
#ifdef __DEBUG__
Serial.begin(9600);
delay(100);
Serial.println("Iniciando pantalla OLED");
#endif
// Configurar los pines como entrada (pulsador) y salida (LED)
pinMode(pinPulsador, INPUT);
pinMode(pinLed, OUTPUT);
// Inicializar la pantalla OLED en la dirección 0x3C
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
#ifdef __DEBUG__
Serial.println("No se encuentra la pantalla OLED");
#endif
while (true);
}
}
void loop() {
// Comprobar si se presiona el pulsador
if (digitalRead(pinPulsador) == HIGH) {
digitalWrite(pinLed, HIGH);
// Imprimir un mensaje en el puerto serial (si está habilitado)
#ifdef __DEBUG__
Serial.println("Hola Frank");
mostrarMensajeEnPantalla("Hola Frank");
#endif
// Esperar 5 segundos
delay(5000);
// Apagar el LED y borrar la pantalla
digitalWrite(pinLed, LOW);
display.clearDisplay();
display.display();
}
}