Hola, buenos días.
Este es mi primer post y soy nuevo en el foro por lo que me disculpo de antemano si hay alguna cosa mal explicada.Hace poco empecé a trabajar con una celda de carga, el transmisor hx711 y arduino. Comencé con un proyecto para activar un led cuando el peso disminuía y que al pasar 1 segundo se apagara y no se volviera a encender hasta que volviese a disminuir el peso. La báscula está calibrada y detecta perfectamente cualquier cambio de peso.
Para realizar el proyecto utilicé el código que he adjuntado. El problema es que al pasar el tiempo que declaro como intervalo, 10 segundos en este caso,lo puse haciendo pruebas para ver el error, el led se apaga y da igual si cambia el peso o no siempre esta encendido el tiempo que dura el intervalo y luego se apaga.
Muchas gracias por su atención, si tienen alguna idea o saben cual puede ser el problema me gustaría que me ayudasen.
Un saludo.
#include "HX711.h"
#define CLK A0
# define DOUT A1
HX711 scale(DOUT, CLK);
float calibration_factor = -990000.00;// factor variable según la báscula
int Peso = scale.get_units();
int Peso_anterior ;
unsigned long tiempo = 0;
unsigned long intervalo = 10000;//10 segundos
void setup() {
Serial.begin(9600);
scale.set_scale(-990000.00); //COnversor obtenido de la calibración
scale.tare(); // Tara
digitalWrite(13,OUTPUT);// activa el led
}
void loop() {
Serial.print("Peso: ");
Serial.print(scale.get_units(), 3); //número de decimales, en este caso 3
Serial.println(" kg"); //unidad de peso con la que se trabaja: kg , g...
Peso = scale.get_units();
}
if(Peso < Peso_anterior){ // si el disminuye se enciende el led, tras esto igualo el peso al peso anterior
digitalWrite(13,HIGH);
Peso_anterior = Peso;
tiempo = millis();}
else if (Peso > Peso_anterior){
Peso_anterior = Peso;
}
else if (intervalo < millis() - tiempo){
digitalWrite(13,LOW);
}
}
codigo_alternativo.ino (1.12 KB)