hola estoy necesitando ayuda me quede trabado con el código , estoy tratando de poner un menú para poder elegir los kg de corte (ejemplo si esta en 25kg , bajarlo a 20kg desde el menú)
//#include <SoftwareReset.hpp> //boton de reset para usar de tara
#include <Wire.h> // libreria de comunicacion por I2C
#include <LiquidCrystal_I2C.h> // libreria para LCD por I2C
#include "HX711.h"
LiquidCrystal_I2C lcd (0x27,20,4); //PANTALLA DE LCD
#define DEBUG_HX711
// Parámetro para calibrar el peso y el sensor
//
#define CALIBRACION 94812.00 // LA CALIBRACION SE SACA DE OTRO PROGRAMA DE HX711 CON UN PESO CONOCIDO
//#define CALIBRACION 143900 // Celda Ponis
//#define CALIBRACION 124000 // celda arduino 20kg
// Pin de datos y de reloj
byte pinData = A0;
byte pinClk = A4;
const int Rele = 9;
float peso = 0; // SE USA PARA DAR UNA FUNCION SI EL PESO ES MENOR O MAYOR O IGUAL DA UNA ORDEN
byte led = 5;
byte led1 =3;
byte upButton =A1;
byte downButton =A3;
byte selectButton =A2;
bool xRiseSelecButton=0;
bool xRiseUpButton=0;
bool xRiseDownButton=0;
int Menu=0;
// Objeto HX711
HX711 bascula;
void setup() {
Serial.begin(9600);
lcd.setBacklight(HIGH); // habilita iluminacion posterior de LCD
lcd.begin(20, 4);
lcd.setCursor (0 , 0);
// ("---Esperando peso---");
lcd.print ("---Esperando peso---");
// (" REAL DESEADO ");
// ("0.000 Gr | 0.000 Gr);
// ("---Esperando peso---");
// ("---Esperando peso---");
delay(2000);
lcd.clear();
Serial.begin(9600);
pinMode (upButton ,INPUT_PULLUP);
pinMode (downButton ,INPUT_PULLUP); //COMANDO PARA PRENDER EL RELE
pinMode (selectButton ,INPUT_PULLUP); //COMANDO PARA PRENDER EL RELE
pinMode (Rele , OUTPUT); //COMANDO PARA PRENDER EL RELE
pinMode ( led , OUTPUT);//COMANDO PARA PRENDER EL LED ROJO
pinMode (led1, OUTPUT);//COMANDO PARA PRENDER EL LED VERDE
// Iniciar sensor
bascula.begin(pinData, pinClk);
// Aplicar la calibración
bascula.set_scale(CALIBRACION);
// Iniciar la tara
// No tiene que haber nada sobre la balanza
bascula.tare();
}
void loop()
{
if (digitalRead(selectButton))
{
if (xRiseSelecButton==0)
{
Menu++;
xRiseSelecButton=1;
if (Menu>1)
{
Menu=0;
}
}
}
else xRiseSelecButton=0;
if (Menu==0)ControlPeso();
if (Menu==1)SeleccionPeso();
Serial.println(Menu);
}
void ControlPeso(){
float peso = bascula.get_units(8); // cantidad de veces que pesa (), digitos que se muestran 3. antes tenia en 0 la cantidad de pesadas
lcd.setCursor(0, 0);
lcd.print(" REAL | DESEADO ");
lcd.setCursor(0, 1);
lcd.print(peso, 4); // cantidad de caracteres que se muestran del float
lcd.print (" Gr");
lcd.print ("|");
lcd.setCursor(11, 1);
lcd.print(peso, 4); // cantidad de caracteres que se muestran del float
lcd.print (" Gr");
lcd.setCursor (0, 2);
lcd.print (" MEZCLA ");
if (peso >= 1.000 || digitalRead(Rele)== HIGH)
{ //SI LA BOLSA PESA + DE 25KG CORTA
digitalWrite(Rele, HIGH); // SE APAGA EL RELE
digitalWrite (led, HIGH); // SE PRENDE LED ROJO
digitalWrite (led1, LOW); // SE APAGA LED VERDE
}
if (peso < 0.999){ //SI EL PESO ES - DE 25KG SIGUE CARGANDO
digitalWrite (Rele,LOW); // SE PRENDE RELE
digitalWrite(led , LOW); //SE PRENDE LED ROJO QUE FALTA PESO
digitalWrite(led1 , 1); //SI ESTA EN 25KG SE APAGA LUZ VERDE
}
}
void SeleccionPeso(){
lcd.setCursor (0, 2);
lcd.print ("Seleccion de Peso ");
}