Projek Lampu Isyarat Arduino (Traffic Light) untuk RBT

Projek lampu isyarat Arduino di atas breadboard putih dengan LED merah kuning hijau, rintangan biru dan Arduino Uno biru

Projek lampu isyarat Arduino (traffic light Arduino) ialah tiga LED (merah, kuning, hijau) yang disambung ke tiga pin digital Arduino Uno, setiap satu melalui rintangan siri 220Ω, dengan semua kaki pendek berkongsi satu baris GND pada breadboard. Kod hanya menyalakan satu LED pada satu masa mengikut kitaran merah → hijau → kuning. Siap dalam satu petang.

Macam mana projek lampu isyarat Arduino berfungsi?

Lampu isyarat Arduino sebenarnya adalah tiga litar LED berasingan yang dihidupkan bergilir-gilir oleh satu program. Arduino Uno tidak “tahu” apa itu lampu isyarat — ia cuma menghantar 5V ke satu pin, tunggu beberapa saat, padam, kemudian hidupkan pin seterusnya.

Kitaran di Malaysia mudah sahaja: merah untuk berhenti, hijau untuk jalan, kuning sebagai amaran sebelum kembali merah — tiada fasa merah+kuning serentak seperti di UK. Sebab itulah ia kekal jadi projek RBT klasik: konsepnya boleh dijelaskan dalam satu ayat, tapi ia mengajar output digital, polariti komponen, hukum Ohm dan struktur program sekali gus.

Apa komponen yang diperlukan?

Senarai komponen untuk projek lampu isyarat Arduino ini pendek dan murah. Semuanya boleh dipasang pada breadboard tanpa perlu solder langsung, jadi projek ini selamat untuk pelajar tingkatan satu pun.

Ada juga modul lampu isyarat siap pasang — PCB hitam kecil dengan tiga LED 5mm bersusun menegak dan header 4 pin (G, Y, R, GND). Modul ini lebih kemas dan boleh ditempah terus di halaman produknya. Untuk folio RBT, kami tetap syorkan binaan LED berasingan di atas — itulah wiring yang cikgu nak lihat pelajar faham satu-satu.

Kenapa setiap LED perlu rintangan siri?

Pin digital Arduino Uno mengeluarkan 5V penuh apabila HIGH, tetapi LED bukan mentol biasa — ia diode. Sekali voltan melepasi voltan hadapan (forward voltage, Vf) LED itu, rintangan dalamannya hampir sifar dan arus melonjak tanpa had, membakar LED dan pin Arduino sekali.

Angka rasminya begini. Arduino menyenaraikan DC Current per I/O Pin = 20 mA pada Uno Rev3, dan itulah had selamat yang patut anda reka bentuk untuk. Datasheet ATmega328P pula menyatakan 40.0 mA per pin I/O dan 200.0 mA untuk keseluruhan pin VCC dan GND — tapi “absolute maximum rating” bermakna titik kerosakan, bukan sasaran. Pengiraannya guna hukum Ohm terus:

I = (5V − Vf) / R

Vf berbeza mengikut warna. LED merah 3mm biasanya 1.8–2.2V, manakala kuning dan hijau lebih tinggi pada 2.0–2.4V.

Warna LED 3mm Vf tipikal Arus dengan 220Ω Arus dengan 330Ω
Merah 1.8–2.2V ≈12.7–14.5 mA ≈8.5–9.7 mA
Kuning 2.0–2.4V ≈11.8–13.6 mA ≈7.9–9.1 mA
Hijau 2.0–2.4V ≈11.8–13.6 mA ≈7.9–9.1 mA

Pilihan kami: 220Ω. Ia meletakkan ketiga-tiga LED sekitar 12–14.5 mA — cukup terang untuk demonstrasi kelas, dan masih di bawah had 20 mA dengan margin selesa. Kalau ketiga-tiganya menyala serentak pun, jumlahnya cuma sekitar 42 mA.

