#include <WiFi.h>
#include <ESPping.h>
#include <LiquidCrystal_I2C.h>
#include <time.h>
#define COLUNAS 20
#define LINHAS 4
#define LED 15
const char *ssid = "Wokwi-GUEST";
const char *password = "";
const char* ntpServer = "pool.ntp.org";
const long gmtOffset_sec = -10800;
const int daylightOffset_sec = 0;
LiquidCrystal_I2C lcd(0x27, COLUNAS, LINHAS);
String hostAtual = "";
void setup() {
pinMode(LED, OUTPUT);
Serial.begin(115200);
lcd.init();
lcd.backlight();
WiFi.begin(ssid, password);
lcd.setCursor(0, 0);
lcd.print("Conectando Wi-Fi...");
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nConectado com Sucesso!");
Serial.print("IP Local: ");
Serial.println(WiFi.localIP());
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Aguardando host...");
}
void loop() {
struct tm timeinfo;
if (getLocalTime(&timeinfo)) {
lcd.setCursor(0, 0);
lcd.printf("Hora: %02d:%02d:%02d ", timeinfo.tm_hour, timeinfo.tm_min, timeinfo.tm_sec);
}
if (Serial.available() > 0) {
String input = Serial.readStringUntil('\n');
input.trim();
if (input.length() > 0) {
hostAtual = input;
lcd.setCursor(0, 1);
lcd.print("Host: ");
lcd.setCursor(0, 1);
lcd.print(hostAtual.substring(0, COLUNAS));
lcd.setCursor(0, 2);
lcd.print("Ping: Testando... ");
Serial.print("\nRealizando ping para: ");
Serial.println(hostAtual);
if (Ping.ping(hostAtual.c_str(), 4)) {
int tempoMedio = Ping.averageTime();
Serial.print("Sucesso! Tempo médio: ");
Serial.print(tempoMedio);
Serial.println(" ms");
lcd.setCursor(0, 2);
lcd.printf("Ping: %d ms ", tempoMedio);
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
} else {
Serial.println("Falha: Sem resposta do host.");
lcd.setCursor(0, 2);
lcd.print("Ping: Falha ");
}
}
}
delay(50);
}