/**
Arduino Calculator
Copyright (C) 2020, Uri Shaked.
Released under the MIT License.
*/
#include <LiquidCrystal.h>
/* Display */
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
#define BUTTON 5
#define SENSOR 3
void setup() {
pinMode(BUTTON,INPUT_PULLUP);
pinMode(SENSOR, INPUT);
pinMode(LED_BUILTIN, OUTPUT);
lcd.begin(16, 2);
lcd.print("HELLO");
Serial.begin(9600);
}
int sensorstate = 0;
int prevsensorstate = 0;
float time = 0;
float prevtime = 0;
float timediff = 1;
float wheelsize = 100; //10cm
//cm/ms * 36 = km/h
float speed = 0.0;
float distance = 0; //km
int rotations = 0;
float totaltime = 0;
void loop() {
sensorstate = digitalRead(SENSOR);
if(sensorstate == LOW && prevsensorstate != sensorstate){
lcd.clear();
prevtime = time;
time = millis();
timediff = time - prevtime;
Serial.println(timediff);
speed = (wheelsize/timediff)*36; //km/h
Serial.println(speed); //km/h
digitalWrite(LED_BUILTIN, HIGH);
lcd.print(speed);
lcd.print("km/h");
distance = (wheelsize * rotations)/100;
lcd.print(" ");
lcd.print(distance);
lcd.print("m");
lcd.setCursor(0,1);
totaltime = millis()/60000;
Serial.println(totaltime);
lcd.print(totaltime);
lcd.print(" min");
rotations++;
}else
{
digitalWrite(LED_BUILTIN, LOW);
}
prevsensorstate = sensorstate;
}