Rintangan metal-film biru guna 5 jalur: 220Ω = merah-merah-hitam-hitam-perang, 330Ω = oren-oren-hitam-hitam-perang. Kalau pening membaca jalur, ukur terus dengan multimeter digital. Apa-apa nilai antara 180Ω dan 470Ω berfungsi untuk ketiga-tiga warna; yang lebih besar cuma lebih malap. 150Ω simpan untuk hijau sahaja — dengan LED merah ia boleh mencecah ≈21 mA, sedikit melepasi had 20 mA.

Rintangan axial biru dengan jalur warna di sebelah LED merah 3mm di atas breadboard mini putih
Rintangan metal-film biru bersiri dengan LED 3mm — pasangan wajib untuk setiap warna.

Macam mana nak kenal kaki panjang dan kaki pendek LED?

LED 3mm ada dua kaki dengan panjang berbeza, dan itu bukan kecacatan kilang — ia penanda polariti. Pastikan ini sebelum menekan LED ke dalam breadboard, kerana LED terbalik langsung tidak menyala dan tidak memberi sebarang petunjuk kenapa.

Ciri fizikal Terminal Sambung ke
Kaki panjang Anode (+) Rintangan → pin digital Arduino
Kaki pendek, tepi kubah ada bahagian rata Cathode (−) Baris GND bersama di breadboard

Kalau kaki dah dipotong sama panjang, cari bahagian rata (flat spot) pada bibir kubah plastik — sisi rata itu sentiasa cathode. Petunjuk ketiga: pandang ke dalam kubah jernih — kebiasaannya keping logam yang lebih besar ialah cathode, tapi ada pengecualian, jadi utamakan kaki pendek dan bahagian rata.

Close-up LED hijau 3mm menunjukkan kaki panjang anode dan kaki pendek cathode dengan bahagian rata pada bibir kubah
Kaki panjang = anode ke rintangan; kaki pendek dan bahagian rata pada bibir = cathode ke GND.

Macam mana nak sambung wiring atas breadboard?

Breadboard mini 170 lubang cukup luas untuk projek lampu isyarat Arduino ini kalau anda susun elok. Satu perkara penting: breadboard mini 170 lubang ini tiada rel kuasa +/− di tepi seperti breadboard besar — jadi pilih satu baris 5 lubang biasa (contohnya baris paling hujung) dan jadikan ia baris GND bersama. Semua kaki pendek mesti berkumpul di baris itu, dan baris yang sama disambung ke pin GND Arduino dengan satu wayar jumper sahaja.

Komponen Kaki / hujung Sambung ke
LED merah Kaki panjang (anode) Rintangan 220Ω → pin 10
Kaki pendek (cathode) Baris GND bersama di breadboard
LED kuning Kaki panjang (anode) Rintangan 220Ω → pin 9
Kaki pendek (cathode) Baris GND bersama di breadboard
LED hijau Kaki panjang (anode) Rintangan 220Ω → pin 8
Kaki pendek (cathode) Baris GND bersama di breadboard
Jumper GND Satu wayar Baris GND bersama → pin GND Arduino

Perhatikan tiada pin 5V digunakan langsung. Pin digital itu sendiri yang membekalkan 5V bila kod menetapkannya HIGH — itulah keseluruhan idea projek ini. Kami juga sengaja elak pin 13, kerana ia berkongsi dengan LED onboard Arduino yang akan berkelip sama dan mengelirukan anda semasa debug.

Satu nota tentang breadboard: lubang bersambung mengikut baris dan dipisahkan oleh parit di tengah. Letak rintangan merentasi parit itu — kalau kedua-dua hujung masuk baris yang sama, ia terpintas (short).

Nak lihat tangan sebenar menekan LED dan rintangan ke dalam breadboard? Video ini menunjukkan binaan yang sama dari kosong:

Gambaran keseluruhan wiring lampu isyarat Arduino dengan breadboard putih, LED merah kuning hijau, rintangan biru dan Arduino Uno biru
Susun atur penuh — tiga LED, tiga rintangan, dan satu baris GND yang dikongsi ke pin GND Arduino.

