I am trying to create a code which does the following:
Display some text
When an object is within 1.5m of the device, create an alert and and write some text
Else, write some text.
I am using tinkercad's simulation (link can be found here: Login | Tinkercad) and the code is bellow (sorry i don't know how to post in tags).
At the very end, the code is overlapping and I can't seem to figure out why. It also is printing 0 for the distance, where as it should be printing the distance that the object is from the device.
Any advice and help is much appreciated.
#include <LiquidCrystal.h>
#define ECHO 10
#define TRIGGER 9
float time =0;
float distance = 0;
LiquidCrystal lcd(12,11,5,4,3,2);
int num=1;
const int trigPin = 9;
const int echoPin = 10;
const int buzzer = 6;
// defines variables
long duration;
void setup() {
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Inputer
pinMode (buzzer, OUTPUT); //Makes the buzzer an output
Serial.begin(9600); // Starts the serial communication
pinMode(TRIGGER, OUTPUT);
pinMode(ECHO, INPUT);
lcd.begin(16, 2);
lcd.print("COVID");
delay(2000);
lcd.clear();
lcd.print("Social Distance");
delay(2000);
lcd.clear();
lcd.print("1.5 Metres");
delay(2000);
}
void loop() {
digitalWrite(TRIGGER, LOW);
delayMicroseconds(2);
digitalWrite(TRIGGER, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER, LOW);
duration = pulseIn(ECHO, HIGH);
//time = pulseIn(ECHO,HIGH); This line is wrong
distance = 0.01716*time;
Serial.println(time);
lcd.setCursor(5,0);
lcd.print(float(distance/100));
lcd.setCursor(11,0);
lcd.print("m");
delay(1000);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
Serial.print("Distance: ");
Serial.println(distance);
lcd.clear();
if (distance < 150)
{
digitalWrite(buzzer, HIGH);
lcd.setCursor(5,0);
lcd.print("Social Distance!");
lcd.setCursor(5,1);
lcd.print("At least 1.5m!");
}
else
{
digitalWrite(buzzer, LOW);
lcd.setCursor(5,0);
lcd.print("Great work! Stay safe");
lcd.setCursor(5,1);
lcd.print("and wear a mask");
}
}