Anda di halaman 1dari 22

LAPORAN PRAKTIKUM

MIKROPROSESOR
MODUL I : DIGITAL INPUT DAN DIGITAL OUTPUT

Disusun Oleh :
Atwatan Malik Mahardi
(17101008)

Partner Praktikum :
Anang Bagus R (17101006)

Praktikum Tanggal : 11 Maret 2019

Asisten Praktikum :
Indak Danil Mabar (16101134)

LABORATORIUM TEKNIK ELEKTRONIKA DAN TEKNIK DIGITAL


FAKULTAS TEKNIK TELEKOMUNIKASI DAN ELEKTRO (FTTE)
INSTITUT TEKNOLOGI TELKOM
JL. D.I. PANJAITAN 128 PURWOKERTO
2019
MODUL I
DIGITAL INPUT DAN DIGITAL OUTPUT

I. TUJUAN PRAKTIKUM
1. Mahasiswa mampu memahami pembagian port dan pin pada Board
Arduino Uno R3.
2. Mahasiswa mampu memahami fungsi pin I/O pada Board Arduino
Uno R3 sebagai input dan output.
3. Mahasiswa mampu mengkonfigurasi pin I/O Arduino Uno R3 sebagai
input dan output.
4. Mahasiswa mampu membuat program yang menggunakan pin I/O
Arduino Uno R3.
5. Mahasiswa Mampu menggunakan Arduino IDE untuk memprogram
dan meng-upload program ke Board Arduino Uno R3.

II. ALAT DAN BAHAN


1. Board Arduino Uno R3 : 1 (satu) buah
2. Kabel USB tipe A ke B : 1 (satu) buah
3. Breadboard : 1 (satu) buah
4. LED merah : 6 (enam) buah
5. LED hijau : 1 (satu) buah
6. Resistor 220 Ω : 6 (enam) buah
7. Resistor 10 KΩ : 2 (dua) buah
8. Tombol saklar (pushbutton) : 2 (dua) buah
9. Buzzer 5V : 1 (satu) buah
10. Kabel Jumper male-to-male sesuai kebutuhan

III. DASAR TEORI


1. Arduino
Arduino merupakan sebuah platform dari physical computing yang
bersifat open source. Arduino merupakan hasil kombinasi dari
hardware, bahasa pemrograman, dan Integrated Development
Environment (IDE). IDE merupakan sebuah program yang berperan
untuk menulis program kemudian meng-compile program tersebut
menjadi biner dan upload ke memory microcontroller.[1]

Gambar 1.3.1 Papan Arduino Uno.[2]


Arduino dikembangkan oleh sebuah tim yang terdiri dari 5 anggota
inti, yaitu :
➢ Massimo Banzi Milano (Italia)
➢ David Cuartielles Malmoe (Swedia)
➢ Tom Igoe New York (United States)
➢ Gianluca Martino Torino (Italia)
➢ David A. Mellis Boston, MA (USA)
Arduino memiliki beberapa kelebihan sehingga menjadi pilihan
utama para pengguna mikrokontroler, kelebihan arduino :
1. Murah.
Harga perangkat Arduino berkisar antara 200-300 ribu dan
harganya akan lebih murah jika pengguna bisa membuat papannya
sendiri dengan perakitan komponen satu per satu.
2. Open Source/Lintas Platform.
Software Arduino bisa dijalankan di berbagai sistem operasi seperti
Windows dan Linux.
3. User Friendly.
Arduino sangat mudah dipelajari dan digunakan. Arduino
menggunakan bahasa pemrograman tingkat tinggi serupa dengan
bahasa C/C++ yang sudah cukup familiar.[1]
Gambar 1.3.2 Bagian Papan Arduino.[1]
Bagian-bagian papan arduino :
1. Pin 0-13.
Berfungsi sebagai masukan dan keluaran.
2. USB.
Masukkan program dari komputer dan masukkan daya listrik ke
papan.
3. Tombol Reset S1.
Berfungsi untuk mengatur ulang program.
4. Pin 0-5.
Berfungsi untuk membaca masukkan yang berasal dari sensor
analog.[1]
2. Arduino IDE.
Papan Arduino diprogram dengan menggunakan aplikasi Arduino
IDE untuk membuat, membuka, dan mengedit source code Arduino.
Source code yang berisi logika dan algoritma pada Arduino disebut
dengan Sketch. [3]