Apa kod Arduino penuh untuk kitaran lampu isyarat?

Kod Arduino di bawah lengkap dan boleh terus dimuat naik ke Uno tanpa sebarang library tambahan. Perhatikan setiap tempoh masa disimpan dalam pemalar bernama di bahagian atas — ubah satu nombor di situ dan seluruh kitaran berubah, tanpa menyentuh loop().

// Projek lampu isyarat Arduino - 3 LED pada Arduino Uno
// Kitaran Malaysia: MERAH -> HIJAU -> KUNING -> MERAH (berulang)

const int PIN_MERAH  = 10;   // anode LED merah  melalui rintangan 220 ohm
const int PIN_KUNING = 9;    // anode LED kuning melalui rintangan 220 ohm
const int PIN_HIJAU  = 8;    // anode LED hijau  melalui rintangan 220 ohm

// Tempoh setiap fasa dalam milisaat - ubah nilai di sini untuk tuning
const unsigned long MASA_MERAH  = 5000;   // 5 saat: kenderaan berhenti
const unsigned long MASA_HIJAU  = 4000;   // 4 saat: kenderaan jalan
const unsigned long MASA_KUNING = 2000;   // 2 saat: amaran sebelum merah

void padamSemua() {
  digitalWrite(PIN_MERAH,  LOW);
  digitalWrite(PIN_KUNING, LOW);
  digitalWrite(PIN_HIJAU,  LOW);
}

void setup() {
  pinMode(PIN_MERAH,  OUTPUT);
  pinMode(PIN_KUNING, OUTPUT);
  pinMode(PIN_HIJAU,  OUTPUT);
  padamSemua();               // mula dengan semua lampu padam
}

void loop() {
  // FASA 1 - MERAH
  padamSemua();
  digitalWrite(PIN_MERAH, HIGH);
  delay(MASA_MERAH);

  // FASA 2 - HIJAU
  padamSemua();
  digitalWrite(PIN_HIJAU, HIGH);
  delay(MASA_HIJAU);

  // FASA 3 - KUNING
  padamSemua();
  digitalWrite(PIN_KUNING, HIGH);
  delay(MASA_KUNING);

  // loop() berulang sendiri - kembali ke FASA 1
}

Fungsi padamSemua() dipanggil sebelum setiap fasa supaya hanya satu lampu menyala pada satu masa. Buang panggilan itu, dan LED sebelumnya kekal menyala sehingga ketiga-tiganya terang serentak.

Tentang delay(): untuk projek ini ia pilihan yang betul — ringkas, mudah dibaca, dan lampu isyarat memang sepatutnya menunggu. Tetapi delay() menyekat: Arduino betul-betul berhenti dan tidak boleh membaca butang atau sensor sepanjang tempoh itu — bila anda mula menambah butang pejalan kaki, itulah masanya belajar corak millis().

Macam mana nak jadikan ini projek sekolah yang dapat markah?

Projek lampu isyarat Arduino asas ini berfungsi, tetapi cikgu dah lihat versi tiga-LED itu berpuluh kali. Markah datang daripada satu penambahan yang anda boleh terangkan sendiri di depan kelas — pilih satu sahaja dan buat betul-betul.

  • Butang pejalan kaki. Push button yang memaksa kitaran ke fasa merah lebih awal — alasan paling semula jadi untuk belajar millis(), kerana delay() akan “terlepas” tekanan butang.
  • Persimpangan kedua. Tiga LED lagi untuk jalan bersilang, dikodkan supaya hijau satu arah bermakna merah arah satu lagi. Uno ada 14 pin digital — cukup dan berbaki.
  • Buzzer untuk OKU. Bunyi bip semasa fasa selamat melintas, meniru amaran audio persimpangan sebenar. Nilai tambah aksesibiliti menarik perhatian pemeriksa.
  • Rumah lampu isyarat 3D-printed. Tiang dan hud lampu yang dicetak menukar breadboard bogel kepada model persimpangan sebenar.

