#include "HX711.h"
#include <ESP32Servo.h>
HX711 scale;
Servo servo1;
Servo servo2;
const int ledVermelho = 19;
const int ledAmarelo = 5;
const int ledVerde = 16;
const int pirPin = 2;
void setup() {
Serial.begin(9600);
Serial.println("=== INICIALIZANDO ALIMENTADOR AUTOMÁTICO ===");
// Célula de Carga
Serial.println("Inicializando célula de carga...");
scale.begin(26, 25); // DT no pino 26, CLK no pino 25
// Servos
Serial.println("Inicializando servos...");
servo1.attach(21);
servo2.attach(22);
servo1.write(0);
servo2.write(0);
// LEDs
Serial.println("Inicializando LEDs...");
pinMode(ledVermelho, OUTPUT);
pinMode(ledAmarelo, OUTPUT);
pinMode(ledVerde, OUTPUT);
// PIR
Serial.println("Inicializando sensor PIR...");
pinMode(pirPin, INPUT);
Serial.println("=== SISTEMA PRONTO ===\n");
}
void loop() {
// Leitura da célula de carga
float leitura = scale.get_units(1);
float leituraAjustada = (leitura / 2100.0) * 5000.0;
Serial.print("Célula de Carga: ");
Serial.print(leituraAjustada, 1);
Serial.println(" g");
// Leitura do PIR
int movimento = digitalRead(pirPin);
if (movimento == HIGH) {
Serial.println("PIR: MOVIMENTO DETECTADO");
digitalWrite(ledVermelho, HIGH);
} else {
Serial.println("PIR: Sem movimento");
digitalWrite(ledVermelho, LOW);
}
// Teste dos servos - movimento de 0 a 180 graus
for (int angulo = 0; angulo <= 180; angulo += 30) {
servo1.write(angulo);
servo2.write(angulo);
Serial.print("Servos em posição: ");
Serial.print(angulo);
Serial.println("°");
delay(500);
}
// Retorno dos servos de 180 a 0 graus
for (int angulo = 180; angulo >= 0; angulo -= 30) {
servo1.write(angulo);
servo2.write(angulo);
Serial.print("Servos em posição: ");
Serial.print(angulo);
Serial.println("°");
delay(500);
}
// Teste dos LEDs
digitalWrite(ledAmarelo, HIGH);
digitalWrite(ledVerde, HIGH);
Serial.println("LEDs Amarelo e Verde LIGADOS");
delay(1000);
digitalWrite(ledAmarelo, LOW);
digitalWrite(ledVerde, LOW);
Serial.println("LEDs Amarelo e Verde DESLIGADOS");
Serial.println("---\n");
delay(1000);
}