Proyek Robotik Informatika SMK: Traffic Light dan Sistem Penyeberangan Jalan
Proyek ini cocok untuk pembelajaran Informatika kelas X SMK Fase E dengan metode Project-Based Learning (PjBL). Siswa membuat miniatur persimpangan jalan yang memiliki lampu lalu lintas otomatis dan tombol penyeberangan untuk pejalan kaki menggunakan Arduino Uno.
1. Konsep proyek
Sistem mempunyai dua mode utama:
Mode normal: lampu kendaraan menyala hijau, kuning, dan merah secara bergantian.
Mode penyeberangan: saat tombol ditekan, sistem menyelesaikan siklus lampu kendaraan, menghentikan kendaraan dengan lampu merah, lalu menyalakan lampu penyeberangan hijau disertai buzzer sebagai tanda bagi pejalan kaki.
Urutan kerja sistem
1. Lampu kendaraan hijau
Kendaraan boleh berjalan.
2. Lampu kuning
Peringatan bahwa fase kendaraan akan berakhir.
3. Lampu merah kendaraan
Kendaraan berhenti sebelum penyeberangan.
4. Lampu pejalan kaki hijau
Pejalan kaki boleh menyeberang. Buzzer memberi tanda suara.
2. Komponen yang diperlukan
No. | Komponen | Jumlah |
|---|---|---|
1 | Arduino Uno | 1 |
2 | Breadboard | 1 |
3 | LED merah kendaraan | 1 |
4 | LED kuning kendaraan | 1 |
5 | LED hijau kendaraan | 1 |
6 | LED merah pejalan kaki | 1 |
7 | LED hijau pejalan kaki | 1 |
8 | Resistor 220–330 Ω | 5 |
9 | Push button | 1 |
10 | Buzzer aktif atau pasif | 1 |
11 | Kabel jumper | Secukupnya |
12 | Kabel USB dan komputer | 1 |
3. Rangkaian Arduino Uno
Gunakan susunan pin berikut agar mudah dirakit oleh siswa.
Daftar koneksi pin
Komponen | Pin Arduino |
| LED merah kendaraan | D13 |
| LED kuning kendaraan | D12 |
| LED hijau kendaraan | D11 |
| LED merah pejalan kaki | D10 |
| LED hijau pejalan kaki | D9 |
| Buzzer (+) | D8 |
| Push button | D2 dan GND |
Cara memasang LED:
Kaki panjang LED (anoda) → resistor 220–330 Ω → pin Arduino.
Kaki pendek LED (katoda) → GND.
Push button → D2 dan GND. Program menggunakan
INPUT_PULLUP, sehingga tidak memerlukan resistor tambahan untuk tombol.Buzzer aktif: terminal (+) ke D8 dan terminal (−) ke GND. Jika menggunakan buzzer pasif, program di bawah menggunakan
tone()untuk menghasilkan suara.
Pastikan setiap LED menggunakan resistor pembatas arus.
4. Program Arduino IDE lengkap
Program ini menjalankan lampu lalu lintas normal dan merespons tombol penyeberangan. Saat tombol ditekan, sistem beralih ke fase penyeberangan dengan urutan kuning → merah kendaraan → hijau pejalan kaki dan buzzer.
const int MERAH_KENDARAAN = 13;
const int KUNING_KENDARAAN = 12;
const int HIJAU_KENDARAAN = 11;
const int MERAH_PEJALAN = 10;
const int HIJAU_PEJALAN = 9;
const int BUZZER = 8;
const int TOMBOL = 2;
bool permintaanMenyeberang = false;
void semuaMati() {
digitalWrite(MERAH_KENDARAAN, LOW);
digitalWrite(KUNING_KENDARAAN, LOW);
digitalWrite(HIJAU_KENDARAAN, LOW);
digitalWrite(MERAH_PEJALAN, LOW);
digitalWrite(HIJAU_PEJALAN, LOW);
noTone(BUZZER);
}
void cekTombol() {
if (digitalRead(TOMBOL) == LOW) {
delay(30); // debounce sederhana
if (digitalRead(TOMBOL) == LOW) {
permintaanMenyeberang = true;
// Tunggu tombol dilepas
while (digitalRead(TOMBOL) == LOW) {
delay(10);
}
}
}
}
void tungguCekTombol(unsigned long durasi) {
unsigned long mulai = millis();
while (millis() - mulai < durasi) {
cekTombol();
delay(10);
}
}
void fasePenyeberangan() {
// Kendaraan bersiap berhenti
digitalWrite(HIJAU_KENDARAAN, LOW);
digitalWrite(KUNING_KENDARAAN, HIGH);
tungguCekTombol(2000);
// Semua kendaraan berhenti
digitalWrite(KUNING_KENDARAAN, LOW);
digitalWrite(MERAH_KENDARAAN, HIGH);
tungguCekTombol(1000);
// Pejalan kaki mendapat giliran
digitalWrite(MERAH_PEJALAN, LOW);
digitalWrite(HIJAU_PEJALAN, HIGH);
// Buzzer berbunyi selama fase penyeberangan
unsigned long mulai = millis();
while (millis() - mulai < 5000) {
tone(BUZZER, 1000);
delay(250);
noTone(BUZZER);
delay(250);
}
noTone(BUZZER);
digitalWrite(HIJAU_PEJALAN, LOW);
digitalWrite(MERAH_PEJALAN, HIGH);
// Kendaraan boleh berjalan kembali
digitalWrite(MERAH_KENDARAAN, LOW);
digitalWrite(HIJAU_KENDARAAN, HIGH);
}
void setup() {
pinMode(MERAH_KENDARAAN, OUTPUT);
pinMode(KUNING_KENDARAAN, OUTPUT);
pinMode(HIJAU_KENDARAAN, OUTPUT);
pinMode(MERAH_PEJALAN, OUTPUT);
pinMode(HIJAU_PEJALAN, OUTPUT);
pinMode(BUZZER, OUTPUT);
pinMode(TOMBOL, INPUT_PULLUP);
semuaMati();
digitalWrite(MERAH_KENDARAAN, HIGH);
digitalWrite(MERAH_PEJALAN, HIGH);
delay(1000);
digitalWrite(MERAH_KENDARAAN, LOW);
digitalWrite(HIJAU_KENDARAAN, HIGH);
}
void loop() {
cekTombol();
if (permintaanMenyeberang) {
permintaanMenyeberang = false;
fasePenyeberangan();
return;
}
// Siklus lalu lintas normal
digitalWrite(HIJAU_KENDARAAN, HIGH);
tungguCekTombol(5000);
if (permintaanMenyeberang) return;
digitalWrite(HIJAU_KENDARAAN, LOW);
digitalWrite(KUNING_KENDARAAN, HIGH);
tungguCekTombol(2000);
if (permintaanMenyeberang) {
digitalWrite(KUNING_KENDARAAN, LOW);
return;
}
digitalWrite(KUNING_KENDARAAN, LOW);
digitalWrite(MERAH_KENDARAAN, HIGH);
tungguCekTombol(2000);
if (permintaanMenyeberang) return;
digitalWrite(MERAH_KENDARAAN, LOW);
digitalWrite(HIJAU_KENDARAAN, HIGH);
}
Catatan: program ini merupakan prototipe pembelajaran. Untuk penggunaan nyata, sistem perlu dirancang dengan pengendalian fase yang lebih ketat, waktu aman, dan perangkat keselamatan yang sesuai.
5. Jika buzzer tidak berbunyi
Karena buzzer sering menjadi kendala saat perakitan, lakukan tes berikut sebelum menjalankan keseluruhan program.
const int BUZZER = 8;
void setup() {
pinMode(BUZZER, OUTPUT);
}
void loop() {
tone(BUZZER, 1000);
delay(1000);
noTone(BUZZER);
delay(1000);
}
Jika tetap tidak berbunyi, periksa:
Terminal positif buzzer benar-benar terhubung ke D8.
Terminal negatif terhubung ke GND Arduino.
Jenis buzzer yang digunakan. Buzzer aktif biasanya dapat berbunyi dengan HIGH, sedangkan buzzer pasif memerlukan sinyal frekuensi.
Coba buzzer lain atau uji dengan rangkaian yang sesuai spesifikasi komponennya.
6. Tantangan proyek untuk siswa
Level 1: membuat lampu merah, kuning, dan hijau bergantian.
Level 2: menambahkan tombol penyeberangan.
Level 3: menambahkan lampu pejalan kaki dan buzzer.
Level 4: membuat miniatur jalan lengkap dengan zebra cross, kendaraan mini, dan maket sekolah.
Pertanyaan untuk memastikan rangkaian sesuai alat yang tersedia: buzzer yang Anda gunakan jenis apa?
Jenis buzzer
Jumlah LED yang tersedia
0 Comments