Anda di halaman 1dari 12

UNIT V ARDUINO SUPPORT MATLAB

NADYA AYUNINGTYAS (13/344308/SV/02824)


Dosen : FAHMIZAL
Asisten : IMROATUL
Tanggal Praktikum : 23 April 2015
Praktikum Teknik Kendali
LABORATORIUM INSTRUMENTASI DAN KENDALI

Abstrak
Matlab sebagai bahasa pemrograman yang
terbuka dan mampu berjalan pada berbagai
macam perangkat keras komputasi. Pada bab
ini, praktikum yang dilakukan adalah
mengintegrasikan
bahasa
pemrograman
matlab, sehingga mampu untuk dieksekusi oleh
Arduino.
1. Pendahuluan
Praktikum unit 5 ini bertujuan untuk
memberikan penjelasan kepada mahasiswa
tentang program matlab yang dapat
dieksekusi
oleh
arduino,
sehingga
mahasiswa dapat membuat program untuk
di downloadkan ke arduino untuk
melakukan perintah perintah tertentu.
2. Dasar Teori
Arduino
Arduino merupakan kit elektronik
atau papan rangkaian elektronik yang
berbasis open source yang di dalamnya
terdapat komponen utama berupa sebuah
chip mikrokontroler dengan jenis AVR
dari perusahaan Atmel. Sedangkan
mikrokontroler itu sendiri merupakan chip
atau IC (Integrated Circuit) yang dapat
diprogram menggunakan komputer yang
bertujuan agar rangkaian elektronik yang
menyertainya dapat membaca input,
memproses input tersebut dan kemudian
menghasilkan
output
sesuai
yang
diinginkan. Maka dalam hal ini
mikrokontroler bertugas sebagai otak
yang mengendalikan input, proses dan
output sebuah rangkaian elektronik.
Karena Arduino mempunyai komponen

utama berupa microcontroller maka


Arduino
dapat
diprogram
dengan
menggunakan
komputer.Bahasa
pemrograman yang digunakan dalam
Arduino adalah bahasa C, tetapi dalam hal
ini bahasa pemogramannya sudah
dipermudah dengan menggunakan fungsifungsi yang lebih sederhana. Sehingga
pemrogram
kelas
pemula
dapat
mempelajarinya dengan cukup mudah.
Untuk memprogram Arduino dan
menguploadnya ke dalam board Arduino,
dibutuhkan software Arduino IDE
(Integrated Development Enviroment)
sebagai kelengkapan utama.
Arduino UNO mempunyai 14 pin
digital input/output, 6 di antaranya dapat
digunakan sebagai output PWM, 6 input
analog, sebuah osilator Kristal 16 MHz,
sebuah koneksi USB, sebuah power jack,
sebuah ICSP header, dan sebuat tombol
reset. Arduino UNO memuat semua yang
dibutuhkan
untuk
menunjang
mikrokontroler,
mudah
menghubungkannya ke sebuah komputer
dengan sebuah kabel USB atau
mensuplainya dengan sebuah adaptor AC
ke DC atau menggunakan baterai untuk
memulainya.Gambar 2.1 merupakan
bentuk fisik dari Arduino UNO yang
dapat terlihat jelas bagian bagian dari
Arduino UNO.

Berikut adalah gambar konfigurasi


pin Arduino :

Arduino Uno berbeda dari semua


board Arduino yang telah dibuat
sebelumnya,
Arduino
UNO
tidak
menggunakan chip driver FTDI USB-toserial. Sebaliknya, fitur-fitur Atmega16U2
(Atmega8U2 sampai ke versi R2)
diprogram sebagai sebuah pengubah USB
ke serial. Revisi 2 dari board Arduino Uno
mempunyai sebuah resistor yang menarik
garis 8U2 HWB ke ground, yang
membuatnya
lebih
mudah
untuk
diletakkan ke dalam DFU mode. Bagian
bagian dari papan Arduino tersusun dari
beberapa susunan yang dari kesemuanya
mempunyai fungsi masing masing.
Bagian dan fungsi tersebut di jelaskan
pada bagian dibawah ini:
1. Soket USB
Soket USB adalah soket untuk
kabel USB yang disambungkan ke
komputer atau laptop.Berfungsi untuk
mengirimkan program ke Arduino dan
juga sebagai port komunikasi serial.
2. Input / Output Digital
Input/Output Digital atau digital
pin
adalah
pin-pin
untuk
menghubungkan
Arduino
dengan
komponen atau rangkaian digital.
Misalnya kalau ingin membuat LED
berkedip, LED tersebut bisa dipasang
pada salah satu pin I/O digital dan
ground.
Komponen
lain
yang
menghasilkan output digital atau
menerima
input
digital
bisa
disambungkan ke pin-pin ini.
3. Input Analog

