Senin, 15 Agustus 2011

Traffic light 4 jalur menggunakan ATMEGA16

Traffic light 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 tinggal tilang aja kalau ada yang melanggar. .Trafic Light ini terdiri dari tiga buah komponen utama yaitu:
  1. Controler (ATmega16)
  2. Counter display 7 segment
  3.  Led merah, kuning dan hijau
Controler pada trafic ini menggunakan atmega16
Counter display menggunakan 7 segment dengan shift register sebagai perantara pengiriman data dari controler Led merah, kuning dan hijau digunakan mengatur lalulintas merah artinya stop, hijau artinya jalan dan kuning artinya jalan ngebut (keburu lampu merahnya nyala)
 
Pada prinsipnya kerja traficlight adalah menyalakan lampu hijau dan lampu kuning secara bergantian, misalnya pada trafic light 4 jalur ini. Pada traficlight ini nyala lampu hijau dan kuning dibuat sama untuk 4 jalurnya yaitu 8 detik untuk lampu hijau dan 2 detik untuk lampu kuning jadi totalnya adalah 11 detik. sedangkan untuk nyala lampu merahnya adalah 3 kali lipat nyala lampu hijau + Kuning, jadi untuk nyala lampu merahnya adalah 11+11+11 = 35. lho kog 35 bukannya 33? eit jangan salah dalam trafic light counter downnya menghitung atau mencacah sampai angka nol (0) bukan 1 untuk lebih jelasnya berikut adalah timeline nya

keterangan
garis hijau = lama nyala lampu hijau
garis kuning = lama nyala lampu kuning
garis merah = lama nyala lampu merah
 
setelah mengetahui konsepnya maka dapat langsung diimplementasikan pada programnya. disini bahasa pemrogramannya menggunakan Bascomavr. Berikut merupakan inti dari program traficlight diatas:

program utama

Do
Gosub Tampil1
Gosub Tampil2
Gosub Tampil3

Gosub Tampil4


Gosub Trafic1

Gosub Trafic2
Gosub Trafic3

Gosub Trafic4

Decr Sat1
Decr Sat2
Decr Sat3
Decr Sat4

Loop

Sub program ini berfungsi untuk memanggil sub program tampil dan sub program trafic dan juga digunakan untuk men- decrement- menurunkan nila variabel sat.

Sub program tampil

Tampil1:
Reset Oe1

Kodesat1 = Lookup(sat1 , Kode)
Kodepul1 = Lookup(pul1 , Kode)

Shiftout Data1 , Clock1 , Kodesat1 , 1
Shiftout Data1 , Clock1 , Kodepul1 , 1

Waitms 200 Set Oe1
Return


Sub program tersebut digunakan untuk menampilkan data data pada tabel lookup (yang berisi data nilai 0 sampai 9) ke seven segment melalui shift register. berikut merupakan tabel lookup nya:

Kode:
Data &HC0 , &HF9 , &HA4 , &HB0 , &H99 , &H92 , &H82 , &HF8 , &H80 , &H90
Sub program trafic

Trafic1:

'lampu

If A1 = 0 And B1 = 0 Then

Merah1 = 0

Kuning1 = 0
Hijau1 = 1

End If

If A1 = 0 And B1 = 1 Then
Merah1 = 1
Kuning1 = 0

Hijau1 = 0

End If


If A1 = 1 And B1 = 0 Then

Merah1 = 0

Kuning1 = 1

Hijau1 = 0
End If


'counter


If Sat1 = 0 And Pul1 = 0 And Flaghijau1 = 0 And Flagkuning1 = 0 Then

Sat1 = 3
Pul1 = 0

Flaghijau1 = 1
A1 = 1

B1 = 0

End If

If Sat1 = 0 And Pul1 = 0 And Flaghijau1 = 1 And Flagkuning1 = 0 Then

Sat1 = 6
Pul1 = 3

Flagkuning1 = 1

A1 = 0
B1 = 1

End If

If Sat1 = 0 And Pul1 = 0 And Flaghijau1 = 1 And Flagkuning1 = 1 Then
A1 = 0

B1 = 0

Flaghijau1 = 0
Flagkuning1 = 0

End If


If Sat1 = 0 And Pul1 = 3 Then

Decr Pul1

Sat1 = 10
End If


If Sat1 = 0 And Pul1 = 2 Then
Decr Pul1

Sat1 = 10
End If


If Sat1 = 0 And Pul1 = 1 Then

Decr Pul1

Sat1 = 10
End If


Return

Sub program ini mempunyai 2 fungsi yaitu: Untuk menyalakan lampu merah, hijau dan kuning, dan untuk mengatur counter down (dengan perintah if...then) supaya bisa mencacah sesuai dengan angka angka pada timeline yang telah ditentukan.

Sumber : allabouthenda.blogspot.com

0 komentar:

Posting Komentar

 
Copyright (c) 2010 AkabriUdara and Powered by Blogger.