const int trigPin1 = 9;
const int echoPin1 = 10;
const int trigPin2 = 11;
const int echoPin2 = 12;
const int buzzerPin = 8;
const long distanceThreshold = 20; // cm
bool alertTriggered = false;
long measureDistance(int trigPin, int echoPin);
void setup() {
Serial.begin(9600);
pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);
pinMode(buzzerPin, OUTPUT);
digitalWrite(buzzerPin, LOW);
}
void loop() {
long distance1 = measureDistance(trigPin1, echoPin1);
long distance2 = measureDistance(trigPin2, echoPin2);
Serial.print("D1: ");
Serial.print(distance1);
Serial.print(" cm | D2: ");
Serial.print(distance2);
Serial.println(" cm");
bool sensor1Active = (distance1 > 0 && distance1 <= distanceThreshold);
bool sensor2Active = (distance2 > 0 && distance2 <= distanceThreshold);
int beepCount = 0;
// Karar mantığı
if (sensor1Active && sensor2Active) {
beepCount = 3;
}
else if (sensor1Active || sensor2Active) {
beepCount = 2;
}
// SADECE BİR KEZ ÇAL
if (beepCount > 0 && !alertTriggered) {
for (int i = 0; i < beepCount; i++) {
digitalWrite(buzzerPin, HIGH);
delay(200);
digitalWrite(buzzerPin, LOW);
delay(200);
}
alertTriggered = true;
}
// Nesne çekilince sistemi sıfırla
if (!sensor1Active && !sensor2Active) {
alertTriggered = false;
}
delay(100);
}
long measureDistance(int trigPin, int echoPin) {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH, 30000);
if (duration == 0) {
return -1;
}
return duration * 0.034 / 2;
}