Gambar 1.3.3 Interface Arduino IDE.[3]


3. Spesifikasi Arduino.
Spesifikasi Arduino UNO :
1) Microcontroller : ATmega328
2) Operating Voltage : 5V
3) Uno Board Recommended Input Voltage : 7 – 12 V
4) Uno Board Input Voltage Limits : 6 – 20 V
5) Digital I/O Pins :14 total – 6 of which
can be PWM
6) Analog Input Pins :6
7) Maximum DC Current per I/O pin at 5VDC : 40ma
8) Maximum DC Current per I/I pinat 3.3 VDC : 50ma
9) Flash Memory : 32KB (0.5KB used
by bootloader)
10)SRAM Memory : 2KB
11) EEPROM : 1KB
12)Clock Speed : 16 Mhz.[2]
IV. HASIL DATA
A) Digital Output.
1) LED Menyala Kedip (Blink).
Source Code Program :
//Program Blink
int led = 8;
void setup()
{
pinMode(led, OUTPUT);
}
void loop()
{
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
}

Hasil :

Gambar 1.4.1 Simulasi LED Menyala Kedip.

2) LED Menyala Bergantian (Flip Flop).


Source Code Program :
//Program Flip-flop
int merah = 8;
int hijau = 9;
int waktu = 1000;
void setup()
{
pinMode(merah, OUTPUT);
pinMode(hijau, OUTPUT);
}
void loop()
{
digitalWrite(merah, HIGH);
digitalWrite(hijau, LOW);
delay(waktu);
digitalWrite(merah, LOW);
digitalWrite(hijau, HIGH);
delay(waktu);
}

Hasil :

Gambar 1.4.2 Simulasi LED Menyala Flip Flop.

3) LED Berjalan (Running LED).


Source Code Program :
//Program LED berjalan (Running LED)
int led;
int waktu = 200;
void setup()
{
for(led = 2; led <= 7; led++)
{
pinMode(led, OUTPUT);
digitalWrite(led, LOW);
}
}
void loop()
{
for(led = 2; led <= 7; led++)
{
digitalWrite(led, HIGH);
delay(waktu);
digitalWrite(led, LOW);
}
}
Hasil :

Gambar 1.4.3 Simulasi Running LED.

B) Digital Input.
1) LED Menyala dengan Tombol Saklar (Pushbotton Switch).
Source Code Program :
int masukan;
int led = 7;
int tombol = 8;
void setup()
{
pinMode(led, OUTPUT);
pinMode(tombol, INPUT);
}
void loop()
{
masukan = digitalRead(tombol);
if(masukan == HIGH)
{
digitalWrite(led, HIGH);
}
else
{
digitalWrite(led, LOW);
}
}
Hasil :

Gambar 1.4.4 Simulasi LED Menyala dengan Tombol Saklar.

2) Dua Tombol Menyalakan LED dan Membunyikan Buzzer.


Source Code Program :
int led = 5;
int tombol_led = 6;
int buzzer = 7;
int tombol_buzzer = 8;
boolean status = false;

void setup()
{
pinMode(led, OUTPUT);
pinMode(tombol_led, INPUT);
pinMode(buzzer, OUTPUT);
pinMode(tombol_buzzer, INPUT);
}

void loop()
{
if(digitalRead(tombol_buzzer) == HIGH)
{
digitalWrite(buzzer, HIGH);
}
else
{
digitalWrite(buzzer, LOW);
}
if(digitalRead(tombol_led) == HIGH)
{
status = !status;
delay(200);
}
if(status == true)
{
digitalWrite(led, HIGH);
}
else
{
digitalWrite(led, LOW);
}
}

Hasil :

Gambar 1.4.5 Simulasi LED dan Buzzer.


