Menu
CoddyTech

Sensor Parkir: Layar

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

Langkah terakhir menampilkan jarak yang tepat di layar. LCD 16x2 dipasang dengan cara biasa: RS pada 12, E pada 11, D4 sampai D7 pada 5, 4, 3, dan 2.

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

Baris atas tidak pernah berubah, jadi tulis Distance: sekali di setup(), setelah lcd.begin(16, 2). Hanya baris bawah yang diperbarui di loop().

LCD menyimpan setiap karakter sampai ada sesuatu yang menggantikannya. Saat jarak berubah dari 250 cm menjadi 8 cm, mencetak 8 cm di atas 250 cm akan meninggalkan sisa teks lama di akhir baris, sehingga layar menampilkan 8 cmcm. Cetak beberapa spasi setelah teks untuk menutupi sisa karakter yang ditinggalkan angka yang lebih panjang:

lcd.setCursor(0, 1);
lcd.print(cm);
lcd.print(" cm    ");

Spasi juga menghindari kedipan akibat lcd.clear(), yang akan mengosongkan seluruh layar sepuluh kali per detik.

challenge icon

Tantangan

Mudah

Tampilkan jarak pada LCD:

  • sertakan LiquidCrystal.h dan buat lcd(12, 11, 5, 4, 3, 2)
  • di setup(): lcd.begin(16, 2) dan Distance: pada baris atas
  • di loop(): jarak dan cm pada baris bawah, seperti 57 cm, dengan spasi setelahnya

Pertahankan lampu, bunyi bip, dan pencetakan. Tekan Jalankan, lalu Periksa.

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;
// Buzzer
const int buzzerPin = 8;

unsigned long lastBeep = 0;  // saat bunyi bip terakhir dimulai

// Kirim pulsa 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 tidak ada penghalang, 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);
  }
}

// Bunyi bip semakin cepat saat object semakin dekat.
void beep(long cm) {
  if (cm >= 100) {
    noTone(buzzerPin);
  } else if (cm < 10) {
    tone(buzzerPin, 1000);  // terlalu dekat: nada terus-menerus
  } else if (millis() - lastBeep >= cm * 10) {
    lastBeep = millis();
    tone(buzzerPin, 1000, 50);
  }
}

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);
  beep(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