#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C mylcd(0x27,16,2);
volatile int distance;
float checkdistance_2_3() {
digitalWrite(2, LOW);
delayMicroseconds(2);
digitalWrite(2, HIGH);
delayMicroseconds(10);
digitalWrite(2, LOW);
float distance = pulseIn(3, HIGH) / 58.00;
delay(10);
return distance;
}
void setup(){
pinMode(2, OUTPUT);
pinMode(3, INPUT);
pinMode(1, OUTPUT);
pinMode(7, OUTPUT);
mylcd.init();
mylcd.backlight();
distance = 0;
}
void loop(){
distance = checkdistance_2_3();
mylcd.setCursor(1-1, 1-1);
mylcd.print(String("distance:") + String(String(distance) + String("cm")));
if (0 < distance && distance < 20) {
mylcd.setCursor(1-1, 2-1);
mylcd.print("STOP NOW!");
digitalWrite(1,HIGH);
tone(7,587);
delay(1000);
} else if (20 <= distance && distance < 40) {
mylcd.setCursor(1-1, 2-1);
mylcd.print("ATTENTION");
digitalWrite(1,LOW);
tone(7,587);
delay(50);
digitalWrite(1,HIGH);
noTone(7);
delay(50);
} else if (40 <= distance && distance < 60) {
mylcd.setCursor(1-1, 2-1);
mylcd.print("TAKE A LOOK");
digitalWrite(1,LOW);
tone(7,587);
delay(200);
digitalWrite(1,HIGH);
noTone(7);
delay(200);
} else {
digitalWrite(1,LOW);
mylcd.setCursor(1-1, 2-1);
mylcd.print("REST ASSURED");
}
}