Anda di halaman 1dari 10

LAPORAN PRAKTIKUM MIKROPROSESOR

JOB 5
Traffic Light

Di susun oleh :

Dinda Ayu Ramadhaniyah


NIM. 18642008

Jurusan Teknik Elektro


Politeknik Negeri Samarinda
2021
Traffic Light

I. Tujuan :
1. Mengetahui pemanfaatan mikrokontroler untuk pengontrol traffic light
2. Mengetahui fungsi interrupt dan bagaimana interrupt bekerja.

II. Teori :
Traffic light adalah perangkat penting dalam sebuah system lalulintas yang
berfungsi mengatur arus kendaraan pada persimpangan-persimpangan jalan. Untuk
menghindari kecelakaan, pengaturan nyala lampu harus dilakukan secara teliti dan
tepat. Kesalahan dalam mengatur nyala lampu dapat mengakibatkan kekacauan
lalulintas bahkan kecelakaan.
Urutan nyala lampu lalulintas pada umumnya adalah merah, hijau, kuning,
merah, dan seterusnya. Lampu kuning diperlukan untuk menyala selama 3 detik di
antara matinya lampu merah dan menyalanya lampu hijau. Tujuannya adalah untuk
memberi peringatan bagi pengendara agar menurunkan kecepatan kendaraanya untuk
bersiap-siap berhenti. Sementara itu, perpindahan dari lampu merah ke lampu hijau
tidak memerlukan lampu kuning.
Selain itu, juga terdapat kondisi di mana seluruh lampu merah menyala.
Fungsinya adalah untuk mengosongkan persimpangan. Keadaan ini terjadi ketika
lampu pada satu jalan berganti dari kuning ke merah, maka lampu merah pada jalan
lain tetap menyala selama 3 detik.
Pada percobaan ini, modul traffic light yang akan dijadikan bahan percobaan
ditjunjukkan dalam Gambar 1. Nomor 1 dan 3 merupakan nomor jalan yang juga
menunjukkan posisi traffic light 3 lampu (Merah, Kuning, Hijau). Nyala dan mati
ketiga lampu tersebut diatur pada terminal yang terdapat pada kotak nomor 1 dan 3 di
sebelah kiri panel. Nomor 2, 4, dan 5 menunjukkan lokasi dari penyeberangan (zebra
cross) dan lampu penyeberag jalannya. Nyala dan mati lampu merah dan hijau
penyeberang jalan diatur pada terminal 2, 4, dan 5. Tombol-tombol pada jalan 1, 3,
dan 5 merupakan tombol untuk penyeberang jalan. Terminal tombol terletak pada sisi
kanan atas modul.

Jalan simpang tiga yang terdapat dalam Gambar 1 hanya mempunyai satu arah.
Kendaraan pada 1 hanya bisa mengarah ke 5. Demikian juga dengan kendaraan pada
jalan 3. Agar kendaraan pada jalan 1 dan 3 dapat menuju ke jalan 5, traffic light 1 dan
3 harus diatur sedemikian rupa sehingga arus lalulintas dari jalan 1 dan 2 dapat
mengalir bergantian.

Gambar 1. Persimpangan jalan

Ketika ada seorang penyeberang jalan menekan tombol untuk menyeberang


pada jalan 5, maka arus kendaraan dari jalan 1 dan jalan 2 harus berhenti, dan
menunggu beberapa saat hingga penyeberang melintas. Waktu menunggu
penyeberang melintas ditentukan oleh timer. Untuk penjelasan di atas, diagram waktu
pengaturan lampu pada 1, 3, dan 5 dapat ditunjukkan dengan diagram waktu dalam
Gambar 2.
Gambar 2. Diagram waktu pengaturan lampu lalulintas

Dalam program, penekanan tombol menyeberang yang merupakan proses di


luar alur normal ini dapat dilakukan dengan dua cara yaitu polling dan interrupt.
Dengan metode polling, pemeriksaan kondisi tombol dapat diletakkan dalam fungsi
loop( ) untuk dilihat tiap satu putaran programnya. Kekurangan cara ini adalah reaksi
program untuk merespon penekanan tombol akan lambat karena harus melewati baris
program lainnya. Selain itu, jika periode program normal cukup panjang, maka
penekanan tombol harus cukup panjang agar bisa dibaca oleh program.
Cara lain yang dianggap lebih effektif adalah penggunaan interrupt. Dengan
menggunakan fasilitas interrupt yang umumnya ada pada system mikroprosesor
termasuk Arduino, respon program terhadap adanya penekanan tombol akan lebih
cepat dibanding metode polling. Pada percobaan ini akan dicontohkan bagaimana
menggunakan interrupt.
Untuk menggunakan interrupt pada Arduino Uno, Mini, dan board lain yang
menggunakan mikrokontoler Atmega 328, pin yang digunakan sebagai masukan
adalah pin 2 atau 3. Saat interrupt diaktifkan, sebuah fungsi akan dikerjakan. Dalam
fungsi tersebut tidak diperbolehkan menggunakan perintah delay( ).

