Membuat Lampu Lalulintas 3 Jalur Berbasis Mikrokontroler Atmega16

Sering kita menemukan simpang tiga dan simpang empat. Sebelumnya saya sudah membuat pengendali lampu lalulintas 4 jalur atau simpang empat berbasis Atmega16 karena untuk menyelesaikan tugas Uji Kompetensi Keahlian (UKK) kelas XII. Untuk jejak kali ini saya akan mencoba membuat pengendali lampu lalulintas 3 jalur atau simpang tiga berbasis Atmega16.

Denah lalulintas 3 jalur ditunjukkan seperti gambar di bawah ini.

Rangkaian elektronik yang dirancang untuk Pengendali Lampu Lalulintas 3 Jalur Berbasis ATMEGA16 seperti gambar di bawah ini.

Rangkaian pengawatan untuk pengendali lampu lalulintas 3 jalur yang dirancang sebagai berikut.

Kalo kita perhatikan lampu lalulintas menyala bergantian secara berputar seperti yang digambarkan dalam diagram waktu di bawah ini.

Diagram Alir program Pengendali Lampu Lalulintas 3 Jalur seperti rangkaian di atas seperti gambar di bawah ini.

List Program bahasa C yang digunakan untuk Pengendali Lampu Lalulintas Berbasis Atmega16 sebagai berikut.

#include <mega16.h>
#include <delay.h>

int i=0;

#define START PINB.0
#define STOP PINB.1
#define LEDJ1R PORTA.0
#define LEDJ1Y PORTA.1
#define LEDJ1G PORTA.2
#define LEDJ2R PORTA.3
#define LEDJ2Y PORTA.4
#define LEDJ2G PORTA.5
#define LEDJ3R PORTC.3
#define LEDJ3Y PORTC.4
#define LEDJ3G PORTC.5

#define ON 1
#define OFF 0

void main(void)
{
DDRA = 0xff ;
PORTA = 0x00 ;
DDRB = 0x00 ;
PORTB = 0x03 ;
DDRC = 0xff ;
PORTC = 0x00 ;

while (1)
{
if ( START == 0 ) /*Jika saklar Start ditekan mulai Running*/
{
while (i<1)
{
LEDJ1R = OFF ;
LEDJ1Y = OFF ;
LEDJ1G = ON ;

LEDJ2R = ON ;
LEDJ2Y = OFF ;
LEDJ2G = OFF ;

LEDJ3R = ON ;
LEDJ3Y = OFF ;
LEDJ3G = OFF ;

delay_ms ( 1000 ) ; /*LED Hijau Jalur 1 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 1 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 1 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 1 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 1 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 1 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 1 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 1 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 1 Nyala*/
if ( STOP == 0 ){break;}

LEDJ1R = OFF ;
LEDJ1Y = ON ;
LEDJ1G = OFF ;

LEDJ2R = ON ;
LEDJ2Y = OFF ;
LEDJ2G = OFF ;

LEDJ3R = ON ;
LEDJ3Y = OFF ;
LEDJ3G = OFF ;

delay_ms ( 1000 ) ; /*LED Kuning Jalur 1 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Kuning Jalur 1 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Kuning Jalur 1 Nyala*/
if ( STOP == 0 ){break;}

LEDJ1R = ON ;
LEDJ1Y = OFF ;
LEDJ1G = OFF ;

LEDJ2R = OFF ;
LEDJ2Y = OFF ;
LEDJ2G = ON ;

LEDJ3R = ON ;
LEDJ3Y = OFF ;
LEDJ3G = OFF ;

delay_ms ( 1000 ) ; /*LED Hijau Jalur 2 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 2 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 2 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 2 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 2 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 2 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 2 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 2 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 2 Nyala*/
if ( STOP == 0 ){break;}

LEDJ1R = ON ;
LEDJ1Y = OFF ;
LEDJ1G = OFF ;

LEDJ2R = OFF ;
LEDJ2Y = ON ;
LEDJ2G = OFF ;

LEDJ3R = ON ;
LEDJ3Y = OFF ;
LEDJ3G = OFF ;

delay_ms ( 1000 ) ; /*LED Kuning Jalur 2 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Kuning Jalur 2 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Kuning Jalur 2 Nyala*/
if ( STOP == 0 ){break;}

LEDJ1R = ON ;
LEDJ1Y = OFF ;
LEDJ1G = OFF ;

LEDJ2R = ON ;
LEDJ2Y = OFF ;
LEDJ2G = OFF ;

LEDJ3R = OFF ;
LEDJ3Y = OFF ;
LEDJ3G = ON ;

delay_ms ( 1000 ) ; /*LED Hijau Jalur 3 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 3 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 3 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 3 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 3 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 3 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 3 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 3 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Hijau Jalur 3 Nyala*/
if ( STOP == 0 ){break;}

LEDJ1R = ON ;
LEDJ1Y = OFF ;
LEDJ1G = OFF ;

LEDJ2R = ON ;
LEDJ2Y = OFF ;
LEDJ2G = OFF ;

LEDJ3R = OFF ;
LEDJ3Y = ON ;
LEDJ3G = OFF ;

delay_ms ( 1000 ) ; /*LED Kuning Jalur 3 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Kuning Jalur 3 Nyala*/
if ( STOP == 0 ){break;}
delay_ms ( 1000 ) ; /*LED Kuning Jalur 3 Nyala*/
if ( STOP == 0 ){break;}
}
}
}

}

Video hasil simulasi bisa dilihat di bawah ini.

LIHAT JUGA :  Membuat Running Text LCD Banyak Variasi Berbasis Mikrokontroler Atmega16

Tinggalkan komentar