Anda di halaman 1dari 5

LAPORAN PRAKTIKUM

ET2214 PRAKTIKUM TEKNIK TELEKOMUNIKASI 2B

MODUL : 01

DIGITAL OUTPUT DAN INPUT

NAMA : MUHAMMAD AL FAQIH


NIM : 18119029
KELOMPOK :4
HARI, TANGGAL : SELASA, 23 FEBRUARI 2021
WAKTU : 11.00 – 13.00 WIB
ASISTEN : M NAUFAL KURNIAWAN

LABORATORIUM TELEMATIKA
PROGRAM STUDI TEKNIK TELEKOMUNIKASI
SEKOLAH TEKNIK ELEKTRO DAN INFORMATIKA
INSTITUT TEKNOLOGI BANDUNG
2021
Digital Output dan Input
Muhammad Al Faqih
Teknik Telekomunikasi
Sekolah Teknik Elektro dan
Informatika
Institut Teknologi Bandung
18119029@telecom.stei.itb.ac.id

Abstract—Pada modul 1 ini dilakukan praktikum tentang


digital output dan input pada Arduino Uno R3. Mengakses
output dan input dapat dilakukan dengan menggunakan library
atau langsung ke hardware dan dapat dikombinasikan dengan
komunikasi serial. Seluruh kegiatan berhasil dilakukan.

Keywords—input, output, serial, digital, analog, arduino

I. PENDAHULUAN
Sebuah microprocessor membutuhkan pendefinisian port
yang digunakan serta perilakunya sebagai input dan output.
Mengakses input dan output ini dapat menggunakan library
pada Arduino Uno maupun langsung mengakses langsung ke
microprocessor dalam arduino. Dengan demikian,
pengetahuan tentang addressing microprocessor ke pin
arduino dan operasi dalam menentukan input maupun output Fig. 1. Pemetaan pin arduino dengan port pada chip atau microprocessor
sangat dibutuhkan. Praktikum ini memiliki tujuan Atmega168.
mempelajari cara pengoperasian Arduino UNO R3 dan
menjalankan program-program sederhana untuk menguji cara Setiap port dikendalikan oleh tiga register, yang juga
kerja output digital, serial print, dan input digital. merupakan variabel yang ditentukan dalam bahasa arduino.
Register DDR, menentukan apakah pin tersebut input atau
II. DASAR TEORI output. Register PORT mengontrol apakah pin high atau low,
dan register PIN membaca status pin masukan yang disetel ke
Arduino adalah platform elektronik open-source input dengan pinMode(). Setiap bit dari register ini sesuai
berdasarkan perangkat keras dan perangkat lunak yang mudah dengan satu pin. Pemetaan chip ATmega8 dan ATmega168
digunakan. Arduino Uno adalah papan mikrokontroler menunjukkan port yang ada. Chip Atmega328p yang relatif
berbasis Atmega328p atau Atmega168. Arduino ini memiliki baru memiliki pinout yang sama persis dengan Atmega168
14 pin input / output digital (6 di antaranya dapat digunakan [2].
sebagai output PWM), 6 input analog, resonator keramik 16
MHz (CSTCE16M0V53-R0), koneksi USB, colokan listrik, Untuk memprogram board arduino, kita membutuhkan
header ICSP, dan tombol reset. Arduino ini berisi semua yang aplikasi IDE (Integrated Development Environment) bawaan
dibutuhkan untuk mendukung mikrokontroler; cukup dari arduino. Aplikasi ini berguna sebagai text editor untuk
menyambungkan ke komputer dengan kabel USB atau membuat, membuka, mengedit, dan juga mevalidasi kode
menyalakan dengan adaptor AC-ke-DC atau baterai untuk serta untuk di upload ke board arduino. Program yang
memulai menggunkan arduino ini [1]. digunakan pada arduino disebut dengan istilah “sketch” yaitu
file source code arduino dengan ekstensi .ino. Bahasa
Register port memungkinkan manipulasi tingkat yang lebih pemrograman yang biasa digunakan di IDE ini sangat mirip
rendah dan lebih cepat dari pin I/O mikrokontroler pada dengan bahasa pemrograman C [3].
papan arduino. Chip yang digunakan pada papan arduino
(ATmega8 dan ATmega168) memiliki tiga port, yaitu port B Pemahaman tentang bilangan desimal, biner, dan
(pin digital 8 hingga 13), port C (pin input analog), dan port heksadesimal sangat diperlukan untuk membuat program
D (pin digital 0 hingga 7). Berikut ini adalah pemetaan pin dalam menjalankan arduino, apalagi jika akan mengakses
arduino dengan port pada chip atau microprocessor arduino langsung ke hardware atau chip nya. Sistem bilangan
Atmega168. biner merupakan bilangan yang berbasis 2, karena mempunyai
dua buah simbol (0 dan 1), sedangkan sistem desimal yang
sudah dipelajari secara mendasar adalah basis 10. Pada sistem
bilangan biner, “1” memiliki nilai high dan bilangan biner “0”
memiliki nilai low. Sistem bilangan heksadesimal adalah basis
16 dan menggunakan 16 macam simbol, yaitu 0, 1, 2, 3, 4, 5,
6, 7, 8, 9, A, B, C, D, E, dan F yang dalam desimal mewakili
1 sampai 16 [4].
III. METODOLOGI PERCOBAAN 3) Percobaan 2: Digital Input
A. Alat Percobaan
Membuka Tinkercad dan memasukkan kode
1. PC / Laptop program 1.3.1 dalam modul ke Arduino.
2. Simulator online Tinkercad
B. Langkah Kerja Melakukan compile dan upload program ke dalam
board Arduino.
Langkah-langkah percobaan pada Modul 1 : Digital
Output dan Input
1) Percobaan 1: Digital Output Mencatat hasil percobaan dan mengamati kesesuaian
dengan spesifikasi.
Membuka Tinkercad dan memasukkan kode
program 1.1.1 ke Arduino.
Memasukkan jumper ke pin 8 dan ujung lainnya ke
switch dan menghubungkan ujung lain switch ke
Membuat rangkaian sederhana sesuai kode ground.
program.

