Balanza con corte automático

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 ");
    
    
    
    
    }
  
  

Tu publicación fue ** MOVIDA ** a su ubicación actual ya que es más adecuada.

¿Podría también tomarse unos minutos para Aprenda a usar el foro .

Aquí puede encontrar más ayuda general y consejos para la resolución de problemas.

1 Like

Moderador:
Por favor, lee las Normas del foro y edita tu código/error usando etiquetas de código.
Ve a edición, luego selecciona todo el código que has publicado, lo cortas y click en </>


En este foro no se permiten capturas de códigos, debes postear todo el código como te he indicado.
Ademas, tu hilo ha sido movido del foro en inglés porque si posteas en el foro en inglés usa idioma inglés para expresarte.
Si escribes en español debes usar el foro Arduino en español.

hola quería saber si me pueden ayudar ,quería poner un botón que pueda elegir el peso de corte de 25kg o 20kg , muchas gracias , les dejo el código que estoy usando

#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


LiquidCrystal_I2C lcd (0x27,20,4); //PANTALLA DE LCD
#include "HX711.h"

#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 = A1;
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;

// Objeto HX711
HX711 bascula;

void setup() {
  lcd.setBacklight(HIGH);   // habilita iluminacion posterior de LCD
  lcd.begin(20, 4);
  lcd.setCursor (1 , 2);
  lcd.print ("Esperando peso");
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

#ifdef DEBUG_HX711

#endif

  // 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() {

#ifdef DEBUG_HX711

   float  peso = bascula.get_units(8); // cantidad de veces que pesa (), digitos que se muestran 3.  antes tenia en 0 la cantidad de pesadas
#endif

    lcd.setCursor(4, 0);
    lcd.print(peso, 4); // cantidad de caracteres que se muestran del float
    lcd.setCursor(9, 0);
    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
  
}
  
}

Su publicacion se MUEVE a su ubicacion actual ya que es mas adecuada.

Otra vez?
Estás buscado que te sancionen?

Saludos

si a hora publique el código

Hola quiero hacer un corte automático por peso , ejemplo tengo una embolsadora y quiero que cuando la bolsa llegué a 25kg corte , alguien que me ayude ?

Comienza leyendo o viendo videos de como usar el HX711 con las celdas de carga.
Todo lo que busques en Google o tu buscador como Arduino HX711 te dara las respuestas que buscas.

Te dejo uno encontrado como te he dicho:

Recuerda un detalle. Cuando los elementos que embolsas caen debes permitir que lo hagan a un ritmo de mayor a menor o se dosificándolos. De lo contrario la medición no será homogenea.
No se lo que embolsarás, ya que no lo dices pero supongamos que fuera arena.
Si la arena cae de forma súbita, la medición será mayor que la real, requieres que empiece fuerte digamos hasta 15kg y luego cambies la dosificacion de modo que se llene cada vez mas lento hasta alcanzar los 25Kg de ese modo tendrás mejores resultados.

Moderador:
Por favor, lee las Normas del foro y presta atencion al punto 3. Buscar antes de postear

1 Like


Moderador:
Descansa un dia asi reconsideras como funciona este foro.
No hagas dobles o triples posteos.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.