V. ANALISA DAN PEMBAHASAN
Praktikum mikroprosessor membahas Modul 1 dengan pembahasan
mengenai Digital Input dan Digital Output pada Arduino. Percobaan
pertama yaitu digital output berupa lampu LED yang menyala secara
berkedip menandakan bahwa terjadi keluaran berupa sinyal digital 1 atau
0. Langkah awal yaitu praktikan mendeklarasikan variabel led sebagai
keluaran yang dihubungkan pada pin 8, selanjutnya yaitu membuat led
hidup menggunakan perintah digitalWrite(led, HIGH) dengan delay
selama 1 sekon, kemudian setelah itu membuat led mati menggunakan
perintah digitalWrite(led, LOW) selama 1 sekon, dan program akan terus
berulang hingga Arduino di-reset atau mati. Setelah di-upload maka
terlihat lampu hidup dan mati (berkedip) selama 1 sekon per perubahannya
seperti yang terlihat pada diagram alur di bawah.

Gambar 1.5.1 Flowchart LED Blink.


Percobaan kedua yaitu digital output dengan 2 lampu LED yang
menyala secara bergantian secara terus menerus. Langkah pertama
praktikan menginisialisasi LED merah dan hijau sebagai keluaran yang
dihubungkan masing-masing pada pin 8 dan 9. Selanjutnya LED merah
dan hijau dihidupkan dan bergantian secara bergantian menggunakan
perintah digitalWrite seperti pada diagram alur di bawah, dengan delay
setiap perubahan selama 1 detik.

Gambar 1.5.2 Flowchart LED Flip-Flop.


Percobaan ketiga yaitu Running LED menggunakan 6 LED sebagai
keluaran digital. Pada percobaan ini LED akan menyala dan mati secara
bergantian dan berurutan dari LED yang terhubung di pin 2 hingga pin 7.
Langkah pertama praktikan menginisialisasi led yang terhubung pada pin 2
hingga pin 4 sebagai keluaran dengan fungsi for. Kemudian pada fungsi
void loop, praktikan memprogram agar lampu led hidup dan mati secara
bergantian dengan perintah for dimulai dari led yang terhubung pada pin 2
hingga pin 7 dengan instruksi digitalWrite seperti pada diagram alur di
bawah.

Gambar 1.5.3 Flowchart Running LED.


Percobaan keempat yaitu menggunakan tombol saklar untuk
menghidupkan led, sehingga saat skalar ditekan maka led akan menyala
dan saat skalar tidak ditekan, maka led akan mati. Langkah pertama yaitu
praktikan menginisialisasi led sebagai keluaran yang terhubung pada pin 7,
dan tombol sebagai masukan yang terhubung pada pin 8. Kemudian
praktikan menggunakan perintah if-else pada fungsi void loop untuk
memberikan opsi pilihan ketika tombol ditekan dan tidak ditekan. Instruksi
masukan==HIGH berarti saat tombol ditekan, maka led akan menyala
dengan instruksi digitalWrite(led, HIGH);. Selanjutnya saat perintah else,
berarti saat tombol tidak ditekan, maka led akan mati dengan instruksi
digitalWrite(led, LOW) seperti pada diagram alur di bawah.

Gambar 1.5.4 Flowchart LED Menyala dengan Pushbotton.


Percobaan terakhir yaitu 2 tombol masing-masing untuk
menghidupkan LED dan membunyikan buzzer. Langkah pertama yaitu
inisialisasi led dan buzzer sebagai output, dan tombol_led dan
tombol_buzzer sebagai input. Kemudian pada fungsi void loop praktikan
membuat 2 perintah if-else untuk led dan buzzer. Perintah if-else pertama
yaitu untuk buzzer dengan algoritma saat tombol_buzzer HIGH, maka
buzzer akan berbunyi dan saat tombol tidak ditekan, maka buzzer akan
mati. Perintah if-else kedua untuk led dengan algoritma yaitu saat
tombol_led HIGH maka maka status menjadi tidak sama dengan nilai
status yang bersifat false saat dideklarasikan, kemudian perintah if lagi
untuk pengecekaan apakah status tersebut benar atau tidak, jika benar
makan led akan menyala dan jika salah maka led akan mati.

