// YWROBOT
// Compatible with the Arduino IDE 1.0
// Library version:1.1
#include <LiquidCrystal_I2C.h>
#include "pitches.h"
#define SPEAKER_PIN 8
#define BACK_PIN 12
#define ECHO_PIN 2
#define TRIG_PIN 3
LiquidCrystal_I2C lcd(0x27,20,4);
// set the LCD address to 0x27 for a 16 chars and 2 line display
float cm = 0.0;
float inches = 0.0;
long readUltrasonicDistance()
{
//pinMode(TRIG_PIN, OUTPUT); // Clear the trigger
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
// Sets the trigger pin to HIGH state for 10 microseconds
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
//pinMode(ECHO_PIN, INPUT);
// Reads the echo pin, and returns
// the sound wave travel time in microseconds
int duration = pulseIn(ECHO_PIN, HIGH);
return duration * 0.0344 / 2;
}
void setup()
{
Serial.begin(115200);
pinMode(BACK_PIN,INPUT_PULLUP);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
lcd.init(); // initialize the lcd
// Print a message to the LCD.
lcd.backlight();
lcd.print("--> Distance <--");
delay(3000);
lcd.clear();
}
void loop()
{
cm = readUltrasonicDistance();
inches = (cm / 2.54);
float distance = map(cm,0,400,0,200);
/*
Serial.print("Inches ");
Serial.print(inches, 1);
Serial.print("\t");
Serial.print("cm ");
Serial.println(cm, 1);
*/
if(digitalRead(BACK_PIN) == 1){
delay(distance);
tone(SPEAKER_PIN,NOTE_E4);
delay(distance);
noTone(SPEAKER_PIN);
} else noTone(SPEAKER_PIN);
lcd.setCursor(0,0);
lcd.print("Inches");
lcd.setCursor(4,0);
lcd.setCursor(12,0);
lcd.print("cm");
lcd.setCursor(1,1);
lcd.print(inches, 1);
lcd.setCursor(11,1);
lcd.print(cm, 1);
lcd.setCursor(14,1);
delay(100);
//lcd.clear();
//Serial.print("Measured distance: ");
//Serial.println(readUltrasonicDistance());
}