Kendali Lampu Lalulintas 4 Jalur Berbasis Mikrokontroler ATMEGA16

Salah satu syarat yang harus diikuti oleh kelas XII SMK yaitu lulus Uji Kompetensi Keahlian (UKK). Soal UKK diberikan oleh PSMK dengan beberapa paket soal.

Paket soal UKK Teknik Elektronika Industri tahun 2019, yaitu :

  • Kontrol elektronik menjalankan motor DC dengan AT89S51
  • Kontrol elektronik menghidupkan LED dengan AT89S51
  • Pengendali Sortir Barang dengan Peralatan Pneumatik
  • Stamping Mesin dengan Peralatan Pneumatik

Untuk paket 2 dimodifikasi sehingga judulnya menjadi Pengendali Lampu Lalulintas Berbasis ATMEGA 16, dengan prinsip kerja yang sama persis dengan paket soal 2.

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

Sebelum merakit ke alat sesungguhnya alangkah lebih baik dibuat simulasinya lebih dahulu untuk menghidari kesalahan perakitan dan pemograman alat.

Berikut ini gambar program simulasi menggunakan aplikasi Proteus, sedangkan list programnya CodeVisionAVR.


Gambar Rangkaian Menggunakan Aplikasi Proteus

Bentuk rangkaian pengawatan untuk pengendali lampu lalulintas yang dirancang sebagai berikut.

 

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

 

List Program bahasa C yang digunakan untuk Pengendali Lampu Lalulintas Berbasis Atmega 16 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 LEDJ4R   PORTC.0

#define LEDJ4Y   PORTC.1

#define LEDJ4G   PORTC.2

#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 ;

            LEDJ4R = ON ;

            LEDJ4Y = OFF ;

            LEDJ4G = 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 ;

            LEDJ4R = ON ;

            LEDJ4Y = OFF ;

            LEDJ4G = 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 ;

            LEDJ4R = ON ;

            LEDJ4Y = OFF ;

            LEDJ4G = 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 ;

            LEDJ4R = ON ;

            LEDJ4Y = OFF ;

            LEDJ4G = 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 ;

            LEDJ4R = ON ;

            LEDJ4Y = OFF ;

            LEDJ4G = OFF ;

            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 ;




            LEDJ4R = ON ;

            LEDJ4Y = OFF ;

            LEDJ4G = 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;}




            LEDJ1R = ON ;

            LEDJ1Y = OFF ;

            LEDJ1G = OFF ;

            LEDJ2R = ON ;

            LEDJ2Y = OFF ;

            LEDJ2G = OFF ;

            LEDJ3R = ON ;

            LEDJ3Y = OFF ;

            LEDJ3G = OFF ;

            LEDJ4R = OFF ;

            LEDJ4Y = OFF ;

            LEDJ4G = ON ;

            delay_ms ( 1000 ) ;    /*LED Hijau Jalur 4 Nyala*/

            if ( STOP == 0 ){break;}

            delay_ms ( 1000 ) ;    /*LED Hijau Jalur 4 Nyala*/

            if ( STOP == 0 ){break;}

            delay_ms ( 1000 ) ;    /*LED Hijau Jalur 4 Nyala*/

            if ( STOP == 0 ){break;}

            delay_ms ( 1000 ) ;    /*LED Hijau Jalur 4 Nyala*/

            if ( STOP == 0 ){break;}

            delay_ms ( 1000 ) ;    /*LED Hijau Jalur 4 Nyala*/

            if ( STOP == 0 ){break;}

            delay_ms ( 1000 ) ;    /*LED Hijau Jalur 4 Nyala*/

            if ( STOP == 0 ){break;}

            delay_ms ( 1000 ) ;    /*LED Hijau Jalur 4 Nyala*/

            if ( STOP == 0 ){break;}

            delay_ms ( 1000 ) ;    /*LED Hijau Jalur 4 Nyala*/

            if ( STOP == 0 ){break;}

            delay_ms ( 1000 ) ;    /*LED Hijau Jalur 4 Nyala*/

            if ( STOP == 0 ){break;}

            LEDJ1R = ON ;

            LEDJ1Y = OFF ;

            LEDJ1G = OFF ;

            LEDJ2R = ON ;

            LEDJ2Y = OFF ;

            LEDJ2G = OFF ;

            LEDJ3R = ON ;

            LEDJ3Y = OFF ;

            LEDJ3G = OFF ;

            LEDJ4R = OFF ;

            LEDJ4Y = ON ;

            LEDJ4G = OFF ;

            delay_ms ( 1000 ) ;    /*LED Kuning Jalur 4 Nyala*/

            if ( STOP == 0 ){break;}

            delay_ms ( 1000 ) ;    /*LED Kuning Jalur 4 Nyala*/

            if ( STOP == 0 ){break;}

            delay_ms ( 1000 ) ;    /*LED Kuning Jalur 4 Nyala*/

            if ( STOP == 0 ){break;}

            }   
       }
}




}

 

Hasil simulasi bisa dilihat dalam video berikut.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *