#include <Wire.h> // para compatibilizar com conexões I2C
#include <LiquidCrystal_I2C.h> // biblioteca para uso do desplay
LiquidCrystal_I2C lcd(0x27, 16, 2); // iniciando o objeto lcd
int j; // var para contar o número de apertos
bool apertou; // verifica os apertos no botão
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
pinMode(2, OUTPUT);
pinMode(0, OUTPUT);
pinMode(4, INPUT_PULLUP);
pinMode(35, INPUT); // entrada do potenciometro
lcd.init();
lcd.backlight();
lcd.setCursor(2, 0);
lcd.clear();
lcd.print("Bem vindo!");
delay(1000);
lcd.clear();
lcd.setCursor(0, 0);
}
void loop() {
static int i;
// static long j; // TROQUEI PELO INT PQ DAVA VALORES NEGATIVOS
static long ti = 0; // var para contar o tempo ( static = o valor da var é guardado)
static unsigned long repique = 0;
long tf = millis(); // var p contar o tempo
static bool estado;
static bool apertou = digitalRead(4);
float percpot = map(analogRead(35), 0, 4095, 1, 100);
/* apertou = pulseIn(4, LOW);
if (apertou > 300) j++; // (apertou == LOW) = (!apertou) = (apertou == false) = (apertou == 0)
*/
if ((millis() - ti) > 3000 / percpot) { // caso tenha se passado 300ms dividido por percpot, muda o estado do LED
digitalWrite(2, estado);
digitalWrite(0, !estado);
estado ^= HIGH;
ti = millis(); //ajusta ti para recomeçar uma nova contagem
if (!estado) i++;
}
if (apertou and !digitalRead(4) and (millis() - repique) > 300) {
j++;
}
lcd.setCursor(0, 0);
lcd.print("Ciclos: ");
lcd.println(String(i) + " " + String(percpot,0) + "% ");
lcd.setCursor(0, 1);
lcd.print("Apertos: ");
lcd.println(j);
}
// attachInterrupt(digitalPinToInterrupt(3), Acao_Botao, FALLING);