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

Mengenal Modul Traffic Light

Modul Traffic Light biasanya terdiri dari:

- LED merah

- LED kuning

- LED hijau

Ketiga LED tersebut sudah dirangkai dalam satu modul sehingga lebih praktis digunakan dibanding 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 koneksi:

Dasar Mengontrol LED pada Traffic Light

Untuk mengontrol lampu, Arduino menggunakan:

 

digitalWrite(pin, HIGH);

 

Untuk menyalakan LED.

 

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:

- Merah menyala selama beberapa detik

- Kuning menyala

- Hijau menyala

- Siklus diulang terus-menerus

Menjalankan Program

Ikuti langkah berikut:

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

- 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?

Dengan array:

- Kode lebih singkat

- Mudah diubah

- Lebih fleksibel

Kita cukup menyimpan:

- pin LED

- durasi lampu

ke dalam array.

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

 

Keuntungannya:

- Program tidak blocking

- Arduino tetap responsif

- 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?

Menggunakan millis() membuat Arduino:

- Tetap menjalankan program lain

- Tidak berhenti seperti delay()

- Cocok untuk project multitasking

Teknik ini sangat penting dalam project Arduino yang lebih kompleks.

 

 

 

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"