#include <LiquidCrystal.h>
#define trg A0
#define ech A1
int dis =0;
int t=0;
int x[2];//distance
int dx =0 ; //delta dist
int tim[2];//time
double dt =0;//delta time
int v=0;//spead
int s=0; // step cond
int coun=0;//time
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup() {
lcd.begin(16, 2);
lcd.print("distance: ");
Serial.begin(9600);
pinMode(trg, OUTPUT);
pinMode(ech, INPUT);
}
void loop() {
digitalWrite(trg, LOW);
delayMicroseconds(5);
digitalWrite(trg, HIGH);
delayMicroseconds(10);
digitalWrite(trg, LOW);
t=pulseIn(ech,HIGH);
dis=t/57;
dis=(dis*.975)+1;//معامل تصحيح الاشاره
if (s%2){
x[0]=dis;
}else{
x[1]=dis;
}
v=1000*dx/dt;
//**// warning cause
if(dis<=10){
lcd.setCursor(0,1);
lcd.print("warnning");
}else{
lcd.setCursor(0,1);
lcd.print(" ");
}/**/
coun=millis();
dx=x[0]-x[1];
dx=abs(dx);// absolut delta of distance
//Serial.println(dx); // for checking
/**result print **/
lcd.setCursor(9,0);
lcd.print(dis);
lcd.print(" ");
/****///
if (s==0){
s=1;
}else if (s=1){
s=0;
}
if (s%2){
tim[0]=coun;
}else{
tim[1]=coun;
}
dt=tim[0]-tim[1];
dt=abs(dt)*.001;// absolut delta of time in
if (dt!=0){//for not making delta time =0
v=dx/dt;
lcd.setCursor(9,1);
lcd.print("v=");
lcd.print(v);
lcd.print(" ");
}
delay(200);
coun=millis();
}