#include <time.h>
#include <TM1637.h>
#include <WiFi.h>
#define Led 32
#define Pulsador 4
#define hallPin 33
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
const int CLK = 18;
const int DIO = 19;
TM1637 disp(CLK, DIO);
const char* NTP_SERVER = "pool.ntp.org";
const int ZONA_HORARIA = -3;
const int DESP_HORA_VERANO = 0;
char timeHour[3];
volatile int pulseCount = 0;
int hora = 0;
unsigned long lastMillis = 0;
unsigned long interval = 1000; // 1 segundo
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
pinMode(hallPin, INPUT);
pinMode(Led, OUTPUT);
pinMode(Pulsador, INPUT_PULLUP);
disp.init();
disp.set(BRIGHT_TYPICAL);
// Interrupción para contar los pulsos
attachInterrupt(hallPin, countPulse, FALLING);
WiFi.begin(ssid, pass);
Serial.print("Conectando a WiFi ");
Serial.print(ssid);
// Espera por conexion
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println(" Conectado!");
Serial.print("Dirección IP: ");
Serial.println(WiFi.localIP());
configTime(ZONA_HORARIA*3600, DESP_HORA_VERANO*3600, NTP_SERVER);
printLocalTime();
}
void loop()
{
digitalWrite(Led, digitalRead(hallPin));
/*unsigned long currentMillis = millis();
while (digitalRead(Pulsador)==false)
{
printLocalTime();
mostrar(hora);
}
if (currentMillis - lastMillis >= interval) {
// Calcular las RPM
int rpm = (pulseCount * 60) / (interval / 1000);
//rpm=600;
// Mostrar las RPM en el monitor serial
Serial.print("RPM: ");
Serial.println(rpm);
mostrar(rpm);
// Resetear el contador y el tiempo
pulseCount = 0;
lastMillis = currentMillis;
}*/
}
/*void countPulse() {
// Incrementar el contador de pulsos
pulseCount++;
}
void mostrar(int nro){
disp.display(0, (nro / 1000) % 10);
disp.display(1, (nro / 100) % 10);
disp.display(2, (nro / 10) % 10);
disp.display(3, nro % 10);
}
void printLocalTime() {
struct tm timeinfo;
if (!getLocalTime(&timeinfo)) {
Serial.println("Connection Err");
return;
}
Serial.println(&timeinfo, "%H:%M:%S");
Serial.println(&timeinfo, "%d/%m/%Y %Z");
//disp.display(99, 99, true)
hora = (timeinfo.tm_hour)*100 + (timeinfo.tm_min);
}*/