//#include<Wire.h>
#include<LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16 ,2);
int rst = 7;
int rststate = 0;
int svalue = 150;
int c = 0;
int i = 0;
int pd1 = A0;
int pd2 = A1;
int pv1, pv2;
unsigned long t1, t2;
float fps, afps, sum = 0.0, totime;
float x[50];
void setup()
{
pinMode(rst,INPUT);
pinMode(pd1,INPUT);
pinMode(pd2,INPUT);
lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("A = ");
lcd.setCursor(4,0);
lcd.print(afps, 2);
lcd.print(" fps");
lcd.setCursor(14,0);
lcd.print(c, 10);
lcd.setCursor(0,1);
lcd.print("V = ");
lcd.setCursor(4,1);
lcd.print(fps,2);
lcd.print(" fps");
lcd.setCursor(0,0);
}
void loop()
{
rststate = digitalRead(rst);
if(rststate == HIGH)
{
fps = 1.0;
afps = 1.0;
sum = 1.0;
totime = 1.0;
c = 1;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("A = ");
lcd.setCursor(4,0);
lcd.print(afps, 2);
lcd.print(" fps");
lcd.setCursor(14,0);
lcd.print(c, 10);
lcd.setCursor(0,1);
lcd.print("V = ");
lcd.setCursor(4,1);
lcd.print(fps,2);
lcd.print(" fps");
lcd.setCursor(0,0);
}
pv1=analogRead(pd1);
if(pv1<=svalue)
{
t1=micros();
}
pv2=analogRead(pd2);
if(pv2<=svalue)
{
t2=micros();
}
if(pv1<=svalue && pv2<=svalue)
{
totime = t2 - t1;
fps = 357611 / totime; //when distance between two sensors is 10.9 cm/ 0.357611 feet (distance between two sensors in feet and totime in seconds)
c = c + 1;
x[c-1] = fps ;
sum = sum + x[c-1];
afps = sum / c;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("A = ");
lcd.setCursor(4,0);
lcd.print(afps, 2);
lcd.print(" fps");
lcd.setCursor(14,0);
lcd.print(c, 10);
lcd.setCursor(0,1);
lcd.print("V = ");
lcd.setCursor(4,1);
lcd.print(fps,2);
lcd.print(" fps");
}
}