Minggu, 25 Januari 2015

Traffic Light 3 Simpang Menggunakan ATMega8535

       Baiklah pada kali ini kita akan mempelajari Traffic Light 3 Simpang Menggunakan ATMega8535. Traficlight seperti kita ketahui digunakan untuk mengatur lalu lintas pada persimpangan jalan baik pertigaan atau perempatan bahkan simpang lima. Traficlight digunakan untuk menggantikan tugas pak polisi supaya kerjanya lebih ringan dan he he he tinggal tilang aja klo ada yang gak nurut.. cukup sekian basa basinya langsung saja ke konfigurasi hardwarenya. trafic ini terdiri dari komponen utama yaitu:
  • LED warna merah, kuning, hijau
  • Mikrokontroller ATMega8535
seperti biasa pada kali ini kita menggunakan software simuasi berupa proetus (jika belum ada bisa klik download ). kita susun menggunakan 2 PORT yaitu PORTC dan PORTD sebagai outputan dari LED.

berikut penampakannya :




   Pada prinsipnya kerja traficlight adalah menyalakan lampu hijau dan lampu kuning secara bergantian, misalnya pada trafic light 3 jalur ini. Pada traficlight ini nyala lampu hijau dan kuning dibuat sama untuk 3 jalurnya yaitu 8 detik untuk lampu hijau dan 3 detik untuk lampu kuning jadi totalnya adalah 11 detik. sedangkan untuk nyala lampu merahnya adalah 2 kali lipat nyala lampu hijau + Kuning, jadi untuk nyala lampu merahnya adalah 11+11= 22.

   Setelah paham lalu kita buat program  menggunakan CV AVR, kita buka softaware CodeVision AVR, jika belum punya didownload disini. Setelah CodeVision AVR sudah dibuka maka selanjutnya kita membuat sebuah program.

berikut program listingnya:

Chip type               : ATmega8535
Program type            : Application
AVR Core Clock frequency: 11,059200 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 128
*****************************************************/

#include <mega8535.h>
#include <stdio.h>
#include <stdlib.h>
#include <delay.h>//menambahkan fungsi delay

// Declare your global variables here



void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=P State0=P 
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 
PORTC=0x00;
DDRC=0xFF; //menjadikan PORTC sebagai output

// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 
PORTD=0x00;
DDRD=0xFF; //menjadikan PORTD sebagai output

while (1)
      {
      // Place your code here

       //buatlah kemunkinan yang terjadi         
      
      //mengaktifkan lampu hijau pada simpang 1
      PORTD.0=0;
      PORTD.1=0;
      PORTD.2=1; 

      //mengaktifkan lampu merah pada simpang 2
      PORTC.0=1;
      PORTC.1=0;
      PORTC.2=0;

      //mengaktifkan lampu merah pada simpang 3
      PORTC.3=1;
      PORTC.4=0;
      PORTC.5=0; 

      delay_ms(800); //waktu lama kondisi keadaan diatas 

      //mengaktifkan lampu hijau pada simpang 1
      PORTD.0=0;
      PORTD.1=0;
      PORTD.2=1;

      //mengaktifkan lampu kuning pada simpang 2
      PORTC.0=0;
      PORTC.1=1;
      PORTC.2=0;

       //mengaktifkan lampu merah pada simpang 3
      PORTC.3=1;
      PORTC.4=0;
      PORTC.5=0;

      delay_ms(200); //waktu lama kondisi keadaan diatas 

      //mengaktifkan lampu merah pada simpang 1
      PORTD.0=1;
      PORTD.1=0;
      PORTD.2=0;

      //mengaktifkan lampu hijau pada simpang 2
      PORTC.0=0;
      PORTC.1=0;
      PORTC.2=1;

       //mengaktifkan lampu merah pada simpang 3
      PORTC.3=1;
      PORTC.4=0;
      PORTC.5=0;
      delay_ms(800); //waktu lama kondisi keadaan diatas 

       //mengaktifkan lampu merah pada simpang 1
      PORTD.0=1;
      PORTD.1=0;
      PORTD.2=0;

       //mengaktifkan lampu hijau pada simpang 2
      PORTC.0=0;
      PORTC.1=0;
      PORTC.2=1;

      //mengaktifkan lampu kuning pada simpang 3
      PORTC.3=0;
      PORTC.4=1;
      PORTC.5=0;

      delay_ms(200); //waktu lama kondisi keadaan diatas 

      //mengaktifkan lampu merah pada simpang 1
      PORTD.0=1;
      PORTD.1=0;
      PORTD.2=0;

      //mengaktifkan lampu merah pada simpang 2
      PORTC.0=1;
      PORTC.1=0;
      PORTC.2=0;

      //mengaktifkan lampu hijau pada simpang 3
      PORTC.3=0;
      PORTC.4=0;
      PORTC.5=1;

      delay_ms(800); //waktu lama kondisi keadaan diatas 

       //mengaktifkan lampu kuning pada simpang 1
      PORTD.0=0;
      PORTD.1=1;
      PORTD.2=0;

      //mengaktifkan lampu merah pada simpang 2
      PORTC.0=1;
      PORTC.1=0;
      PORTC.2=0;

       //mengaktifkan lampu hijau pada simpang 3
      PORTC.3=0;
      PORTC.4=0;
      PORTC.5=1;

      delay_ms(200);//waktu lama kondisi keadaan diatas 

      }


setelah itu kita masukan progam ke proteus, dan kita simulasikan.


nah sekian semoga ilmu ini bermanfaat bagi kita semua :)
salam GGMU!!

3 komentar: