#include <HCSR04.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <WiFi.h>
#include <ThingSpeak.h>
const char* ssid = "_Sillas_"; // SSID da rede Wi-Fi
const char* password = "Sorocaba2"; // Senha da rede Wi-Fi
// Defina seu canal e a chave de gravação do ThingSpeak
unsigned long myChannelNumber = 1; // Seu canal ThingSpeak
const char* myWriteAPIKey = "TOM36IO6ABUIWJMY"; // Sua chave de gravação ThingSpeak
float distancia;
float porcentagem;
WiFiClient client;
LiquidCrystal_I2C lcd(0x27, 16, 2);
UltraSonicDistanceSensor distanceSensor(4, 2);
void setup()
{
Serial.begin(115200); // Inicializa a comunicação serial com o PC
lcd.init();
lcd.backlight();
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Conectando ao WiFi...");
}
Serial.println("Conectado ao WiFi");
ThingSpeak.begin(client);
}
void loop()
{
distancia = 17 - distanceSensor.measureDistanceCm();
Serial.print("Distância do sensor: ");
Serial.print(distanceSensor.measureDistanceCm());
Serial.print(" Altura da lixeira: ");
porcentagem = distancia * 100 / 17;
if (distancia < 0)
{
distancia = 0;
}
if (porcentagem < 0)
{
porcentagem = 0;
}
lcd.setCursor(0, 0);
lcd.print("Valor da Lixeira");
lcd.setCursor(0, 1);
if (distancia <= 0 || distanceSensor.measureDistanceCm() < 0)
{
lcd.print("Lixeira Aberta..");
}
if (distancia >= 17)
{
if(distancia == 18){
lcd.print("Lixeira Aberta..");
}else
lcd.print("Lixeira Cheia...");
}
else
{
lcd.print(" "); // Limpa a linha
lcd.setCursor(0, 1);
lcd.print(distancia);
lcd.setCursor(5, 1);
lcd.print("cm");
lcd.setCursor(8, 1);
lcd.print(" ");
lcd.setCursor(10, 1);
lcd.print(porcentagem);
lcd.setCursor(15, 1);
lcd.print("%");
}
Serial.println(distancia); // Envia a distância para o Serial Monitor
ThingSpeak.setField(1, distancia);
ThingSpeak.setField(2, porcentagem);
int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
if (x == 200) {
Serial.println(" Atualização bem-sucedida.");
} else {
Serial.println(" Erro ao enviar dados para ThingSpeak. Código: " + String(x));
}
delay(20000);
}