Input Analog atau analog pin adalah


pin-pin yang berfungsi untuk menerima
sinyal dari komponen atau rangkaian
analog. Misalnya dari potensiometer,
sensor suhu, sensor cahaya, dsb.
4. Catu Daya
Pin-pin catu daya adalah pin
yang memberikan tegangan untuk
komponen atau rangkaian yang
dihubungkan dengan Arduino. Pada
bagian catu daya ini terdapat juga pin
Vin dan Reset. Vin digunakan untuk
memberikan tegangan langsung kepada
Arduino tanpa melalui tegangan USB
atau adaptor. Reset adalah pin untuk
memberikan sinyal reset melaui tombol
atau rangkaian eksternal.
5. Baterai / Adaptor
Soket baterai atau adaptor
digunakan untuk menyuplai Arduino
dengan tegangan dari baterai/adaptor
9V pada saat Arduino sedang tidak
disambungkan ke komputer. Jika
Arduino sedang disambungkan ke
komputer melalui USB, Arduino
mendapatkan suplai tegangan dari USB,
jadi
tidak
perlu
memasang
baterai/adaptor
saat
memprogram
Arduino.

Ardunio Support Matlab


Paket Dukungan MATLAB untuk
Arduino memungkinkan Anda untuk
menggunakan MATLAB untuk
berkomunikasi
dengan

Arduino melalui kabel USB. Paket ini


didasarkan pada program server yang
berjalan
pada
board,
yang
mendengarkan perintah melalui port
serial, mengeksekusi perintah, dan, jika
diperlukan,
mengembalikan
hasilnya. Pendekatan ini membantu:
Mulai pemrograman langsung tanpa
toolbox tambahan.
Bekerja di MATLAB untuk
pengembangan dan debugging yang
interaktif

Mengembangkan program untuk


memperoleh data analog dan digital,
dan untuk mengontrol DC, servo,
dan motor stepper secara interaktif
Mengakses perangkat periferal dan
sensor yang terhubung melalui I2C
atau SPI.
Menjalankan loop control sampai
dengan 25 Hz (tidak real time).
Memperkenalkan
mekatronik,
pemrosesan sinyal, dan konsep
elektronik di laboratorium

3. Metodologi
Alat dan bahan yang diperlukan :
Komputer
Arduino
Kabel USB
Kabel Jumper
Software Matlab
Video tutorial Arduino Support
Matlab

4. Analisa
Menjalankan Arduino Matlab
Untuk dapat mengakses arduino
dengan menggunakan matlab, matlab
harus terinstall driver arduino. Driver
arduino ini adalah sebuah add-ons yang
dapat dengan mudah ditambahkan pada
matlab.

Setelah driver dikenali oleh matlab,


maka arduino harus dimasuki program
agar dapat dikenali oleh matlab.
Program yang dimasukkan ke dalam
arduino adalah adio.pde. Program
didownloadkan melalui aplikasi IDE
arduino. Untuk konfigurasi di matlab,
file arduino.m dan instal_arduino.m
dijalankan dari matlab.

Langkah percobaan dalam praktikum ini


adalah:
Mengkoneksikan Arduino dengan
Komputer

Menyambungkan Arduino
Dengan Matlab

Lalu run untuk menjalankan. Ini hanya


dilakukan satu kali saat memulai
program. Bertujuan untuk mengenalkan
matlab dengan arduino.

Membuat Kode program Di Matlab

Mendownloadkan Program Ke
Arduino

Membuat Program Di Simulink

Membuat Kode program Di Matlab

Steleh melakukan proses ini, matlab


direstart. Maka pada simulink dapat
dilihat dua library baru, yaitu Arduino
IO Library dan Simulink Support
Package for Arduino Hardware. Maka

arduino sudah dikenali oleh matlab dan


siap untuk digunakan.

