// C++ code
#define LED 2
#define trig 4
#define echo 7
#define piezo 8
long distance;
unsigned long duration;
unsigned long startDetect = 0;
unsigned long previousMillis = 0;
const long timeLimit = 10000;
boolean alarm = false;
void setup()
{
pinMode(LED, OUTPUT);
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
pinMode(piezo, OUTPUT);
Serial.begin(9600);
delay(10000);
}
void loop()
{
digitalWrite(trig, LOW);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
duration = pulseIn(echo, HIGH, 30000);
distance = duration * 0.034 / 2;
Serial.print("Distance: ");
Serial.println(distance);
if (distance == 0 || distance > 200)
{
if (alarm)
{
Serial.println("Out of range");
}
alarm = false;
digitalWrite(LED, LOW);
noTone(piezo);
}
else // Object closer than 200 cm
{
if (!alarm)
{
Serial.println("Object detected");
startDetect = millis();
alarm = true;
}
else
{
unsigned long currentMillis = millis();
if (currentMillis - startDetect >= timeLimit) {
digitalWrite(LED, HIGH);
tone(piezo, 200);
delay(500);
digitalWrite(LED, LOW);
noTone(piezo);
delay(500); // Half-second delay between beeps
}
}
}
}