#include <LiquidCrystal.h>
#define trg A0
#define ech A1
int dis =0;
int t=0;
int v=0;//vlocity
int vx =0;//delta x
int a=200; //delay time
int x [10]; // distance array or memmory
int time [10];// time array
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
int s =0 ; //step
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;//معامل تصحيح الاشاره
Serial.println(dis);
x[s]=dis;
//delay(200);
vx=x[s]-x[s+1];//delta x
v=abs(vx)/.1;
delay(100);
/*-------------*/
s=s+1;
lcd.setCursor(9,0);
lcd.print(dis);
lcd.print(" ");
lcd.setCursor(10,1);
lcd.print("v");
lcd.print(v);
lcd.print(" ");
if (s==9){
s=0;
}
if(dis<=10){
lcd.setCursor(0,1);
lcd.print("warnning");
}else{
lcd.setCursor(0,1);
lcd.print(" ");
}
if (v==(dis*10)){//it is imposible state and only happen in error of code
v=0;
lcd.setCursor(10,1);
lcd.print("v");
lcd.print(v);
lcd.print(" ");
}
}