Bab 10
Membuat Rambu Lalu Lintas
oleh: Suryo Adhy Chandra, ST
Logika Rambu Lalu Lintas
Logika dalam pembuatan rambu lalu lintas adalah:
- Kita memerlukan 3 buah lampu yang berbeda warna, bisa merah kuning dan hijau
- Kita akan menggunakan 3 PIN digital untuk percobaan ini, yaitu: PIN nomor 11, 12 dan 13
Dalam penyusunan rangkaian kita memerlukan protoboard, tetapi dalam percobaan di dalam website hanya akan ditampilkan simulator langsung menggunakan kabel yang tertancap ke PIN yang dibutuhkan.
Untuk melakukan pengaturan waktu untuk menyala dan mati dari lampu-lampu tersebut kita menggunakan kata kunci:
delay(nilai)Di mana untuk nilai yang dimasukkan adalah dalam satuan mili detik, sehingga kalau kita akan menyalakan selama 2 detik kita harus memasukkan
delay(2000)
Susunan rangkaian tanpa protoboard adalah sebagai berikut:
Logika Berpikir dalam Pembuatan Coding
Dalam berpikir sebelum kita membuat coding dalam bahasa C adalah:
- Lampu merah menyala kira-kira 5 detik
- Lampu merah dimatikan dan lampu kuning menyala selama 2 detik
- Lampu kuning dimatikan dan lampu hijau
- Lampu hijau dimatikan dan kembali ke nomor 1
Script Coding C Arduino
void setup() {
pinMode(13,1);
pinMode(12,1);
pinMode(11,1);
}
void loop() {
digitalWrite(13, HIGH);
delay(5000);
digitalWrite(13, LOW);
digitalWrite(12, HIGH);
delay(2000);
digitalWrite(12, LOW);
digitalWrite(11, HIGH);
delay(5000);
digitalWrite(11, LOW);
}
Sekarang kalian coba terlebih dahulu menggunakan protoboard di kelas. Kalau belum berhasil boleh hubungi kami di nomor yang tertera di bagian bawah situs ini.
Nah setelah kalian bisa, silakan berkesperimen dengan:
- Mengganti delay masing-masing lampu.
- Menambah lampu di pin 1-10 yang belum terpakai.
Untuk melihat simulasinya silakan masuk ke situs Rambu Lalu Lintas
Selamat Bereksperimen!
Menghitung dan memilih resistor
Setiap LED memerlukan resistor pembatas arus. Untuk LED merah dan kuning, penurunan tegangannya sekitar 2 V, sedangkan LED hijau sekitar 2 sampai 3 V. Dengan pasokan pin 5 V, resistor 330 ohm menghasilkan arus kira-kira 9 mA untuk LED merah, cukup terang dan aman. Resistor 220 ohm menghasilkan arus sekitar 14 mA, dan 470 ohm membuat LED lebih redup. Satu resistor dipasang untuk setiap LED dan hindari berbagi satu resistor untuk beberapa LED.
Wiring dengan breadboard
- Tancapkan tiga LED pada breadboard dengan jarak beberapa lubang. Kaki panjang (anoda) menghadap sisi pin Arduino.
- Dari pin 13 sambungkan kabel ke resistor 330 ohm, lalu ujung resistor ke anoda LED merah.
- Dari pin 12 ke resistor lalu anoda LED kuning. Dari pin 11 ke resistor lalu anoda LED hijau.
- Semua katoda (kaki pendek) disambung ke satu jalur biru atau jalur negatif breadboard, lalu satu kabel dari jalur itu ke pin GND Arduino.
Kalau satu LED tidak menyala sementara yang lain normal, periksa polaritas LED tersebut dan pastikan kabelnya masuk di baris yang sama dengan resistor.
Versi kode yang lebih rapi
const int MERAH = 13;
const int KUNING = 12;
const int HIJAU = 11;
void nyala(int pin, int lama) {
digitalWrite(pin, HIGH);
delay(lama);
digitalWrite(pin, LOW);
}
void setup() {
pinMode(MERAH, OUTPUT);
pinMode(KUNING, OUTPUT);
pinMode(HIJAU, OUTPUT);
}
void loop() {
nyala(MERAH, 5000);
nyala(HIJAU, 5000);
for (int i = 0; i < 3; i++) {
nyala(KUNING, 300);
delay(300);
}
}
Penjelasan. Tiga konstanta memberi nama yang jelas pada setiap pin, sehingga kode terbaca seperti urutan lampu sesungguhnya. Fungsi nyala(pin, lama) menyalakan satu lampu selama waktu tertentu lalu mematikannya, sehingga tidak ada lampu yang lupa dimatikan. Pada loop() lampu merah menyala 5 detik, hijau menyala 5 detik, lalu kuning berkedip tiga kali sebagai peringatan sebelum kembali ke merah. Jika dibandingkan dengan urutan pada contoh di atas, bedanya urutan hijau dan kuning disesuaikan dengan lampu lalu lintas sesungguhnya, yakni merah, hijau, kuning.
Menambah lampu penyeberangan
Untuk kelanjutan, tambahkan satu LED biru atau putih pada pin 10 sebagai lampu pejalan kaki. Nyalakan lampu itu hanya saat lampu merah menyala. Kamu cukup menambahkan konstanta PEJALAN = 10, pinMode(PEJALAN, OUTPUT), dan menyalakan pin itu bersama lampu merah dengan dua perintah digitalWrite sebelum delay. Ingat untuk memberikan resistor sendiri pada setiap LED tambahan.
Tips keselamatan listrik
- Cabut kabel USB sebelum mengubah rangkaian, dan colokkan lagi setelah semua sambungan diperiksa.
- Jangan menyambung pin langsung ke GND atau 5V tanpa komponen di antaranya, karena terjadi hubung singkat.
- Jangan menyentuh komponen dengan tangan basah. Jauhkan minuman dari meja kerja.
- Total arus semua pin Uno tidak boleh melebihi sekitar 200 mA, jadi untuk lampu besar gunakan transistor dan catu daya terpisah.
Kesalahan yang sering terjadi
- Semua LED redup. Resistor terlalu besar, misalnya 10 kiloohm. Cek pita warna: 330 ohm berwarna oranye, oranye, cokelat.
- Dua lampu menyala bersamaan. Lupa menulis digitalWrite(pin, LOW) sebelum menyalakan lampu berikutnya.
- Lampu tidak berurutan sesuai harapan. Nomor pin dalam kode tidak cocok dengan kabel yang terpasang.
- Tidak ada lampu menyala. Katoda belum tersambung ke GND, sehingga arus tidak punya jalur kembali.
Ringkasan
Rambu lalu lintas adalah urutan keadaan: setiap lampu menyala selama waktu tertentu, lalu giliran lampu berikutnya. Perencanaan urutan di atas kertas membuat kode lebih mudah ditulis. Resistor menjaga LED tetap awet, dan konstanta serta fungsi menjaga program tetap rapi.
Soal latihan
- Mengapa setiap LED memerlukan resistornya sendiri?
Lihat jawaban
Agar arus tiap LED dibatasi dengan benar. Tanpa resistor LED bisa terbakar dan pin Arduino bisa rusak.
- Berapa milidetik nilai delay untuk menyala selama 7 detik?
Lihat jawaban
7000 milidetik, yaitu delay(7000).
- Apa akibatnya jika lupa mematikan lampu merah sebelum menyalakan hijau?
Lihat jawaban
Kedua lampu menyala bersamaan karena pin merah tetap HIGH.
- Pin mana saja yang dipakai pada contoh ini dan apa warnanya?
Lihat jawaban
Pin 13 untuk merah, pin 12 untuk kuning, dan pin 11 untuk hijau.