#include <LiquidCrystal.h>
const int rs=13,en=12,d4=10,d5=7,d6=6,d7=5;
LiquidCrystal lcd(rs,en,d4,d5,d6,d7);
int buttonState=0;
#define trigPin 2
#define echoPin 3
#define ledGreen 8
#define ledYellow 9
#define alarm 11
int range=2;
void setup() {
Serial.begin(9600);
pinMode(trigPin,OUTPUT);
pinMode(echoPin,INPUT);
pinMode(ledGreen,OUTPUT);
pinMode(ledYellow,OUTPUT);
digitalWrite(ledGreen,HIGH);
digitalWrite(ledYellow,LOW);
pinMode(4,INPUT);
lcd.begin(16,4);
}
void loop() {
long duration, inches, cm;
digitalWrite(trigPin,LOW);
delayMicroseconds(2);
digitalWrite(trigPin,HIGH);
delayMicroseconds(5);
digitalWrite(trigPin,LOW);
duration=pulseIn(echoPin,HIGH);
inches=microsecondsToInches(duration);
cm=microsecondsToCentimeters(duration);
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(200);
buttonState=digitalRead(4);
if(buttonState==HIGH)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("ALARM ON");
lcd.setCursor(0,1);
lcd.print("SAFE");
if(inches<range)
{
Serial.println("DANGER");
lcd.setCursor(0,0);
lcd.print("ALARM ON");
lcd.setCursor(0,1);
lcd.print("DANGER");
digitalWrite(ledGreen,LOW);
digitalWrite(ledYellow,HIGH);
tone(alarm,2000);
delay(100);
}
else
{
Serial.println("GOOD");
digitalWrite(ledGreen,HIGH);
digitalWrite(ledYellow,LOW);
noTone(alarm);
delay(100);
}
}
else
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("ALARM OFF");
Serial.println("GOOD");
digitalWrite(ledGreen,LOW);
digitalWrite(ledYellow,LOW);
noTone(alarm);
delay(100);
}
}
long microsecondsToInches(long microseconds)
{
return microseconds/74/2;
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds/29/2;
}