#define BLYNK_TEMPLATE_ID "TMPL2D7SweUfb"
#define BLYNK_TEMPLATE_NAME "Led"
#define BLYNK_AUTH_TOKEN "BcnGf_LxUHPmf04GBreVrZSi-Jvfqqd4"
#include <BlynkSimpleEsp32.h>
#include <WiFi.h>
#include <Wire.h>
#include <ESP32Servo.h>
#include <LiquidCrystal_I2C.h>
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
const int ledPin = 2;
const int servoPin = 13;
const int botaoPin = 0;
Servo myservo;
LiquidCrystal_I2C lcd(0x27, 16, 2);
BlynkTimer timer;
bool iniciarAlimentacao = false;
bool alimentando = false;
void realizarAlimentacao() {
lcd.clear();
Serial.println("⏳ Iniciando alimentação...");
digitalWrite(ledPin, HIGH);
lcd.setCursor(0, 0);
lcd.print("Alimentando...");
myservo.write(90);
timer.setTimeout(1000L, []() {
myservo.write(0);
lcd.clear();
digitalWrite(ledPin, LOW);
alimentando = false;
Serial.println("✅ Alimentação concluída.");
lcd.print("Concluido.");
delay(2000);
lcd.clear();
});
}
void setup() {
Serial.begin(115200);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
pinMode(ledPin, OUTPUT);
pinMode(botaoPin, INPUT_PULLUP);
digitalWrite(ledPin, LOW);
myservo.attach(servoPin);
myservo.write(0);
lcd.init();
lcd.backlight();
lcd.print("Grupo 13 IoT...");
}
void loop() {
Blynk.run();
timer.run();
// Acionamento via botão físico
if (digitalRead(botaoPin) == LOW && !alimentando) {
iniciarAlimentacao = true;
delay(500); // delay
}
// Acionamento via botão Blynk (controlando o LED fisicamente)
if (digitalRead(ledPin) == HIGH && !alimentando) {
iniciarAlimentacao = true;
}
// Executa alimentação se sinalizado
if (iniciarAlimentacao && !alimentando) {
alimentando = true;
iniciarAlimentacao = false;
realizarAlimentacao();
}
}
Loading
esp32-devkit-c-v4
esp32-devkit-c-v4