#include <Adafruit_SSD1306.h>
#include <Wire.h>
#define SDA 128 // Ancho de la pantalla OLED en pixeles
#define SCL 64 // Alto de la pantalla OLED en pixeles
Adafruit_SSD1306 display(SDA, SCL, &Wire, -1);
#define Led 19 //DECLARO LOS PINES
#define Button 34 //DECLARO LOS PINES
#define Switch1 26 //DECLARO LOS PINES
boolean estadoButton; //AQUÍ SE GUARDA EL DATO DEL BOTON 1/0
boolean estadoSwitch;//AQUÍ SE GUARDA EL DATO DEL INTERRUPTOR 1/0
void setup() {
// Inicialización de la pantalla OLED
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
// Si hay un error al inicializar la pantalla, muestra un mensaje en el monitor serie
Serial.println(F("SSD1306 failed to initialize"));
for(;;); // Se detiene el programa
}
// Limpia la pantalla
display.clearDisplay();
pinMode(Switch1, INPUT);//Configura "INTERRUPTOR" como entrada
pinMode(Led, OUTPUT); //Configura "LED_ROJO" como salida
pinMode(Button, INPUT);//Configura "BOTON" como entrada
}
void loop() {
display.setTextSize(2); // Tamaño del texto
display.setTextColor(SSD1306_WHITE);// Color del texto
display.setCursor(0, 10); // Posición del texto
estadoSwitch = digitalRead(Switch1); //ALMACENO EL ESTADO DEL INTERRUPTOR
if(estadoSwitch == HIGH){//PREGUNTAMOS POR EL ESTADO DEL INTERRUPTOR
estadoButton = digitalRead(Button); //ALMACENO EL ESTADO DEL BOTON
if(estadoButton == HIGH){ //PREGUNTAMOS POR EL ESTADO DEL BOTON
EncenderLed(); //LLamamos a la subfuncion para que se ejecute el codigo
}else{ //Si no
ApagarLed(); //Lamamos a la subfuncion para apagar el led
}
}
}
void EncenderLed(){ //Subfunción para encender el Led
digitalWrite(Led, HIGH);
display.clearDisplay();
display.println("ENCENDIDO");// Texto a mostrar
delay(1000);
}
void ApagarLed(){
digitalWrite(Led, LOW);
// Actualiza la pantalla
display.display();
display.clearDisplay();
display.println("APAGADO");// Texto a mostrar
delay(100); // Espera dos segundos antes de volver a escribir el texto
}