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.
Tantangan
SedangTambahkan bunyi bip:
- 100 cm atau lebih: tanpa suara (panggil
noTone()) - 10 hingga 99 cm: bunyi bip 50 ms pada 1000 Hz setiap
cm * 10ms, dengan pengaturan waktu menggunakanmillis() - 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);
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Proyek
Latihan sendiri: Playground Arduino