#include <LiquidCrystal_I2C.h>
#include <Wire.h>
//declare pin
# define trigPin 9
# define echoPin 10
# define LED1 7 // LED on pin 7
# define LED2 6 // LED on pin 6
# define SW1 3 // SW1 on pin 3
# define SW2 5 // SW2 on pin 5
//declare variable
LiquidCrystal_I2C myLCD(0x27, 16, 2);
int myOUTPUT1 = 2;
unsigned long travelTime;
unsigned long duration;
const int x = 20;
int z;
int y;
void setup()
{
Serial.begin(9600);
pinMode(LED1, OUTPUT); // define LED as output
pinMode(LED2, OUTPUT); // define LED as output
pinMode(trigPin,OUTPUT);
pinMode(echoPin,INPUT);
myLCD.init();
myLCD.backlight();
myLCD.setCursor(3,0);
}
void loop()
{
standby:
myLCD.clear();
myLCD.setCursor(5,0);
myLCD.print("READY");
Serial.println("READY");
digitalWrite(LED1, HIGH); // LED1 on
digitalWrite(LED2, LOW); // LED2 off
myLCD.setCursor(0,1);
myLCD.print("L1 = ON ");
myLCD.setCursor(8,1);
myLCD.print("L2 = OFF");
delay(1000);
if (digitalRead(SW2) == HIGH) // SW2 pressed
for(;;)
{
myLCD.clear();
digitalWrite(LED1, HIGH); // LED1 on
digitalWrite(LED2,HIGH); // LED2 on
digitalWrite(trigPin,LOW); // ready
delay(2);// delay for 2 second
digitalWrite(trigPin,HIGH); // start
delay(10);
digitalWrite(trigPin,LOW); // stop
travelTime = pulseIn(echoPin,HIGH);
duration = travelTime/2;
z = duration*0.0344;
y = (x-z);
Serial.print("HEIGHT = ");
myLCD.setCursor(0,0);
myLCD.print("HEIGHT = ");
Serial.print(y);
Serial.print("cm\n");
myLCD.setCursor(9,0);
myLCD.print(y);
myLCD.setCursor(13,0);
myLCD.print("cm");
myLCD.setCursor(0,1);
myLCD.print("L1 = ON ");
myLCD.setCursor(8,1);
myLCD.print("L2 = ON ");
delay(2000);
if(digitalRead(SW1) == HIGH)// SW1 pressed
{
goto standby;
}
}
}