III. Alat Percobaan :


 Komputer atau Laptop
 Board Arduino Uno
 Kabel USB
 Modul traffic light

IV. Langkah Percobaan :


1. Rangkai seluruh alat percobaan seperti pada Gambar 3.

Gambar 3 Rangkaian percobaan

2. Bukalah IDE Arduino, kemudian hubungkan computer dengan board Arduino


dengan menggunakan kabel USB.

3. Tuliskan program berikut pada editor IDE.


const int pinBut = 2; // nomor pin tombol
volatile int butState = 0; // untuk deteksi status tombol

const int pinR1 = 13; // nomor pin untuk R1


const int pinY1 = 12; // nomor pin untuk Y1
const int pinG1 = 11; // nomor pin untuk G1
const int pinR3 = 10; // nomor pin untuk R3
const int pinY3 = 9; // nomor pin untuk Y3
const int pinG3 = 8; // nomor pin untuk G3
const int pinR5 = 7; // nomor pin untuk R5
const int pinG5 = 6; // nomor pin untuk G5

void setup() {
// Inisialisasi pinB sebagai input
pinMode(pinBut, INPUT);
attachInterrupt (0, fungsiInterrupt, CHANGE);

// Inisialisasi pinR1 sebagai output


pinMode(pinR1, OUTPUT);
// Inisialisasi pinY1 sebagai output
pinMode(pinY1, OUTPUT);
// Inisialisasi pinG1 sebagai output
pinMode(pinG1, OUTPUT);
// Inisialisasi pinR3 sebagai output
pinMode(pinR3, OUTPUT);
// Inisialisasi pinY3 sebagai output
pinMode(pinY3, OUTPUT);
// Inisialisasi pinG3 sebagai output
pinMode(pinG3, OUTPUT);
// Inisialisasi pinR5 sebagai output
pinMode(pinR5, OUTPUT);
// Inisialisasi pinG5 sebagai output
pinMode(pinG5, OUTPUT);
}

void fungsiInterrupt () {
digitalWrite(pinR1, HIGH);
digitalWrite(pinY1, LOW);
digitalWrite(pinG1, LOW);
digitalWrite(pinR3, HIGH);
digitalWrite(pinY3, LOW);
digitalWrite(pinG3, LOW);
digitalWrite(pinR5, HIGH);
digitalWrite(pinG5, HIGH);
}

