// Tugas 3 - Program selamat datang dan selamat jalan dengan sensor HC-SR04
#define LED1 7
#define LED2 6
#define TRIG_PIN1 5
#define ECHO_PIN1 4
#define TRIG_PIN2 3
#define ECHO_PIN2 2
int telahDilewatiSensor1 = 0;
int telahDilewatiSensor2 = 0;
long durasi1, jarak1;
long durasi2, jarak2;
void setup() {
// Inisialisasi pin
pinMode(TRIG_PIN1, OUTPUT);
pinMode(ECHO_PIN1, INPUT);
pinMode(TRIG_PIN2, OUTPUT);
pinMode(ECHO_PIN2, INPUT);
Serial.begin(9600);
}
void loop() {
// Baca jarak dari sensor 1
digitalWrite(TRIG_PIN1, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN1, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN1, LOW);
durasi1 = pulseIn(ECHO_PIN1, HIGH);
jarak1 = durasi1 * 0.0343 / 2;
// Tampilkan jarak ke Serial Monitor
Serial.print("Jarak sensor 1 : ");
Serial.print(jarak1);
Serial.println(" cm");
// Tunggu sebentar sebelum pengukuran berikutnya
delay(200);
// Baca jarak dari sensor 2
digitalWrite(TRIG_PIN2, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN2, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN2, LOW);
durasi2 = pulseIn(ECHO_PIN2, HIGH);
jarak2 = durasi2 * 0.0343 / 2;
Serial.print("Jarak sensor 2 : ");
Serial.print(jarak2);
Serial.println(" cm");
// Tunggu sebentar sebelum pengukuran berikutnya
delay(200);
// Logika untuk mendeteksi orang melewati sensor 1 terlebih dahulu (SELAMAT DATANG!)
if (telahDilewatiSensor1 == 0 && jarak1 <= 100) {
telahDilewatiSensor1 = 1;
}
// Logika untuk mendeteksi orang melewati sensor 2 setelah melewati sensor 1 (SELAMAT DATANG!)
if (telahDilewatiSensor1 == 1 && jarak2 <= 100) {
telahDilewatiSensor1 = 0;
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
}
// Logika untuk mendeteksi orang melewati sensor 2 terlebih dahulu (SELAMAT JALAN!)
if (telahDilewatiSensor2 == 0 && jarak2 <= 100) {
telahDilewatiSensor2 = 1;
}
// Logika untuk mendeteksi orang melewati sensor 1 setelah melewati sensor 2 (SELAMAT JALAN!)
if (telahDilewatiSensor2 == 1 && jarak1 <= 100) {
telahDilewatiSensor2 = 0;
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
}
// Matikan LED jika tidak ada orang yang terdeteksi di kedua sensor
if (jarak1 > 100 && jarak2 > 100) {
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
}
if (jarak1 > 100 && telahDilewatiSensor1 == 1 && jarak2 > 100 && telahDilewatiSensor2 == 1) {
telahDilewatiSensor1 == 0;
telahDilewatiSensor2 == 0;
}
}