Untuk projek sekolah kedua di atas asas yang sama, robot line follower menambah sensor dan motor di atas Uno yang sama.

Kesilapan biasa yang kami nampak daripada pelanggan sebenar

LED dipasang terbalik

Ini nombor satu, dan ia mengelirukan kerana tiada apa-apa yang rosak — LED itu cuma senyap. Diode mengalirkan arus satu arah sahaja. Kalau satu LED sahaja tidak menyala sedangkan dua lagi berfungsi, cabut dan pusingkan 180° sebelum menyalahkan kod.

Terlupa rintangan

Ada yang cuba tanpa rintangan, kononnya sekejap sahaja. LED mungkin menyala sangat terang untuk beberapa saat, kemudian malap kekal atau terus mati — dan pin Arduino itu mungkin ikut sama. Pasang ketiga-tiga rintangan sebelum menyambung kabel USB, bukan selepas.

Cathode tidak berkongsi GND yang sama

Kalau satu kaki pendek tersalah masuk ke baris yang tidak bersambung ke baris GND bersama, LED itu sahaja yang mati sementara yang lain normal — corak yang mudah tersalah anggap sebagai LED rosak.

Guna pin 5V, bukan pin digital

Menyambung anode ke pin 5V memang menyalakan LED, tetapi ia menyala selama-lamanya dan kod anda tiada kesan. Pin 5V sentiasa hidup; hanya pin digital seperti 0–13 (dan A0–A5, yang juga boleh jadi pin digital) yang boleh dikawal oleh digitalWrite().

Kod disalin dengan nombor pin yang salah

Kod dari internet selalunya guna pin 13, 12, 11 manakala wiring anda 10, 9, 8 — semua LED nampak “mati” walaupun litar sempurna. Semak tiga baris const int padan dengan wayar sebenar sebelum menyalahkan papan.

FAQ

Boleh guna LED 5mm ganti LED 3mm?

Boleh, terus sahaja. Vf dan arus operasi hampir sama untuk warna yang sama, jadi rintangan 220Ω kekal sesuai. LED 5mm cuma lebih besar dan kakinya lebih tebal.

Kenapa LED hijau nampak lebih malap daripada merah?

Sebab Vf hijau lebih tinggi (2.0–2.4V berbanding 1.8–2.2V untuk merah), jadi dengan rintangan sama ia menerima arus lebih sedikit. Itu normal. Untuk terang seimbang, guna 150Ω untuk hijau sahaja.

Perlu bekalan kuasa luar untuk projek ini?

Tidak perlu. Kabel USB dari laptop sudah cukup untuk tiga LED yang menarik sekitar 13 mA setiap satu. Barrel jack hitam pada Arduino Uno itu untuk projek lebih berat seperti motor, atau bila papan perlu berjalan sendiri tanpa laptop semasa persembahan.

Berapa saat sepatutnya setiap lampu menyala?

Tiada jawapan tunggal — persimpangan sebenar berbeza mengikut trafik. Untuk demonstrasi kelas, 5 saat merah, 4 saat hijau dan 2 saat kuning memberi kitaran yang cukup pantas untuk ditonton. Fasa kuning patut kekal paling pendek kerana ia amaran, bukan keadaan menunggu.

Lebih baik guna modul lampu isyarat siap pasang?

Modul itu lebih kemas, tapi ia menyembunyikan bahagian yang sebenarnya diperiksa oleh cikgu: polariti LED, pengiraan rintangan dan baris GND yang dikongsi. Untuk folio RBT, binaan LED berasingan lebih mudah dipertahankan semasa soal jawab.

Nak binaan kekal dan bukan sekadar breadboard? LED dan rintangan boleh disolder terus ke papan lubang — teknik asasnya sama seperti dalam panduan cara solder header pin.

Kemas kini terakhir Ogos 2026. Tersangkut? Chat dengan kami di WhatsApp.

Leave a Reply

Your email address will not be published. Required fields are marked *