#include <Ultrasonic.h>
#include <WiFi.h>
#include <Ultrasonic.h>
#include "ThingSpeak.h"
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
#define WIFI_CHANNEL 6
int status = WL_IDLE_STATUS;
WiFiClient client;
const int myChannelNumber = 2424257;
const char* myApiKey = "PHBKCU1MII9DSDIO";
const char* server = "api.thingspeak.com";
int TRIG = 12;
int ECHO = 14;
int distancia_anterior = -1;
int led = 4;
int contador = 1;
Ultrasonic ultrasonic(TRIG, ECHO);
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
pinMode(led, OUTPUT);
conectawifi();
}
void loop() {
delay(1500);
int distancia = ultrasonic.read();
contador = distancia;
if (distancia != distancia_anterior)
{
while (contador < 100)
{
distancia_anterior = distancia;
digitalWrite(led, HIGH);
delay (1000);
digitalWrite(led, LOW);
delay (1000);
Serial.print("A distância do objeto mais próximo é: ");
Serial.print(distancia);
Serial.println(" cm.");
Serial.println("Aviso, essa distância passo do limite de segurança!");
distancia = ultrasonic.read();
ThingSpeak.setField(1, distancia);
int x = ThingSpeak.writeFields(myChannelNumber, myApiKey);
if (x == 200) {
Serial.println("Dato enviado com sucesso");
} else {
Serial.println("Erro de envio" + String(x));
}
Serial.println("Aviso, essa distância passo do limite de segurança!");
contador = distancia;
}
if (distancia >= 100)
{
distancia_anterior = distancia;
int distancia_metros = distancia/100;
int distancia_cm = distancia%100;
Serial.print("A distância do objeto mais próximo é: ");
Serial.print(distancia_metros);
Serial.print(" metros e ");
Serial.print(distancia_cm);
Serial.println(" centimetros.");
}
while (contador < 100)
{
distancia = ultrasonic.read();
ThingSpeak.setField(1, distancia);
int x = ThingSpeak.writeFields(myChannelNumber, myApiKey);
if (x == 200) {
Serial.println("Dato enviado com sucesso");
} else {
Serial.println("Erro de envio" + String(x));
}
Serial.println("Aviso, essa distância passo do limite de segurança!");
contador = distancia;
}
ThingSpeak.setField(1, distancia);
int x = ThingSpeak.writeFields(myChannelNumber, myApiKey);
if (x == 200) {
Serial.println("Dato enviado com sucesso");
} else {
Serial.println("Erro de envio" + String(x));
}
}
}
void conectawifi() {
WiFi.begin(WIFI_SSID, WIFI_PASSWORD, WIFI_CHANNEL);
Serial.print("Conectando ao WiFi ");
Serial.print(WIFI_SSID);
// Aguarda a conexão
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println(" Conectado!");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
}