#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
LiquidCrystal_I2C lcd1(0x28,20,4);
#define start 2
#define reset 3
int sensorA=9; //Initalize Pin9 for Sensor A
int sensorB=10; //Initalize Pin10 for Sensor B
unsigned long began, quit, stopwatch;
unsigned long t1=0,t2=0; //Define Time1 and Time2 Variable
float speed; // Define Speed Vairable
float distance=1; //Define Distance value
int i=0;
//int fPause=0;
long lastButton=0;
//long delayBouncing=50;
//long dataPaus=0;
void setup() {
// put your setup code here, to run once:
pinMode(start, INPUT_PULLUP); //Start Button
pinMode(reset, INPUT_PULLUP); //Reset Button
pinMode(sensorA, INPUT_PULLUP); //SensorA Input
pinMode(sensorB, INPUT_PULLUP); //sesnorB Input
pinMode(12, OUTPUT);
//pinMode(BLK,OUTPUT);
//digitalWrite(BLK,HIGH);
lcd.init();
//lcd1.init();
lcd.clear();
//lcd1.clear();
lcd.backlight();
//lcd1.backlight();
//lcd1.setCursor(0,1);
lcd.print("Waiting...");
delay(1000);
lcd.clear();
lcd.print(" KRRI SpeedMeter");
lcd.setCursor(0,1);
lcd.print(" Start / Reset");
//lcd1.print("Next Hello");
}
void loop() {
// put your main code here, to run repeatedly:
if(digitalRead(start)==0){
setup();
//digitalWrite(BLK,);
/*
lcd.clear();
lcd.print("SPEED Checking!");
delay(500);
///lcd.blink();
lcd.clear();
lcd.setCursor(0,1);
lcd.print(digitalRead(start));
delay(1000);
//i++;
//lcd.print(i);
*/
lcd.clear();
lcd.print("SPEED CHECKING!");
blink_led();
while(digitalRead(sensorA)); //Read Sensor A
while(digitalRead(sensorA)==0);
t1=millis(); //Record Time1
while(digitalRead(sensorB)); //Read Sensor B
t2=millis(); //Record Time2
speed=t2-t1;
speed=speed/1000; //convert millisecond to second
speed=(distance/speed); //v=d/t
speed=speed*3600; //multiplay by seconds per hr
speed=speed/1000; //division by meters per km
for(int i=3;i>0;i--){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Train Speed= ");
lcd.setCursor(3,1);
lcd.print(speed);
lcd.print(" km/h ");
}
//lcd.noBacklight();
/*
lcd.clear();
lcd.setCursor(0,1);
lcd.print(digitalRead(sensorA));
lcd.print(" | ");
lcd.print(digitalRead(sensorB));
*/
}else if(digitalRead(reset)==0){
lcd.clear();
setup();
}
}
void blink_led(){
for(digitalRead(start)==0; ;digitalRead(sensorA)==0 ){
digitalWrite(12, HIGH);
delay(500);
digitalWrite(12, LOW);
delay(500);
}
}