Estoy realizando un pequeño proyecto que consiste en medir la velocidad de cualquier objeto que pase a través de dos barreras IR.
Inicialmente estoy realizando las pruebas sustituyendo las barreras por dos pulsadores y poder comprobar el funcionamiento del programa, para ello utilizo como valor estandar de distancia 100 milímetros.
En estos momentos la información que muestra la pantalla son dos datos, en la línea superior muestra la velocidad y en la inferior el tiempo.
El problema que quisiera solucionar es la mejora en la precisión de los cálculos, ya que al utilizar una distancia de separación entre el sensor 1 y 2 de 100 milímetros que es el valor que quiero usar la velocidad que muestra es 0.
¿habría alguna forma de solucionarlo?
#include <LiquidCrystal.h>
//Definiendo los pines que se van a usar del LCD
LiquidCrystal lcd(12, 11, 10, 9, 8 ,7);
int espacio= 100; //distancia inicial entre sensores en milimetros
int sensori= 3; // sensor de inicio
int sensorf = 2; // sensor de fin
unsigned long tiempo_i; // tiempo de inicio de medicion
unsigned long tiempo_t; // diferencia de tiempo del movimiento
float velocidad; // nùmero de coma flotante para mayor precisión
void setup()
//lcd.begin(16, 2);
{
lcd.begin(16, 2);
lcd.setCursor(0, 1);
pinMode(sensori,INPUT);
pinMode(sensorf, INPUT);
}
void loop()
{
lcd.print("comience... ");
while (!digitalRead(sensori)) { }
tiempo_i=millis();
while (!digitalRead(sensorf)) { }
tiempo_t = millis()-tiempo_i;
velocidad=espacio/tiempo_t;
lcd.clear();
lcd.print("Velocidad: ");
lcd.println(velocidad);
lcd.setCursor(0, 1);
lcd.print("Tiempo: ");
lcd.println(tiempo_t);
delay (4000);
lcd.clear();
}