Menekan switch dan mengamati hal yang terjadi.


Melakukan compile dan upload program ke
dalam board Arduino.
Mengulangi kegiatan dengan memasukkan kode
Mencatat hasil percobaan dan mengamati program 1.3.2.
kesesuaian dengan spesifikasi.
IV. HASIL DAN ANALISIS PERCOBAAN
Mengulangi langkah untuk kode program 1.1.2 1) Percobaan 1: Digital Output
dan 1.1.3. Pada percobaan ini, sebuah kode program sederhana
disediakan dan rangkaian dibuat sesuai dengan kode program.
2) Percobaan 2: Serial Print Percobaan 1 yang dilakukan adalah mengakses output digital
arduino menggunakan library dan mengakses langsung ke
Membuka Tinkercad dan memasukkan kode hardware tanpa library. Akses langsung ke hardware tanpa
program 1.2 ke Arduino. library dibagi lagi menjadi dua, yaitu mencari alamat aktual
dari port dan register dan melakukan assign variabel pointer
Melakukan pengujian dengan memasukan bilangan ke alamat aktual tersebut, serta cara lainnya adalah
integer positif (misalnya 10 27) padda serial menggunakan variabel predefined untuk port dan register.
monitor.

Melakukan pengujian dengan memasukan bilangan


integer positif (misalnya 10 27) padda serial
monitor.

Melakukan analisis hasil percobaan.

Menuliskan hasil pada logbook.


Fig. 2. Rangkaian dan kode program untuk percobaan 1.1.1.

Pada kode program di atas, ditunjukkan bahwa program


akan menuliskan pin 13 sebagi output dengan menggunakan
pinMode() serta membuatnya menjadi high atau low dengan
menggunakan sintaks digitalWrite() dan mengatur waktunya
dengan delay(). Program ini menggunakan library arduinno
untuk melaksanakan perintah yang dimaksud. Rangkaian
yang dibuat adalah dengan menghubungkan LED merah
dengan GND dan pin 13 yang menjadi output. LED akan
menyala selama dua detik dan mati selama satu detik.
karena percobaan 1.1.3 menggunakan register DDRB dan
PORTB yang di dalam arduino sudah terdefinisi. Menentukan
pin outout dan kondisi high low dari pin ini ditentukan dengan
masking dengan LEDMASK. Ini berbeda dengan percobaan
1.1.2 yang harus membuat dahulu register portDDRB dan
register portB.
B. Percobaan 2 : Serial Print
Percobaan ini bertujuan melakukan konversi bilangan
dari desimal menjadi heksadesimal dan menampilkan
Fig. 3. Rangkaian dan kode program untuk percobaan 1.1.2. hasilnya pada serial monitor.

Pada kode program 1.1.2 di atas, ditunjukkan bahwa


