#include <LCD_I2C.h>
LCD_I2C lcd(0x27, 20, 4);
const byte echoPin = 15;
const byte trigPin = 2;
const byte startButtonPin = 0;
const byte resetButtonPin = 4;
float initialDepth;
float currentDepth;
float finalDepth;
void setup() {
Serial.begin(115200);
pinMode(echoPin, INPUT);
pinMode(trigPin, OUTPUT);
pinMode(startButtonPin, INPUT_PULLUP);
pinMode(resetButtonPin, INPUT_PULLUP);
lcd.begin();
lcd.clear();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Initial : ");
lcd.setCursor(0, 1);
lcd.print("Current : ");
lcd.setCursor(0, 2);
lcd.print("Final : ");
}
void loop() {
delay(100);
if(!digitalRead(startButtonPin)) {
initialDepth = readDistance();
lcd.setCursor(10, 0);
lcd.print(initialDepth);
}
currentDepth = readDistance();
lcd.setCursor(10, 1);
lcd.print(currentDepth);
// Serial.println("start button: " + String(!digitalRead(startButtonPin)));
// Serial.println("reset button: " + String(!digitalRead(resetButtonPin)));
}
float readDistance() {
digitalWrite(trigPin, HIGH);
digitalWrite(trigPin, LOW);
return mapIntFloat(pulseIn(echoPin, HIGH), 117, 23527, 2.0, 400.0);
}
float mapIntFloat(int x, int in_min, int in_max, float out_min, float out_max) {
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}