Soy profesor y querria hacer un bascula conectado a un plc Siemens para mis alumnos. El codigo que he realizado es el que he pegado al final, pero me da error lo ultimo del void loop y mas exactamente esto de a continuacion:
// Comprobar que el peso ha sido alcanzado
if (peso <= 240)
digitalWrite(rele,1);
else
digitalWrite(rele,0);
Alguien me puede ayudar, pues soy novato en este mundillo
Un saludo
Codigo completo
//Incluye las librerías
#include "HX711.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <EEPROM.h>
//Define las variables globales
byte DT=3;
byte CLK=2;
byte calibracion = 7;
byte rele=9;
byte tara = 5;
int peso_conocido = 500;
long escala;
//Crear el objeto lcd dirección 0x3F y 16 columnas x 2 filas
LiquidCrystal_I2C lcd(0x27,16,2);
//Crear el objeto balanza
HX711 balanza;
//Función de Anti-debounce (Evitar el rebote del pulsador)
void anti_debounce(byte boton){
delay(100);
while(digitalRead(boton)); //Anti-Rebote
delay(100);
}
//Función de calibración y ajuste
void calibration(){
//int i = 0,cal=1;
long adc_lecture;
// Escribimos el Mensaje en el LCD
lcd.setCursor(2, 0);
lcd.print("Calibracion de");
lcd.setCursor(4, 1);
lcd.print("Balanza");
delay(1500);
balanza.read();
balanza.set_scale(); //La escala por defecto es 1
balanza.tare(20); //El peso actual es considerado Tara.
lcd.clear();
//Inicia el proceso de calibración
lcd.setCursor(1, 0);
lcd.print("Peso Conocido:");
lcd.setCursor(1, 1);
lcd.print(peso_conocido);
lcd.print(" g ");
//Lee el valor del HX711
adc_lecture = balanza.get_value(100);
//Calcula la escala con el valor leido dividido el peso conocido
escala = adc_lecture / peso_conocido;
//Guarda la escala en la EEPROM
EEPROM.put( 0, escala );
delay(100);
lcd.clear();
}
void setup() {
//Configura la balanza
balanza.begin(DT, CLK);
//Configura los botones
pinMode(calibracion, INPUT);
pinMode(tara, OUTPUT);
pinMode(rele, OUTPUT);
// Inicializar el LCD
lcd.init();
//Encender la luz de fondo.
lcd.backlight();
//Lee el valor de la escala en la EEPROM
EEPROM.get( 0, escala );
//Pregunta si se desea entrar en calibración
if(digitalRead(calibracion))
calibration();
//Mensaje inicial en el LCD
lcd.setCursor(1, 0);
lcd.print("Retire el Peso");
lcd.setCursor(1, 1);
lcd.print("y Espere");
delay(2000);
balanza.set_scale(escala); // Establecemos la escala
balanza.tare(20); //El peso actual es considerado Tara.
lcd.clear();
lcd.setCursor(1, 0);
lcd.print("Listo....");
delay(1000);
lcd.clear();
}
void loop() {
float peso;
//Mide el peso de la balanza
peso = balanza.get_units(10);
//Muestra el resultado
lcd.setCursor(1, 0);
lcd.print("Peso: ");
lcd.print(peso,0);
lcd.println(" g ");
delay(5);
//programa para tarar
if(digitalRead(tara)){
anti_debounce(tara);
balanza.tare(10); //El peso actual es considerado Tara.
}
}
//Comprobar que la tara ha sido completada con exito
if (balanza.getTareStatus() == true) {
digitalWrite(tare,1);
Serial.println("Tara completada");
lcd.setCursor(0,1);
lcd.print("tara completada");
delay(1500);
}
else
digitalWrite(tare,0);
// Comprobar que el peso ha sido alcanzado
if (peso <= 240)
digitalWrite(rele,1);
else
digitalWrite(rele,0);
