Blog Archive

Arduino Indonesia. Gambar tema oleh Storman. Diberdayakan oleh Blogger.

Supported by Electronics 3 in 1

1. Jasa pencetakan PCB single layer dengan harga paling murah.

(Metode Pembuatan dengan Transfer Toner)
>PCB design sendiri (siap cetak) : Rp.150,-/Cm2
>PCB design dari kami : Rp.250,-/Cm2

(Metode Sablon Full Masking dan Silk Screen minimal pemesanan 100 Pcs)
>PCB design sendiri (siap cetak) : Rp.200,-/Cm2
>PCB design dari kami : Rp.250,-/Cm2

2. Jasa perancangan, perakitan, dan pembuatan trainer pembelajaran elektronika untuk SMK dan Mahasiswa.

3. Jasa perancangan, perakitan, dan pembuatan berbagai macam kontroller, sensor, aktuator, dan tranduser.
>Design Rangkaian / Sistem Elektronika
>Design Rangkaian / Sistem Instrumentasi
>Design Rangkaian / Sistem Kendali
>Kerjasama Riset (data atau peralatan)
>Kerjasama Produksi Produk-Produk KIT Elektronika
>Produksi Instrumentasi Elektronika

4. Jasa Pembuatan Proyek, Tugas Akhir, Tugas Laboratorium, PKM, Karya Ilmiah, SKRIPSI, dll

Like My Facebook

Popular Posts

Senin, 11 Mei 2026

Arduino Traffic Light - Cara Membuat Simulasi Lampu Lalu Lintas dengan Arduino

Lampu lalu lintas adalah salah satu contoh sistem otomatis yang sangat mudah dipelajari menggunakan Arduino. Dengan project ini, kita bisa memahami dasar kontrol output digital, pengaturan timing, penggunaan array, hingga teknik non-blocking menggunakan fungsi millis(). Pada artikel ini, kita akan belajar cara menghubungkan modul Traffic Light ke Arduino, mengontrol nyala lampu merah, kuning, dan hijau, serta membuat sistem lampu lalu lintas yang lebih rapi dan efisien menggunakan beberapa metode pemrograman.

Komponen yang Dibutuhkan

- Arduino UNO R3

- Kabel USB

- Breadboard

- Kabel jumper

- Modul Traffic Light

 

Baca juga: Arduino Button Debounce - Cara Mengatasi Tombol Terbaca Berkali-kali 

Mengenal Modul Traffic Light

Modul Traffic Light biasanya terdiri dari 3 LED, yaitu merah, kuning, dan hijau. Ketiga LED tersebut sudah dirangkai dalam satu modul sehingga lebih praktis digunakan daripada merangkai LED satu per satu.

Pin pada Modul Traffic Light

Modul Traffic Light

Modul Traffic Light umumnya memiliki 4 pin, yaitu:

Cara Kerja Traffic Light

Arduino akan mengontrol setiap LED secara bergantian:

1. Lampu merah menyala

2. Lampu kuning menyala

3. Lampu hijau menyala

4. Siklus kembali ke awal

Sistem ini bekerja seperti simulasi lampu lalu lintas sederhana.

Menghubungkan Modul ke Arduino

Berikut contoh koneksinya:

Dasar Mengontrol LED pada Traffic Light

Untuk mengontrol lampu, Arduino menggunakan digitalWrite(pin, HIGH) untuk menyalakan LED, dan digitalWrite(pin, LOW) untuk mematikan LED.

Wiring Diagram

Program Dasar Traffic Light Arduino

Kode Program

 

#define PIN_RED    2

#define PIN_YELLOW 3

#define PIN_GREEN  4


#define RED_TIME     4000

#define YELLOW_TIME  4000

#define GREEN_TIME   4000


void setup() {


  pinMode(PIN_RED, OUTPUT);

  pinMode(PIN_YELLOW, OUTPUT);

  pinMode(PIN_GREEN, OUTPUT);

}


void loop() {


  // Lampu merah

  digitalWrite(PIN_RED, HIGH);

  digitalWrite(PIN_YELLOW, LOW);

  digitalWrite(PIN_GREEN, LOW);


  delay(RED_TIME);


  // Lampu kuning

  digitalWrite(PIN_RED, LOW);

  digitalWrite(PIN_YELLOW, HIGH);

  digitalWrite(PIN_GREEN, LOW);


  delay(YELLOW_TIME);


  // Lampu hijau

  digitalWrite(PIN_RED, LOW);

  digitalWrite(PIN_YELLOW, LOW);

  digitalWrite(PIN_GREEN, HIGH);


  delay(GREEN_TIME);

}

 

Cara Kerja Program

Program di atas bekerja secara berurutan, mulai dari LED merah menyala selama beberapa detik, LED kuning menyala, LED hijau menyala, dan siklus tersebut diulang secara terus-menerus.

Menjalankan Program

1. Hubungkan Arduino ke komputer

2. Buka Arduino IDE

3. Salin kode program

4. Pilih board dan port yang sesuai

5. Klik Upload

 

6. Perhatikan modul Traffic Light

Kelemahan Menggunakan delay()

Meskipun mudah dipahami, penggunaan delay() memiki kekurangan. Saat delay berjalan Arduino berhenti sementara, tidak bisa membaca sensor, dan tidak bisa menjalankan task lain. Oleh karena itu, project yang lebih kompleks biasanya menggunakan metode non-blocking.

Merapikan Program dengan Function