Input Output
Untuk
memulai
menulis
program untuk arduino, harus dibuat
sebuah variabel yang mendefinisikan
posisi port yang digunakan sebagai jalur
IO arduino dan komputer.

Digital Read/Write
Digital read dan digital write
berfungsi sebagai input dan output data
digital. Input akan dibaca sebagai logika
high dan low. Output juga logika high
dan low. Pada digital read/write
arduino, logika high diwakili oleh
tegangan 5v dan logika low diwakili
tegangan 0v.

Contoh: a=arduino(COM15)
a adalah variabel yang digunakan
untuk menampung inisialisasi port.
COM15 adalah port IO yang digunakan
sebagai IO arduino dengan komputer.
Maka akan terjadi proses seperti
berikut:

b = digitalRead(a,pin)
Dimana,
b=variabel yang menampung hasil
pembacaan nilai input
a=object arduino (didefinisikan di awal)
pin=nomor pin yang dibaca nilai
inputnya
Contoh: b=digitalRead(a,10)
Variabel b akan menampung nilai hasil
pembacaan dari pin 10.

Setelah menunggu proses ini, maka


akan muncul

Ini adalah informasi mengenai pin


arduino dan help penggunaan fungsi.
Untuk pengaturan mode pin yang
digunakan, maka menggunakan syntax:
pinMode(a,pin,str)
dimana,
a = object arduino, variabel penampung
koneksi port IO arduino
pin = nomor pin yang akan diset
str = mode yang diinginkan (input atau
output)
Contoh:
pinMode(a,13,OUTPUT)
Maka pin 13, diatur sebagai output.
pinMode(a,10,INPUT)
Maka pin 10 diatur sebagai input.

digitalWrite(a,pin,str)
Digital
Write
berfungsi
untuk
memberikan nilai output dari pin.
c=variabel yang menampung hasil
pembacaan dari pin
a=object arduino(didefinisikan di awal)
pin=nomor pin yang akan diberikan
nilai output
str=keluaran yang diinginkan (1/0)
Contoh: digitalWrite(a,13,1)
Maka pin 13 akan menghasilkan output
HIGH.

Analog read/write
Analog read/write berfungsi
untuk membaca atau menuliskan nilai
dalam bentuk analog, misalnya
pembacaan level tegangan, atau nilai
PWM.
Syntal analog read adalah:
Val=analogRead(a,pin)
a=nama orduino obyek
pin=nomor pin yang
nilainya (pin 0-5)
Contoh:

akan dibaca

val=analogRead(a,5)
Untuk pembacaan tegangan input, maka
nilai harus dikali 5 dibagi 1023, karena
nilai hasil pembacaan adalah 0-1023
yang sama dengan 0-5v.
Maka jika pin 5 disambung dengan
tegangan 5v, pembacaannya adalah
1023,
maka
nilai
sebenarnya
1023*(5/1023) = 5v.

Lalu dilakukan pengaturan target yang


dituju. Pada Tools, Run on target
hardware, options.
Setelah terbuka, pastikan pada Run on
target hardware, Target Hardware nya
adalah Arduino Uno. Karena yang
digunakan adalah arduino UNO.
Untuk membuka library SIMULINK,
klik simulink library, maka akan
muncul

Syntax analog write adalah:


analogWrite(a,pin,val)
a=object arduino
pin=nomor pin yang digunakan sebagai
output
val=nilai keluaran yang diinginkan
contoh:
Pada pin 13 terpasang led.

Nilai 0-255 sama dengan nilai dari


tegangan 0-5v. Maka semakin besar
nilai outputnya, akan semakin terang
nyala lednya.

Arduino-SIMULINK
Dengan
menggunakan
SIMULINK pembuatan program pada
arduino akan semakin mudah, karena
dengan simulink, pembuatan program
dilakukan dengan drag and drop.
Untuk memulai arduino dengan
simulink, syntax yang ditulis adalah:

Maka akan muncul halaman awal


arduino simulink nya

1. Analog Write

Setiap membuat sebuah program di


simulink,
pastikan
selalu
memasukkan Setup Arduino1, dan
ubah COM default menjadi COM
PORT yang dipakai.
Fungsi step adalah memberikan
nilai konstan kepada output. Output
yang dipakai adalah pin 3.
Parameter final value yang ada pada
step adalah nilai keluaran yang
diinginkan. Misal final value = 255,
maka akan meberikan output 255
atau 5volt.
2. Analog Read

