#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1 // No se usa el pin de reset para el OLED
#define SCREEN_ADDRESS 0x3C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
const int boton1Pin = 4;
const int boton2Pin = 2;
const int led1Pin = 16;
const int led2Pin = 17;
bool led1Estado = false;
bool led2Estado = false;
void setup() {
pinMode(boton1Pin, INPUT);
pinMode(boton2Pin, INPUT);
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("Error al iniciar el OLED"));
for(;;);
}
display.display();
delay(2000);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
}
void loop() {
int boton1Estado = digitalRead(boton1Pin);
int boton2Estado = digitalRead(boton2Pin);
if (boton1Estado == HIGH) {
led1Estado = !led1Estado;
digitalWrite(led1Pin, led1Estado ? HIGH : LOW);
}
if (boton2Estado == HIGH) {
led2Estado = !led2Estado;
digitalWrite(led2Pin, led2Estado ? HIGH : LOW);
}
display.clearDisplay();
display.setCursor(0, 0);
display.print("Boton 1: ");
display.println(boton1Estado == HIGH ? "Pulsado" : "No pulsado");
display.print("Boton 2: ");
display.println(boton2Estado == HIGH ? "Pulsado" : "No pulsado");
display.print("LED 1: ");
display.println(led1Estado ? "Encendido" : "Apagado");
display.print("LED 2: ");
display.println(led2Estado ? "Encendido" : "Apagado");
display.display();
delay(100); // Añade un pequeño retraso para evitar lecturas rápidas de los botones
}