Kode sebelumnya masih cukup panjang karena banyak pengulangan. Kita bisa membuat function agar kode lebih rapi.

Program Traffic Light dengan Function

Kode Program

 

#define PIN_RED 2

#define PIN_YELLOW 3

#define PIN_GREEN 4


#define RED_TIME 2000

#define YELLOW_TIME 1000

#define GREEN_TIME 2000


#define RED 0

#define YELLOW 1

#define GREEN 2


const int pins[] = {PIN_RED, PIN_YELLOW, PIN_GREEN};

const int times[] = {RED_TIME, YELLOW_TIME, GREEN_TIME};


void setup() {


  pinMode(PIN_RED, OUTPUT);

  pinMode(PIN_YELLOW, OUTPUT);

  pinMode(PIN_GREEN, OUTPUT);

}


void loop() {


  traffic_light_on(RED);

  delay(times[RED]);


  traffic_light_on(YELLOW);

  delay(times[YELLOW]);


  traffic_light_on(GREEN);

  delay(times[GREEN]);

}


void traffic_light_on(int light) {


  for (int i = RED; i <= GREEN; i++) {


    if (i == light)

      digitalWrite(pins[i], HIGH);

    else

      digitalWrite(pins[i], LOW);

  }

}

 

Kenapa Menggunakan array()?

Menggunakan array dalam pemrograman membuat kode menjadi lebih rapi, singkat, dan mudah dikelola. Dengan array, kita tidak perlu menulis banyak variabel satu per satu karena data seperti pin LED dan durasi lampu bisa disimpan dalam satu tempat yang terstruktur. Selain itu, penggunaan array juga lebih fleksibel saat ingin menambah, mengurangi, atau mengubah jumlah data, sehingga program menjadi lebih mudah dikembangkan dan dipelajari.

Membuat Program Lebih Ringkas dengan for Loop

Kita juga bisa mempersingkat program menggunakan for(). Dengan loop, Arduino bisa berpindah antar lampu secara otomatis tanpa menulis kode berulang.

Program Traffic Light dengan for Loop

Kode Program

 

#define PIN_RED    2 

#define PIN_YELLOW 3

#define PIN_GREEN  4


#define RED_TIME     2000

#define YELLOW_TIME  1000

#define GREEN_TIME   2000


#define RED    0

#define YELLOW 1

#define GREEN  2


const int pins[]  = {PIN_RED, PIN_YELLOW, PIN_GREEN};

const int times[] = {RED_TIME, YELLOW_TIME, GREEN_TIME};


void setup() {


  pinMode(PIN_RED, OUTPUT);

  pinMode(PIN_YELLOW, OUTPUT);

  pinMode(PIN_GREEN, OUTPUT);

}


void loop() {


  for (int light = RED; light <= GREEN; light++) {


    traffic_light_on(light);


    delay(times[light]);

  }

}


void traffic_light_on(int light) {


  for (int i = RED; i <= GREEN; i++) {


    if (i == light)

      digitalWrite(pins[i], HIGH);

    else

      digitalWrite(pins[i], LOW);

  }

}

 

Membuat Traffic Light Tanpa delay()

Sekarang kita akan membuat versi yang lebih profesional menggunakan millis(). Program menjadi tidak blocking, Arduino tetap responsif, dan bisa menjalankan task lain secara bersamaan.

Program Traffic Light dengan millis()

Kode Program

 

#define PIN_RED 2

#define PIN_YELLOW 3

#define PIN_GREEN 4


#define RED_TIME 2000

#define YELLOW_TIME 1000

#define GREEN_TIME 2000


#define RED 0

#define YELLOW 1

#define GREEN 2


const int pins[] = {PIN_RED, PIN_YELLOW, PIN_GREEN};

const int times[] = {RED_TIME, YELLOW_TIME, GREEN_TIME};


unsigned long last_time = 0;


int light = RED;


void setup() {


  pinMode(PIN_RED, OUTPUT);

  pinMode(PIN_YELLOW, OUTPUT);

  pinMode(PIN_GREEN, OUTPUT);


  traffic_light_on(light);


  last_time = millis();

}


void loop() {


  if ((millis() - last_time) > times[light]) {


    light++;


    if (light >= 3)

      light = RED;


    traffic_light_on(light);


    last_time = millis();

  }


  // kode lain bisa ditambahkan di sini

}


void traffic_light_on(int light) {


  for (int i = RED; i <= GREEN; i++) {


    if (i == light)

      digitalWrite(pins[i], HIGH);

    else

      digitalWrite(pins[i], LOW);

  }

}

 

Kenapa millis() Lebih Baik?

Penggunaan millis() pada Arduino lebih baik dibandingkan delay() karena program dapat tetap berjalan tanpa harus berhenti sementara. Dengan teknik ini, Arduino masih bisa menjalankan tugas lain secara bersamaan sehingga lebih cocok untuk project multitasking. Selain membuat program menjadi lebih responsif, penggunaan millis() juga sangat penting dalam pengembangan project Arduino yang lebih kompleks dan profesional.

 

Baca juga: Arduino Button - Cara Menggunakan Push Button dengan Arduino UNO 

 

 

 

Dalam praktik, hasil dan kendala yang ditemui bisa berbeda tergantung perangkat, konfigurasi, versi library, dan sistem yang digunakan.  

0 on: "Arduino Traffic Light - Cara Membuat Simulasi Lampu Lalu Lintas dengan Arduino"