Gambar 1.5.5 Flowchart Tombol Menyalakan LED dan Buzzer.


Dari beberapa percobaan di atas, uji coba masukan digital lebih
banyak menggunakan fungsi if-else, sedangkan pada uji coba keluaran
digital beberapa menggunakan fungsi for dan sebagaian hanya
menggunakan perintah digitalWrite.
VI. KESIMPULAN
1. Lampu LED dapan dihidupkan dengan menggunakan perintah
digitalWrite(led, HIGH) dan untuk mematikan lampu LED
menggunakan perintah digitalWrite(led, LOW).
2. Delay(time) digunakan untuk waktu penundaan atau waktu interval
untuk LED menyala hingga perintah digitalWrite(led, LOW).
3. Perintah if-else banyak digunakan pada program Arduino dengan
digital input sedangkan perintah for banyak digunakan pada program
Arduino dengan digital output.
4. Arduino dapat menerima bentuk masukan Analog dan Digital, serta
dapat menghasilkan keluaran dalam berbagai bentuk sesuai dengan
kebutuhan pengguna.
DAFTAR PUSTAKA

[1] F. Djuandi, “Pengenalan Arduino,” p. 24, 2011.


[2] A. O. Rocketry, “Arduino UNO Revision 3 BOARD,” p. 11, 2014.
[3] H. Santoso, Panduan Praktis Arduino untuk Pemula. 2015.
LAMPIRAN

1. Apakah yang dimaksud dengan PORT pada menu Tools Arduino IDE?
PORT digunakan untuk mengkoneksikan papan Arduino dengan Arduino
IDE.
2. Apakah fungsi dari void setup() dan void loop()?
1. void setup() : Perintah ini digunakan untuk menginisialisasi beberapa
variabel yang akan digunakan serta hanya dijalankan sekali saat
Arduino menyala.
2. void loop() : Perintah ini digunakan untuk menjalankan program
secara berulang atau terus-menerus hingga Arduino mati.
3. Apakah arti dari pinMode(Led,OUTPUT) dan pinMode(Led,INPUT)?
1. pinMode(Led,OUTPUT) : Perintah ini berfungsi untuk
menginisialisasi pin Led menjadi sebuah keluaran atau output.
2. pinMode(Led,INPUT) : Perintah ini berfungsi untuk
menginisialisasi pin Led menjadi sebuah masukan atau input.
4. Apakah fungsi dari resistor 220 pada rangkaian?
Resistor berfungsi untuk menahan tegangan dan arus yang mengalir
sehingga masukkan tegangan dan arus yang masuk ke sebuah komponen
tidak melebihi yang bisa ditampung komponen, jika lebih maka akan
terjadi kerusakan pada komponen tersebut.
5. Apakah fungsi dari digitalWrite() dan digitalRead()?
1. DigitalWrite() : Perintah ini berfungsi untuk memasukkan atau
menuliskan suatu nilai digital ke dalam pin.
2. DigitalRead() : Perintah ini digunakan untuk membaca nilai masukan
yang diberikan Arduino.
6. Apakah maksud dari printah berikut ini :
int tombol_led = 6; : Mendeklarasikan bahwa tombol_led
dihubungkan melalui pin 6.
int buzzer = 7; : Mendeklarasikan bahwa buzzer dihubungkan
melalui pin 7.
7. Apakah arti dari delay(1500)?
Fungsi yang memberikan waktu jeda antar fungsi selama 1500 ms atau 1.5
detik.
8. Apakah arti dari status HIGH dan LOW pada script yang anda gunakan?
Status HIGH berarti aktif atau menyala dan status LOW berarti nonaktif
atau mati.
9. Apa persamaan dari bahasa pemograman C++ dan bahasa pemograman
Arduino?
Bahasa pemrograman C++ dan bahasa pemrograman Arduino memiliki
kesamaan dalam segi struktur penulisan seperti fungsi void, tipe data
integer, fungsi perulangan for, fungsi pemilihan if-else.
10. Apakah arti dari perintah berikut ini ?
if(digitalRead(tombol_buzzer) == HIGH) : Jika tombol_buzzer terbaca
dalam status aktif maka program akan melakukan perintah tertentu.
11. Apakah arti dari perintah berikut ini ?
for(led = 2; led <= 7; led++) : Program akan berjalan dengan dimulai dari
led 2 hingga led 7 secara berulang, terus-menerus dan berurutan.
12. Buatlah simulasi dan program Lampu Lalu Lintas (traffic light) di sebuah
pertigaan dengan ketentuan :
• Output 9 lampu LED.
• Lampu Kuning hidup selama 1 detik.
• Lampu Hijau1 (X+2) detik.
• Lampu Hijau2 (Y+2) detik.
• Lampu Hijau3 (Z+2) detik.
X,Y,Z = 3 digit terakhir NIM.
Tampilan Rangkaian Simulasi :