yang
masing
masing
mengendalikan pin yang terdapat
led.

Analog read pada simulink sama


dengan syntax dasar analog read
matlab.
Pin yang dibaca adalah pin 0. Gain
berfungsi sebagai pengali hasil
pembacaan agar menghasilkan
output berupa tegangan.
1023*0.0049 = 5v
Pada
scope
akan
tertampil
gelombang hasil pembacaan

Garis kuning adalah gelombang


yang terbaca oleh arduino pada pin
0. Gelombang menunjukkan level 5,
yang berarti tegangan terbaca adalah
5v.
3. Flip flop

Flip flop menggunakan dua buah


led yang akan menyala secara
bergantian secara periodik.
Di
simulink
dibuat
dengan
menggunakan dua buah pulse
generator dan dua buah analog write

Pengaturan parameter hanya pada


pulse generator. Masing masing
pulse generator diberikan interval
atau periode yang sama. Amplitude
juga sama sama 5. Panjang pulsa
yang dihasilkan oleh masing
masing pulse generator juga harus
sama, agar interval nyala mati
selalu konstan.
Yang membedakan adalah delay
pada pulse generator kedua. Karena
generator pulsa pertama memiliki
lebar pulsa 50 mdetik, maka
generator pulsa yang kedua
diberikan jeda sampai 50 mdetik.
Setelah pulsa pertama mencapai 50
mdetik, maka selanjutnya tidak ada
pulsa sampai 50 mdetik selanjutnya.
Ketika transisi pulsa pertama dari
pulsa tinggi ke pulsa rendah, saat itu
pulsa dari generator kedua transisi
dari pulsa rendah ke pulsa tinggi
yang mengakibatkan led kedua
nyala, sementara led pertama
padam. Begitu seterusnya.

4. Untuk
menulis
output
analog,
digunakan
syntax
analogWrite(a,pin,val)
5. Hasil pembacaan analog adalah 0-1023
6. Pada
pemrograman
arduino
menggunakan simulink lebih mudah,
karena hanya tinggal drag and drop
komponen

6. Daftar Pustaka
Arduino-Simulink,
(2012),
http://
www.mathworks.com/hardware-support/
arduino-simulink.html, 25 April 2015
5. Kesimpulan
1. Untuk membaca input digital (0/1) pada
pin
arduino,
digunakan
syntax
digitalRead(a,pin)
2. Untuk menulis output data digital (0/1)
pada pin arduino, digunakan syntax
digitalWrite(a,pin,arg)
3. Untuk
membaca
input
analog,
digunakan syntax analogRead(a,pin)

Anonim, 2012, Arduino Uno, 2 Januari


2015, http://arduino.cc/en/Main/Arduino
BoardUno.
Tutorial Arduino-EC Polban2, Politeknik
Negeri Bandung

Lampiran
Arduino folders added to the path
> In C:\Program
Files\MATLAB\R2013a\toolbox\shared\hwco
nnectinstaller\
+hwconnectinstaller\PackageInstaller.p>P
ackageInstaller.uninstallThirdPartyPackage
at 1353
In C:\Program
Files\MATLAB\R2013a\toolbox\shared\hwco
nnectinstaller\
+hwconnectinstaller\PackageInstaller.p>P
ackageInstaller.uninstallTpPkgs at 828
In C:\Program
Files\MATLAB\R2013a\toolbox\shared\hwco
nnectinstaller\
+hwconnectinstaller\PackageInstaller.p>P
ackageInstaller.uninstall at 696
In C:\Program
Files\MATLAB\R2013a\toolbox\shared\hwco
nnectinstaller\
+hwconnectinstaller\PackageInstaller.p>P
ackageInstaller.uninstallRecursiveImp at
526

Saved updated MATLAB path

>> install_arduino
Arduino folders added to the path
Saved updated MATLAB path

>> install_arduino
Arduino folders added to the path
Saved updated MATLAB path

>> install_arduino
Arduino folders added to the path
Saved updated MATLAB path

>> arduino

In C:\Program
Files\MATLAB\R2013a\toolbox\shared\hwco
nnectinstaller\
+hwconnectinstaller\PackageInstaller.p>P
ackageInstaller.uninstallRecursive at 480

