Menu
CoddyTech

Sensor Parkir: Bunyi Bip

Termasuk bagian Proyek dalam perjalanan Arduino di Coddy. Pelajaran 11 dari 24.

Sensor parkir berbicara sekaligus menampilkan informasi: semakin dekat tembok, semakin cepat bunyinya, hingga mengeluarkan satu nada tetap yang berarti berhenti. Buzzer terhubung ke pin 8.

Jeda antar bunyi berasal dari jarak: jarak dikalikan 10, dalam milidetik. Pada 70 cm, bunyi terdengar setiap 700 ms, pada 20 cm setiap 200 ms. Timer millis() menentukan kapan bunyi berikutnya harus terdengar:

if (millis() - lastBeep >= cm * 10) {
  lastBeep = millis();
  tone(buzzerPin, 1000, 50);  // bunyi bip selama 50 ms
}

Ada dua kondisi lainnya. Di bawah 10 cm, jalankan tone(buzzerPin, 1000) tanpa durasi: bunyinya terus terdengar hingga dihentikan. Pada jarak 100 cm atau lebih, jangan keluarkan bunyi, dan panggil noTone(buzzerPin) agar nada tetap yang tersisa dari sebelumnya juga dihentikan.

challenge icon

Tantangan

Sedang

Tambahkan bunyi bip:

  • 100 cm atau lebih: tanpa suara (panggil noTone())
  • 10 hingga 99 cm: bunyi bip 50 ms pada 1000 Hz setiap cm * 10 ms, dengan pengaturan waktu menggunakan millis()
  • kurang dari 10 cm: nada 1000 Hz yang stabil

Pertahankan lampu dan pencetakan. Tekan Run, dekatkan objek, lalu tekan Check.

Coba sendiri

// Sensor jarak
const int trigPin = 9;
const int echoPin = 10;
// Lampu peringatan
const int greenPin = 6;
const int yellowPin = 7;
const int redPin = 13;

// Kirim ping dan kembalikan jarak dalam cm.
long readDistance() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  long duration = pulseIn(echoPin, HIGH);
  return duration / 58;
}

// Hijau saat jauh, kuning saat dekat, merah saat terlalu dekat.
void showLights(long cm) {
  digitalWrite(greenPin, LOW);
  digitalWrite(yellowPin, LOW);
  digitalWrite(redPin, LOW);
  if (cm >= 100) {
    digitalWrite(greenPin, HIGH);
  } else if (cm >= 30) {
    digitalWrite(yellowPin, HIGH);
  } else {
    digitalWrite(redPin, HIGH);
  }
}

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(yellowPin, OUTPUT);
  pinMode(redPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  long cm = readDistance();
  Serial.println(cm);
  showLights(cm);
  delay(100);
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Proyek

Latihan sendiri: Playground Arduino