void loop() {
digitalWrite(pinR1, HIGH);
digitalWrite(pinY1, LOW);
digitalWrite(pinG1, LOW);
digitalWrite(pinR3, LOW);
digitalWrite(pinY3, LOW);
digitalWrite(pinG3, HIGH);
digitalWrite(pinR5, HIGH);
digitalWrite(pinG5, LOW);
delay (10000);

digitalWrite(pinR1, HIGH);
digitalWrite(pinY1, LOW);
digitalWrite(pinG1, LOW);
digitalWrite(pinR3, LOW);
digitalWrite(pinY3, HIGH);
digitalWrite(pinG3, LOW);
digitalWrite(pinR5, HIGH);
digitalWrite(pinG5, LOW);
delay (5000);

digitalWrite(pinR1, HIGH);
digitalWrite(pinY1, LOW);
digitalWrite(pinG1, LOW);
digitalWrite(pinR3, HIGH);
digitalWrite(pinY3, LOW);
digitalWrite(pinG3, LOW);
digitalWrite(pinR5, HIGH);
digitalWrite(pinG5, LOW);
delay (3000);

digitalWrite(pinR1, LOW);
digitalWrite(pinY1, LOW);
digitalWrite(pinG1, HIGH);
digitalWrite(pinR3, HIGH);
digitalWrite(pinY3, LOW);
digitalWrite(pinG3, LOW);
digitalWrite(pinR5, HIGH);
digitalWrite(pinG5, LOW);
delay (10000);

digitalWrite(pinR1, LOW);
digitalWrite(pinY1, HIGH);
digitalWrite(pinG1, LOW);
digitalWrite(pinR3, HIGH);
digitalWrite(pinY3, LOW);
digitalWrite(pinG3, LOW);
digitalWrite(pinR5, HIGH);
digitalWrite(pinG5, LOW);
delay (5000);

digitalWrite(pinR1, HIGH);
digitalWrite(pinY1, LOW);
digitalWrite(pinG1, LOW);
digitalWrite(pinR3, HIGH);
digitalWrite(pinY3, LOW);
digitalWrite(pinG3, LOW);
digitalWrite(pinR5, HIGH);
digitalWrite(pinG5, LOW);
delay (3000);

4. Compile dan upload program ke board Arduino.


5. Amati kerja rangkaian. Jelaskan cara kerjanya
6. Tekan tombol 5. Amati apa yang terjadi setelahnya. Jelaskan.
7. Tulislah perintah-perintah dalam program di atas yang merupakan bagian dari
interrupt.
8. Apakah fungsi interrupt pada Arduino?
9. Pin mana saja pada Arduino Uno yang dapat digunakan sebagai masukan
interrupt?

V. Data Hasil Percobaan dan Analisa :

5. Lampu pada titik 1 dan 3 bergantian menyala, apabila lampu pada titk 1 berwarna
hijau kemudian menjadi kuning maka lampu pada titik 3 berwarna merah, ketika
lampu pada titik 1 berwarna merah lampu pada titik 3 berubah menjadi hijau
kemudian berwarna kuning dan menjadi merah, kemudian berulang pada titik 1
menjadi berwarna hijau.

6. Apabila tombol pada titik 5 di tekan maka lampu penyebrangan pada titik 5
berubah menjadi warna hijau dan lampu pada titik 3 dan 1 menjadi berwarna merah.

7. Perintah di atas yg ,merupakan bagian dari interrupt antara lain;

const int pinBut = 2; // nomor pin tombol


volatile int butState = 0; // untuk deteksi status tombol
void fungsiInterrupt ()
digitalWrite(pinR1, HIGH);
digitalWrite(pinY1, LOW);
digitalWrite(pinG1, LOW);
digitalWrite(pinR3, HIGH);
digitalWrite(pinY3, LOW);
digitalWrite(pinG3, LOW);
digitalWrite(pinR5, HIGH);
digitalWrite(pinG5, HIGH);

8. Fungsi Interrupt pada Arduino adalah suatu fungsi untuk memicu program lain
secara eksternal atau internal. Singkatnya, dengan memberi masukan atau sebuah
keluaran, akan bisa memproses program lain. Secara sederhana arduino sudah
menyediakan fungsi khusus untuk penggunaan interupt yaitu dengan attachInterrupt
(interrupt, function, mode) .
Khusus untuk Arduino Uno, hanya memiliki 2 pin interrupt yaitu INT0 pada pin 2
digital dan INT1 pada pin 3 digital. Pada bagian fungsi bisa ditulis program fungsi
yang dimaksud. Contoh untuk program fungsi void variasi() .

Mode Penggunaan Interrupt

Mode LOW. Pada mode ini interrupt akan diaktifkan saat pin int memiliki logika low
dan akan aktif selama masih berlogika low. Artinya bila tidak ada trigger awal,
intterupt dapat bekerja menjalankan program fungsi.

Mode CHANGE. Interrupt akan diaktifkan saat terjadi perubahan logika baik dari low
ke high ataupun high ke low.

Mode RISING. Pengaktifan interrupt akan terjadi jika pin mengalami perubahan
logika dari low ke high. Bedanya dengan CHANGE, ketika dari high ke low interrupt
tidak akan aktif.

Mode FALLING. Perubahan logika pada pin int dari high ke low akan mengaktifkan
fungsi interrupt. Ini menjadi kebalikan dari metode RISING.

9.

BOARD ARDUINO DIGITAL PINS

Uno, Nano, Mini, (ATmega 328) 2, 3

Mega, Mega2560, MegaADK 2, 3, 18, 19, 20, 21

Micro, Leonardo, other 32u4- 0, 1, 2, 3, 7


based
Zero Semua pin kecuali pin digital 4
MKR1000 Rev.1 0, 1, 4, 5, 6, 7, 8, 9, A1, A2

Due Semua pin


101
semua pin, namun hanya pins 2, 5, 7, 8, 10, 11,
12, 13
yang dapat bekerja dengan mode CHANGE
VI. Kesimpulan
Mikrokontroler adalah sebuah chip yang berfungsi sebagai pengontrol
rangkaian elektronik dan umunya dapat menyimpan program didalamnya.
Mikrokontroler umumnya terdiri dari CPU (Central Processing Unit), memori, I/O
tertentu dan unit pendukung seperti Analog-to-Digital Converter (ADC) yang sudah
terintegrasi di dalamnya.
Arduino adalah sebuah board mikrokontroller yang berbasis ATmega328.
Arduino memiliki 14 pin input/output yang mana 6 pin dapat digunakan
sebagai output PWM, 6 analog input, crystal osilator 16 MHz, koneksi USB, jack
power, kepala ICSP, dan tombol reset. Arduino mampu men-support
mikrokontroller; dapat dikoneksikan dengan komputer menggunakan kabel USB.

Arduino adalah merupakan sebuah board minimum system mikrokontroler


yang bersifat open source. Didalam rangkaian board arduino terdapat
mikrokontroler AVR seri ATMega 328 yang merupakan produk dari Atmel.
Fungsi Interrupt pada Arduino adalah suatu fungsi untuk memicu program lain
secara eksternal atau internal.
Interupsi memungkinkan tugas-tugas penting tertentu terjadi di latar
belakang dan diaktifkan secara default. Beberapa fungsi tidak akan berfungsi saat
interupsi dinonaktifkan, dan komunikasi masuk dapat diabaikan. Interupsi Namun,
dapat sedikit mengganggu waktu kode, dan mungkin dinonaktifkan untuk bagian
kode yang sangat penting

Anda mungkin juga menyukai