/********************************************************/
/* Course: MHY67000 */
/* Title: Internet of Things (IoT) */
/* Author: Ayodeji Yusuf Odusote */
/* University: Nexford University */
/* Cohort: February 2024 */
/********************************************************/
#include <LiquidCrystal_I2C.h>
//PIN Definitions for sensor
#define ECHO_PIN 2
#define TRIG_PIN 3
//Format definition for LCD
#define LCD_ADDR 0x27
#define LCD_COLS 16
#define LCD_ROWS 2
//Initialization of an instance of LiquidCrystal
LiquidCrystal_I2C lcd(LCD_ADDR,LCD_COLS,LCD_ROWS);
const int redPin = 8;
const int orangePin = 9;
const int bluePin = 10;
const int greenPin = 11;
void setup() {
// put your setup code here, to run once:
pinMode(redPin, OUTPUT);
pinMode(orangePin, OUTPUT);
pinMode(bluePin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
lcd.begin(LCD_COLS,LCD_ROWS);
lcd.backlight();
}
void loop() {
int distance = readDistanceCM();
GaugeSafety(distance); //Indicates proximity level on LEDs and LCD
}
void GaugeSafety (float distance)
{
lcd.setCursor(1,0);
lcd.print("Safe Distance");
lcd.setCursor(1,1);
lcd.print(distance);
if(distance <= 100)
{
digitalWrite(redPin, HIGH);
digitalWrite(orangePin, LOW);
digitalWrite(bluePin, LOW);
digitalWrite(greenPin, LOW);
lcd.print(" DANGER!!!");
}
if(distance > 100 && distance <= 200)
{
digitalWrite(redPin, LOW);
digitalWrite(orangePin, HIGH);
digitalWrite(bluePin, LOW);
digitalWrite(greenPin, LOW);
lcd.print(" IMMINENT");
}
if(distance > 200 && distance <=300)
{
digitalWrite(redPin, LOW);
digitalWrite(orangePin, LOW);
digitalWrite(bluePin, HIGH);
digitalWrite(greenPin, LOW);
lcd.print(" COMFORT!");
}
if(distance > 300 && distance <=400)
{
digitalWrite(redPin, LOW);
digitalWrite(orangePin, LOW);
digitalWrite(bluePin, LOW);
digitalWrite(greenPin, HIGH);
lcd.print(" SAFE!!!!");
}
}
float readDistanceCM() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
int duration = pulseIn(ECHO_PIN, HIGH);
return round(duration/58.47);
}