Gambar 1. Simulasi Sirkuit Traffic Light Arduino.


Source Code Program :
// ARDUINO TRAFFIC LIGHT NIM : 17101008

int merah1=12; int merah2=8; int merah3=4;


int kuning1=11; int kuning2=7; int kuning3=3;
int hijau1=10; int hijau2=6; int hijau3=2;

void setup() {
pinMode(merah1,OUTPUT);
pinMode(kuning1,OUTPUT);
pinMode(hijau1,OUTPUT);
pinMode(merah2,OUTPUT);
pinMode(kuning2,OUTPUT);
pinMode(hijau2,OUTPUT);
pinMode(merah3,OUTPUT);
pinMode(kuning3,OUTPUT);
pinMode(hijau3,OUTPUT);
}

void loop() {
digitalWrite(hijau1,HIGH);
digitalWrite(merah2,HIGH);
digitalWrite(merah3,HIGH);
delay(2000); //(X+2)=(0+2)=2 s
digitalWrite(hijau1,LOW);
delay(250);

digitalWrite(kuning1,HIGH);
delay(1000);
digitalWrite(kuning1,LOW);
digitalWrite(merah2,LOW);
delay(250);

digitalWrite(hijau2,HIGH);
digitalWrite(merah1,HIGH);
digitalWrite(merah3,HIGH);
delay(2000); //(Y+2)=(0+2)=2 s
digitalWrite(hijau2,LOW);
delay(250);

digitalWrite(kuning2,HIGH);
delay(1000);
digitalWrite(kuning2,LOW);
digitalWrite(merah3,LOW);
delay(250);

digitalWrite(hijau3,HIGH);
digitalWrite(merah1,HIGH);
digitalWrite(merah2,HIGH);
delay(10000); //(Z+2)=(8+2)=10 s
digitalWrite(hijau3,LOW);
delay(250);

digitalWrite(kuning3,HIGH);
delay(1000);
digitalWrite(kuning3,LOW);
digitalWrite(merah1,LOW);
delay(250);
}

Link Simulasi Tinkercad : https://www.tinkercad.com/things/36r6rXM0V4q


Penjelasan Program :
Lampu lalu lintas di pertigaan menggunakan 9 lampu LED, dengan Lampu
merah menyala selama lampu hijau dan kuning tidak menyala, kemudian lampu
kuning menyala selama 1 detik, serta lampu hijau menyala selama X/Y/Z + 2
detik, dengan X=0, Y=0, Z=8 karena 3 digit terakhir NIM adalah 008. Sehingga
LED Hijau 1 menyala selama 2 detik, Hijau 2 menyala selama 2 detik, dan Hijau
3 menyala selama 10 detik. LED hijau akan menyala selama 2 lampu merah lain
mati. Setelah itu lampu kuning akan menyala setelah lampu hijau menyala, dan
lampu merah di sisi lain akan menyala setelah lampu kuning mati. Program
menggunakan LOOP agar dapat berulang terus menerus.

Anda mungkin juga menyukai