program mengakses output pin dengan mengakses
microprocessor menggunakan cara mencari alamat aktual
dari port dan register dan melakukan assign variabel pointer
ke alamat aktual tersebut. Karena LEDMASK bernilai 0x01
dalam deksadesimal yang jika dikonversikan menjadi biner
menjadi 000001, maka dengan menggunakan pointer ke
alamat port tersebut serta dilakukan masking OR dan
masking AND dengan LEDMASK, output dari program
dapat ditentukan menjadi high dan low pada pin 8. Pin 8
Fig. 5. Kode program dan output pada serial monitor pada percobaan 1.2.
adalah pin yang letaknya sama dengan LSB dari 000001 di
port B. Output dari program ini sama persis dengan Dalam kode program, terlihat bahwa ada dua buah integer
percobaan 1.1.1. yang dapat kita konversikan secara langsung menjadi
heksadesimal. Keduanya ini diberi nama variabel i1 dan i2.
Kode perintah Serial.parseInt () memiliki fungsi untuk
membaca bilangan desimal yang dimasukkan.
Serial.available () berguna untuk menghasilkan jumlah byte
di port serial yang belum terbaca. Jika port serial dalam
keadaan kosong, maka fungsi ini dapat menghasilkan nilai
nol. Serial.println (i1, HEX) memiliki arti menuliskan output
konversi ke heksadesimal dari i1 ke serial monitor. Output
yang akan terlihat di serial monitor adalah seperti gambar di
atas.
Pada percobaan ini, bilangan yang dimasukkan adalah 10
Fig. 4. Rangkaian dan kode program untuk percobaan 1.1.3.
dan 27, kemusian -1 dan -2. 10 jika dikonversika menjadi
Pada kode program 1.1.3 di atas, ditunjukkan bahwa heksadesimal adalah A. 27 jika dikonversikan ke
program mengakses output pin dengan mengakses heksadesimal adalah 1B. cara mendapatkan nilai ini adalah
microprocessor dengan menggunakan variabel predefined membagi bilangan yang akan dikonversikan dengan 16,
untuk port dan register. DDRB |= LEDMASK memiliki arti kemudian sisa hasil pembagian disimpan. Hasil konversi
bahwa register DDRB memiliki nilai yang dimasking dengan adalah urutan bilangan sisa hasil pembagian diurutkan dari
masking OR sehingga membuat pin 8 (yang merupakan LSB sisa hasil pembagian yang pertama. 27 dibagi 16 adalah 1 dan
dari 0x01 di port B) diatur menjadi output. Selanjutnya dalam memiliki sisa 11. Dalam heksadesimal, 11 adalah B.
looping, PORTB &= LEDMASK memiliki arti perintah untuk kemudian 1 dibagi 16 adalah 0 memiliki sisa 1. Maka
menuliskan high pada port B dengan alamatnya yang tadi heksadesimal dari 27 adalah 1B.
sudah ditentukan yaitu pin 8. Perintah PORTB &=
(~LEDMASK) memiliki arti menentukan port B untuk Untuk mengkonversi bilangan negatif, harus
menulis, dengan pin yang ditentukan lewat masking AND menggunakan 2’s complement. Pertama kita hilangkan tanda
dengan LEDMASK sehingga nilai akhir dari perintah ini akan negatif, misal pada -1, menjadi 1. Kita konversikan ke biner
berkebalikan dengan perintah sebelumnya sehingga pin 8 menjadi 01, kita tambahkan nol di depan sebanyak 8 buah (ini
akan menjadi low. Output dari percobaan 1.1.3 ini sama persis dilakukan karena setiap simbol bilangan heksadesimal,
dengan dua percobaan sebelumnya. nilainya adalah 4 buah simbol bilangan biner) menjadi
Perbedaan percobaan 1.1.2 dan 1.1.3 adalah pada 00000001. Kita inverskan menjadi 11111110, kemudian
penggunaan memorinya. Percobaan 1.1.2 membooking jumlahkan dengan 1 menjadi 11111111. Setiap 4 buah biner,
memory di 0x24 untuk register portDDR (untuk menyatakan kita hitung nilainya. Karena 1111 dalam heksadesimal adalah
sebagai input atau output). Kemudian, nilai dari alamat ini F, maka 11111111 berarti FF. Ini adalah hasil konversi -1 ke
adalah nilai dari LEDMASK (dengan melakukan masking heksadesimal. Dengan cara yang sama, bilangan -2 jika
OR) sehingga pin 8 diatur menjadi output. Register portB akan dikonversi akan menjadi FE. Output pada program adalah
membooking memori di 0x25 dan akan mengatur nilainya FFFFFFF dan FFFFFFFE. Hal ini berarti, arduino dapat
menjadi output high atau low dengan melakukan masking OR mengkonversi bilangan desimal hingga menjadi bilangan
dab AND sesuai dengan yang ada di dalam fungsi void loop heksadesimal 8 digit.
(). Percobaan 1.1.3 tidak melakukan booking memori. Hal ini
C. Percobaan 3 : Digital Input Pada kode program percobaan 1.3.2, sebuah priorstate
Pada percobaan 3 ini, dilakukan pengujian terhadap kode dideklarasikan dan BITMASK 0x01 juga didefinisikan. Kode
dasar input digital dan hardware untuk mikrokontroler. Untuk DDRB &= (~BITMASK) memiliki arti bahwa port B yang
menguji hal tersebut, kita dapat melihatnya dalam serial dimasking AND dengan negasi dari BITMASK akan
monitor. memberikan nilai 0 pada pin 8 dan juga pin lainnya. Dengan
demikian, pin 8 dan yang lainnya didefinisikan sebagai input.
Kode program PORTB |= BITMASK digunakan untuk
memberikan nilai high pada pin 8. Dalam fungsi void loop (),
sebuah state digunakan. Jika state berubah, maka akan
menuliskan output pada serial monitor dan jika state tidak
berubah, maka tidak akan ada output yang ditampilkan pada
serial monitor. Secara default, jika switch tidak
menghubungkan pin 8 dengan GND, maka pin akan
mengeluarkan output 1. Jika switch ON, maka nilai logic dari
pin 8 adalah 0.
Percobaan 1.3.1 dan 1.3.2 memiliki perbedaan dalam
pengaksesan kode dasar input digital. Percobaan 1.3.1
menggunakan library arduino, sedangkan 1.3.2 langsung
mengakses microprocessor arduino (ini terlihat dari kode
Fig. 6. Rangkaian dan kode program untuk percobaan 1.3.1. program yang digunakan). Selain itu, penggunaan state pada
percobaan 1.3.2 mengakibatkan output yang terlihat dalam
Dengan menyatakan pin 8 sebagai INPUT_PULLUP, serial monitor hanya berubah ketika sakelar berubah.
maka secara default, logic dari pin 8 adalah high karena pin
8 akan mengaktifkan resistor pull-up dan V. KESIMPULAN
menghubungkannya dengan tegangan 5 Volt. Dalam Dengan melakukan langkah-langkah praktikum di atas,
rangkaian, terlihat bahwa pin 8 kemudian dihubungkan mahasiswa dapat mempelajari cara pengoperasian Arduino
dengan resistor dan switch dengan ground. Untuk membaca UNO R3 dan menjalankan program-program sederhana untuk
logic dari pin 8, serial monitor dibutuhkan dan perintahnya menguji cara kerja output digital, serial print, dan input digital.
ada dalam fungsi void loop (). Secara prediksi dan Pengujian output dan inpt digital dapat dilakukan dengan
eksperimen, pin 8 akan bernilai 1 jika switch OFF dan akan menggunakan kode program sesuai library arduino maupun
bernilai 0 saat switch ON. Ini terlihat dalam serial monitor mengakses ke microprocessor (Atmega 168 atau 328p) secara
ketika switch berubah. Nilai dari 0 atau 1 ini akan terus langsung. Dengan demikian, pemahaman atas kode perintah
looping sesuai dengan clock. dasar dalam arduino sangat dibutuhkan.
DAFTAR PUSTAKA

[1] "Arduino Store," 17 June 2020. [Online]. Available:


https://store.arduino.cc/usa/arduino-uno-rev3. [Accessed 24 February
2021].
[2] arduino.cc, "Port Registers," [Online]. Available:
https://www.arduino.cc/en/Reference/PortManipulation. [Accessed 24
February 2021].
[3] S, Tommy, "Mengenal Aplikasi Arduino IDE dan Arduino Sketch," 22
January 2017. [Online]. Available: https://sinaryuda.web.id/mengenal-
aplikasi-arduino-ide-dan-arduino-sketch/. [Accessed 24 February
2021].
[4] S. Pudin, "Macam-Macam Sistem Bilangan : Biner, Oktal, Desimal,
dan Heksadesimal," [Online]. Available: http://matkul.xyz/macam-
macam-sistem-bilangan-biner-oktal-desimal-dan-heksadesimal/.
[Accessed 24 February 2021].

Fig. 7. Output pada serial monitor dan kode program untuk percobaan
1.3.2.

Anda mungkin juga menyukai