Note: a DEMO connection will be created

In C:\Program
Files\MATLAB\R2013a\toolbox\shared\hwco
nnectinstaller\
+hwconnectinstaller\PackageInstaller.p>P
ackageInstaller.updateRecursive at 343

Motor Shield V2 (plus adioes.pde


functions) sketch detected !

In C:\Program
Files\MATLAB\R2013a\toolbox\shared\hwco
nnectinstaller\+hwconnectinstaller\
+internal\executeConfirm.p>executeConfi
rm at 41

ans =

In C:\Program
Files\MATLAB\R2013a\toolbox\shared\hwco
nnectinstaller\
+hwconnectinstaller\Step.p>Step.next at
169
>> install_arduino

Use a the com port, e.g. 'COM5' as input


argument to connect to the real board
Demo mode connection .......

Arduino successfully connected !

arduino object connected to DEMO port


Motor Shield sketch V2 (plus adioes.pde
functions) running on the board

Servo 2 is DETACHED
Servo 3 is DETACHED

Arduino folders added to the path

Servo 4 is DETACHED

Saved updated MATLAB path

Servo 5 is DETACHED
Servo 6 is DETACHED

>> install_arduino

Servo 7 is DETACHED

Servo 8 is DETACHED

Servo 43 is DETACHED

Servo 9 is DETACHED

Servo 44 is DETACHED

Servo 10 is DETACHED

Servo 45 is DETACHED

Servo 11 is DETACHED

Servo 46 is DETACHED

Servo 12 is DETACHED

Servo 47 is DETACHED

Servo 13 is DETACHED

Servo 48 is DETACHED

Servo 14 is DETACHED

Servo 49 is DETACHED

Servo 15 is DETACHED

Servo 50 is DETACHED

Servo 16 is DETACHED

Servo 51 is DETACHED

Servo 17 is DETACHED

Servo 52 is DETACHED

Servo 18 is DETACHED

Servo 53 is DETACHED

Servo 19 is DETACHED

Servo 54 is DETACHED

Servo 20 is DETACHED

Servo 55 is DETACHED

Servo 21 is DETACHED

Servo 56 is DETACHED

Servo 22 is DETACHED

Servo 57 is DETACHED

Servo 23 is DETACHED

Servo 58 is DETACHED

Servo 24 is DETACHED

Servo 59 is DETACHED

Servo 25 is DETACHED

Servo 60 is DETACHED

Servo 26 is DETACHED

Servo 61 is DETACHED

Servo 27 is DETACHED

Servo 62 is DETACHED

Servo 28 is DETACHED

Servo 63 is DETACHED

Servo 29 is DETACHED

Servo 64 is DETACHED

Servo 30 is DETACHED

Servo 65 is DETACHED

Servo 31 is DETACHED

Servo 66 is DETACHED

Servo 32 is DETACHED

Servo 67 is DETACHED

Servo 33 is DETACHED

Servo 68 is DETACHED

Servo 34 is DETACHED

Servo 69 is DETACHED

Servo 35 is DETACHED
Servo 36 is DETACHED
Servo 37 is DETACHED

Servo Methods: servoStatus servoAttach


servoDetach servoRead servoWrite

Servo 38 is DETACHED
Servo 39 is DETACHED
Servo 40 is DETACHED
Servo 41 is DETACHED
Servo 42 is DETACHED

Encoder 0 is DETACHED
Encoder 1 is DETACHED
Encoder 2 is DETACHED

Encoder Methods: encoderStatus


encoderAttach encoderDetach
encoderRead encoderReset

Digital Pin 06 is currently UNASSIGNED


Digital Pin 07 is currently UNASSIGNED
Digital Pin 08 is currently UNASSIGNED

The speed of motor number 1 is set to: 0


over 255

Digital Pin 09 is currently UNASSIGNED


Digital Pin 10 is currently UNASSIGNED

The speed of motor number 2 is set to: 0


over 255

Digital Pin 11 is currently UNASSIGNED

The speed of motor number 3 is set to: 0


over 255

Digital Pin 13 is currently UNASSIGNED

Digital Pin 12 is currently UNASSIGNED

The speed of motor number 4 is set to: 0


over 255

Digital Pin 14 is currently UNASSIGNED

The speed of stepper number 1 is set to: 0


over 255

