#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int bt1 = 14; // Define buttonPin no pino digital 14
int led1 = 13; // Define ledPin no pino digital 13
int bt2 = 19; // Define buttonPin no pino digital 19
int led2 = 18; // Define ledPin no pino digital 18
int estadoButton1 = 0; // Variável responsável por armazenar o estado do botão 1 (ligado/desligado)
int estadoButton2 = 0; // Variável responsável por armazenar o estado do botão 2 (ligado/desligado)
void setup() {
lcd.init();
lcd.backlight();
lcd.print("ESP32 - Projeto");
lcd.setCursor(0, 1);
lcd.print("com display!");
delay(3000);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(bt1, INPUT_PULLUP);
pinMode(bt2, INPUT_PULLUP);
}
void loop() {
estadoButton1 = digitalRead(bt1); // Lê o valor de bt1 e armazena em estadoButton1
estadoButton2 = digitalRead(bt2); // Lê o valor de bt2 e armazena em estadoButton2
if (estadoButton1 == LOW) { // Se bt1 estiver pressionado
digitalWrite(led1, !digitalRead(led1)); // Inverte o estado do LED1
lcd.setCursor(0, 0);
lcd.print("Botao acionado ");
lcd.setCursor(0, 1);
lcd.print("Led1 acionado ");
delay(3000); // Mantém o LED1 ligado por 3 segundos
digitalWrite(led1, LOW); // Desliga o LED1 após 3 segundos
lcd.setCursor(0, 1);
lcd.print("Led1 desligado ");
delay(1000);
}
if (estadoButton2 == LOW) { // Se bt2 estiver pressionado
lcd.setCursor(0, 0);
lcd.print("Botao acionado ");
lcd.setCursor(0, 1);
lcd.print("Led2 piscando ");
for (int i = 0; i < 3; i++) { // Piscar o LED2 três vezes
digitalWrite(led2, HIGH);
delay(500);
digitalWrite(led2, LOW);
delay(500);
}
digitalWrite(led2, LOW); // Desliga o LED2 após as três piscadas
lcd.setCursor(0, 1);
lcd.print("Led2 desligado ");
delay(1000);
}
delay(100); // Intervalo de 100 milissegundos para evitar leituras rápidas
// Limpar o LCD
lcd.clear();
}