#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "HX711.h"
// Pines
#define DT_PIN 6
#define SCK_PIN 7
#define RELAY_PIN 12
#define BUZZER_PIN 11
#define LED_ROJO 13
HX711 scale;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
pinMode(RELAY_PIN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(LED_ROJO, OUTPUT);
lcd.init();
lcd.backlight();
scale.begin(DT_PIN, SCK_PIN);
// Mensaje de bienvenida
lcd.setCursor(0,0);
lcd.print("SISTEMA CONTROL");
lcd.setCursor(0,1);
lcd.print("CARGA ACTIVO");
delay(2000);
lcd.clear();
}
void loop() {
// En el simulador, el valor se ajusta con el slider del HX711
// Simularemos que el valor obtenido son Kilos directamente
long lectura = scale.get_units(1);
float peso = lectura / 420.00; // Factor de calibración simulado
lcd.setCursor(0, 0);
lcd.print("PESO: ");
lcd.print(peso);
lcd.print(" KG ");
if (peso > 100.0) { // LÍMITE DE SEGURIDAD
// ACCIÓN DE SEGURIDAD
digitalWrite(RELAY_PIN, LOW); // ABRE el circuito (Apaga motor)
digitalWrite(LED_ROJO, HIGH);
tone(BUZZER_PIN, 1000); // Alarma sonora
lcd.setCursor(0, 1);
lcd.print("!!!SOBRECARGA!!!");
} else {
// ESTADO NORMAL
digitalWrite(RELAY_PIN, HIGH); // CIERRA el circuito (Motor puede funcionar)
digitalWrite(LED_ROJO, LOW);
noTone(BUZZER_PIN);
lcd.setCursor(0, 1);
lcd.print("MOTOR: OK ");
}
delay(200);
}