Digital Pin 16 is currently UNASSIGNED

The speed of stepper number 2 is set to: 0


over 255

Digital Pin 15 is currently UNASSIGNED

Digital Pin 17 is currently UNASSIGNED


Digital Pin 18 is currently UNASSIGNED
Digital Pin 19 is currently UNASSIGNED

DC Motor and Steppers Methods:


motorSpeed motorRun stepperSpeed
stepperStep

Digital Pin 20 is currently UNASSIGNED


Digital Pin 21 is currently UNASSIGNED
Digital Pin 22 is currently UNASSIGNED

Serial port and other Methods: serial flush


roundTrip

Digital Pin 23 is currently UNASSIGNED


Digital Pin 24 is currently UNASSIGNED
Digital Pin 25 is currently UNASSIGNED

>> a=arduino('COM15')

Digital Pin 26 is currently UNASSIGNED

Attempting connection .............

Digital Pin 27 is currently UNASSIGNED

Basic Analog and Digital I/O (adio.pde)


sketch detected !

Digital Pin 28 is currently UNASSIGNED

Arduino successfully connected !

a=

arduino object connected to COM15 port


Basic Analog & Digital I/O sketch
(adio.pde) running on the board

Digital Pin 29 is currently UNASSIGNED


Digital Pin 30 is currently UNASSIGNED
Digital Pin 31 is currently UNASSIGNED
Digital Pin 32 is currently UNASSIGNED
Digital Pin 33 is currently UNASSIGNED
Digital Pin 34 is currently UNASSIGNED
Digital Pin 35 is currently UNASSIGNED
Digital Pin 36 is currently UNASSIGNED

Digital Pin 02 is currently UNASSIGNED

Digital Pin 37 is currently UNASSIGNED

Digital Pin 03 is currently UNASSIGNED

Digital Pin 38 is currently UNASSIGNED

Digital Pin 04 is currently UNASSIGNED

Digital Pin 39 is currently UNASSIGNED

Digital Pin 05 is currently UNASSIGNED

Digital Pin 40 is currently UNASSIGNED

Digital Pin 41 is currently UNASSIGNED

>> pinMode(a,13,'output')

Digital Pin 42 is currently UNASSIGNED

>> pinMode(a,10,'input')

Digital Pin 43 is currently UNASSIGNED

>> val=digitalRead(a,10)

Digital Pin 44 is currently UNASSIGNED


Digital Pin 45 is currently UNASSIGNED

val =

Digital Pin 46 is currently UNASSIGNED


Digital Pin 47 is currently UNASSIGNED

Digital Pin 48 is currently UNASSIGNED


Digital Pin 49 is currently UNASSIGNED

>> val=digitalRead(a,10)

Digital Pin 50 is currently UNASSIGNED


Digital Pin 51 is currently UNASSIGNED

val =

Digital Pin 52 is currently UNASSIGNED


Digital Pin 53 is currently UNASSIGNED

Digital Pin 54 is currently UNASSIGNED


Digital Pin 55 is currently UNASSIGNED

>> digitalWrite(a,13,1)

Digital Pin 56 is currently UNASSIGNED

>> digitalWrite(a,13,0)

Digital Pin 57 is currently UNASSIGNED

>> digitalWrite(a,13,1)

Digital Pin 58 is currently UNASSIGNED

>> digitalWrite(a,13,0)

Digital Pin 59 is currently UNASSIGNED

>> val=analogRead(a,0)

Digital Pin 60 is currently UNASSIGNED


Digital Pin 61 is currently UNASSIGNED

val =

Digital Pin 62 is currently UNASSIGNED


Digital Pin 63 is currently UNASSIGNED

1023

Digital Pin 64 is currently UNASSIGNED


Digital Pin 65 is currently UNASSIGNED

>> val=analogRead(a,0)

Digital Pin 66 is currently UNASSIGNED


Digital Pin 67 is currently UNASSIGNED

val =

Digital Pin 68 is currently UNASSIGNED


Digital Pin 69 is currently UNASSIGNED

Pin IO Methods: pinMode digitalRead


digitalWrite analogRead analogWrite
analogReference

Serial port and other Methods: serial flush


roundTrip

>> arduinouno_gettingstarted

Analog Write Simulink


Flip Flop

Analog Read Simulink

Anda mungkin juga menyukai