0% menganggap dokumen ini bermanfaat (0 suara)
440 tayangan

Modul Belajar Arduino

untuk byang ingin belajar arduino (pemula)

Diunggah oleh

Ricky Setiawan
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
440 tayangan

Modul Belajar Arduino

untuk byang ingin belajar arduino (pemula)

Diunggah oleh

Ricky Setiawan
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 59

Modul Pelatihan Pemrograman Mikrokontroler Berbasis

Arduino

Disusun Oleh :
Rausan Fikri, S.Si
Herjuno Aji Prayogo, S.Kom
1

Modul 1

Pertemuan
Materi Deskripsi Materi
ke-
1 Mengenal Mikrokontroller Mikrokontroler dan Kegunaannya
Perbedaan antara Mikrokontroler
dengan Mikroprosesor
CISC & RISC
2 Arduino Apa Itu Arduino
Jenis-jenis Board Arduino
Teori Arduino Nano ATmega328
1 Konfigurasi Pin Arduino Nano
3 Pengenalan Bahasa C Struktur Penulisan Pemograman C
4 Penjelasan kaki led Anoda dan katoda pada LED
Penggunaan breadboard agar rangkaian
5 Penjelasan Jalur Breadboard berjalan dengan baik dan tidak terjadi
korslet.
1 Input Output Blinking Led
Praktik
Variabel, Tipe Data & #define

Copyright (c) 2017 Kedai Techno - Rev2


2

Teori
1. Mengenal Mikrokontroller
1.1. Mikrokontroler dan Kegunaannya
Menurut Wikipedia yang namanya Mikrokontroler atau biasa disingkat MCU (Microcontroller
Unit) merupakan sebuah komputer kecil yang dikemas dalam satu IC (Integrated Circuit) berisikan
sebuah prosesor, memory dan peripherals Input/Output yang terprogram.
Penggunaan teknologi mikrokontroler dapat kita temui pada peralatan elektronik dirumah
seperti remote televisi, telepon digital, mesin cuci dll. Pengaplikasian teknologi mikrokontroler
dapat digunakan pada bidang otomatisasi industri, akuisi data, telekomunikasi dll.

1.2. Mikrokontroler & Mikroprosesor


 Di dalam mikrokontroler terdapat mikroposesor.
 Mikroprosesor tanpa RAM, ROM Timer, PORT I/O
 Mikrokontroler ada mikroporesor, RAM, ROM, TIMER, Port I/O yang disusun dalam sebuah IC

1.3. CISC & RISC


Berdasarkan desain CPU dan set Instruksi mikrokontroler dibedakan menjadi 2 yaitu Complex
Instruction Set Computing (CISC) & Reduce Instruction Set Computing (RISC). CISC memiliki set
instruksi yang kompleks dengan tujuan untuk mengurangi ukuran program yang telah terkompilasi
sehingga model ini memiliki ukuran memori utama sedikit, contoh mikrokontroler CISC intel 8051
(MCS51), motorola 68HC11 dll.
Sistem RISC lebih populer saat ini karena tingkat kinerjanya. sistem ini memiliki jumlah instruksi
lebih sedikit sehingga untuk pemrogramannya lebih mudah menggunakan bahasa pemrograman
tingkat tinggi, salah satunya bahasa C. Sistem ini memiliki lebih banyak register. Selain itu eksekusi
intruksi pada sistem RISC dilakukan lebih cepat rata-rata satu clock per instruksi. Contoh
mikrokontroler RISC yaitu AVR keluaran ATMEL, PIC12/16XX dll.

2. Arduino
2.1. Arduino dan Jenis Board

Copyright (c) 2017 Kedai Techno - Rev2


3

Arduino merupakan Open Board elektronik atau bisa disebut sebagai sistem minimum board
dari sebuah mikrokontroler yang sudah memiliki bootloader sehingga pemrogramannya tidak
menggunakan chip programer lagi melainkan hanya melalui komunikasi serial. Arduino menjadi
populer karena sangat mudah digunakan bagi mereka yang tidak memiliki pengetahuan yang kuat
tentang pemrograman karena arduino sudah memiliki library yang banyak dan bersifat open source
sehingga sangat mudah digunakan.
Ada beberapa jenis produk development board & modul yang dikembangkan oleh Arduino.
Produk yang diberi nama Arduino dijual di USA saja sedangkan untuk diluar USA diberi nama
Genuino. Jenis produk Arduino dibedakan dalam beberapa kategori yaitu Kategori Entry level,
Enhanced Features, IoT (internet of Things), Wearable & Retired.
Kategori Entry level Product diperuntukan bagi mereka yang ingin mulai belajar pemrograman,
mudah digunakan dan sangat cocok untuk project pertama anda. Untuk kamu yang ingin
melakukan project yang lebih complex dan memerlukan board yang memiliki advanced
functionalities dan performa yang cepat bisa memilih kategori Enhanced features Product.
Sedangkan bagi kamu yang ingin yang ingin mengebangkan teknologi berbasis IoT bisa memilih IoT
product. Info lebih lanjut tentang produk Arduino bisa diliat disitus resminya (arduino.cc).

Copyright (c) 2017 Kedai Techno - Rev2


4

Gambar 1. Arduino Entry Level Product (Sumber : www.Arduino.cc)

Setiap jenis Board arduino tidak memiliki mikrokontroler yang sama. Contohnya pada Arduino
Uno menggunakan chip ATmega328 yg merupakan mikrokontroler keluaran ATMEL sedangkan
pada Aduino 101 menggunakan chip Intel Curie besutan Intel.

2.2. Arduino Nano 3.0


Berdasarkan chip mikrokontroler yang digunakan Arduino Nano dibedakan menjadi dua yaitu
Arduino Nano versi 2.x yang menggunakan chip mikrokontroler ATmega168 dan Arduino Nano versi
3.x yang menggunakan ATmega328.

Gambar 2 Arduino Nano (sumber Arduino.cc)

Copyright (c) 2017 Kedai Techno - Rev2


5

Spesifikasi dari Arduino Nano 3.0 dapat dilihat pada tabel 1 dibawah ini (sumber :arduino.cc).
Tabel 1. spesifikasi Arduino Nano 3.0

Microcontroller ATmega328
Operating Voltage (logic
5V
level)
Input Voltage
7-12 V
(recommended)
Input Voltage (limits) 6-20 V
Digital I/O Pins 14 (of which 6 provide PWM output)
Analog Input Pins 8
DC Current per I/O Pin 40 mA
32 KB (ATmega328) of which 2 KB used by
Flash Memory
bootloader
SRAM 2 KB (ATmega328)
EEPROM 1 KB (ATmega328)
Clock Speed 16 MHz
Dimensions 0.73" x 1.70"
Length 45 mm
Width 18 mm
Weigth 5g

Copyright (c) 2017 Kedai Techno - Rev2


6

Gambar 3 Konfigurasi Pin Arduino Nano 3.0

3. Struktur Penulisan Program Arduino


Pemrograman mikrokontroler platform arduino bisa menggunakan program Arduino IDE dan
bahasa pemrogramannya menggunakan bahasa C/C++. struktur penulisan program Arduino sama
dengan penulisan program C dimana pada hakekatnya sebuah program tersusun atas sejumlah blok

Copyright (c) 2017 Kedai Techno - Rev2


7

fungsi. Sebuah fungsi dibuat dengan beberapa pernyataan yang tujuannya untuk melaksanakan
sebuah tugas dan ada biasanya sebuah fungsi juga ada yang tidak mengandung pernyataan.

i. Pre-processor
Merupakan bagian dari program dalam bahasa c yang selalu dijalankan pertama kali.
Bagian ini juga melakukan proses tertentu. Banyak sekali syntax dalam pre-processor. Namun
setidaknya ada dua syntax yang akan sering kita gunakan dalam latihan programming dasar,
yaitu syntax #include dan #define.
#include: proses yang pertama kali dijalankan untuk memanggil library/prototype fungsi yang
ada di dalam header file.
#include <servo.h>

Berarti meng-include file servo.h. Dengan demikian berarti kita mempersiapkan, fungsi-fungsi
dan instruksi-instruksi yang dapat digunakan untuk mengontrol servo seperti attach, detach,
dan write.
#define: proses yang pertama kali dijalankan untuk mendefinisikan konstanta dan macro. Nilai
dari konstanta tidak akan berubah selama program berlangsung.
#define pinServo 9
#define pinPotensio 0

Kita dapat juga membuat sebuah objek dan mendefinisikan variabel pada pre-processor
Servo myservo;
int val;

myservo merupakan objek dari ‘Servo’, sedangkan val merupakan variabel yang tipe datanya
integer.
ii. Fungsi Utama
Jika kita ingin menggunakan fasilitas atau fitur tertentu sebuah mikrokontroler maka kode
program yang dituliskan diletakkan pada fungsi utama.
void(setup){
myservo.attach(pinServo);
}

iii. Fungsi Looping


Fungsi looping (perulangan) merupakan fungsi yang akan menjalankan perintah yang kita buat
dan terus menerus akan dijalankan.

Copyright (c) 2017 Kedai Techno - Rev2


8

void(loop){
val = analogRead(pinPotensio);
val = map(val, 0, 1023, 0, 179);
myservo.write(val);
delay(15);
}

B. Tipe Data dan Variabel


Dalam pemrograman bahasa C juga dikenal banyak tipe data, namun kita akan membahas
beberapa yang paling sering digunakan dalam pemrograman dasar arduino.
a) int (integer) = tipe data untuk menyimpan bilangan bulat
b) float = tipe data untuk menyimpan bilangan desimal
c) string = tipe data untuk menyimpan kata
selain tiga tipe data diatas, dapat di cek pada https://www.arduino.cc/en/Reference/HomePage
pada bagian “Data Types”. Tipe data digunakan untuk menentukan tipe suatu variabel yang
nantinya akan digunakan. Variabel adalah suatu pengenal (identifier) yang mewakili nilai tertentu di
dalam proses suatu program. Berikut contoh penggunaan variabel dan inisialisasi nilainya
int val = 100;
float dec = 100.01;
string alpha = “seratus”;

Hal-hal yang perlu diperhatikan dalam Penulisan Bahasa C


 Setiap akhir penulisan kode program diakhiri tanda titik koma (;) kecuali penulisan sebuah
fungsi & preprocessor.
 Besar kecilnya huruf harus diperhatikan, alias case-sensitive. Artinya jika ada salah menuliskan
satu huruf saja, maka kode akan error.

4. Penjelasan Kaki pada LED

Gambar 4. Anoda dan katoda pada LED

Copyright (c) 2017 Kedai Techno - Rev2


9

LED (Light Emitting Diode) memiliki dua kaki, yaitu anoda dan katoda. Anoda adalah kutub positif dan
katoda adalah kutub negatif. Anoda biasanya yang berkaki panjang, dan kepalanya yang kecil.
5. Penjelasan Penggunaan Breadboard

Penjelasan jalur breadboard/protoboard


1. Sisi dalam breadboard, a-b-c-d-e merupakan satu jalur, f-g-h-i-j merupakan satu jalur, 1,2,3 dst
berbeda jalur
2. Sisi tepi breadboard (jalur panjang) hanya memiliki 2 jalur, biasanya digunakan untuk jalur + dan
-.
Gambar 5. contoh pemasangan LED pada breadboard

Copyright (c) 2017 Kedai Techno - Rev2


10

PRAKTIKUM 1

Job 1

Menghidupkan dan mematikan lampu

 Skema

Cathode

Anode

Copyright (c) 2017 Kedai Techno - Rev2


11

Anode

Cathode

ARDUINO LED
D13 - Resistor 220 ohm - Anoda
GND - Katoda

Logika Program :
Lampu hidup selama 1 detik, lalu mati selama 1 detik, tulis di
void loop agar lampu menjadi kelap kelip.
 Kode Program

void setup() {
pinMode(13, OUTPUT); // menginstruksikan mode pin 13 sebagai OUTPUT
}
void loop() {
digitalWrite(13, HIGH); // menghidupkan LED, pin 13 diberi nilai HIGH
delay(1000); // delay 1 detik atau 1000 milisekon
digitalWrite(13, LOW); // mematikan LED, pin 13 diberi nilai LOW
delay(1000);
}

Copyright (c) 2017 Kedai Techno - Rev2


12

Job 2

 Schematic

D13 - R1 - LED1 - GND


D12 - R3 - LED2 - GND
D11 - R2 - LED3 - GND

TASK :

 Rangkai 3 led
 Hidup dan matikan 3 led secara bersamaan dengan delay 1 detik setiap hidup dan mati
 Hidup dan matikan 3 led secara bergantian dengan delay 500 milisekon
 Gunakan #define atau tipe data integer untuk mendefinisikan pin

Copyright (c) 2017 Kedai Techno - Rev2


13

Modul 2

Pertemuan
Materi Deskripsi Materi
ke-
Membandingkan dua nilai untuk
1 Operator Relasi
mengambil keputusan
Untuk menggabungkan banyak kondisi
2 Operator Logika
logika.
3 Pernyataan If Penjelasan dan penggunaan If
4 Pernyataan If - else Penjelasan dan penggunaan If - else
Teori
Pernyataan Nested If (if di Penjelasan dan penggunaan If di dalam
5
dalam if) if
2 Penjelasan dan penggunaan If - else if -
6 Pernyataan If - else if - else
else
Penjelasan dan penggunaan komunikasi
7 Komunikasi Serial
serial
Menghidupkan dan mematikan lampu
1 Digital Input Pull-Up
menggunakan pushbutton
Praktik Menghidupkan dan mematikan 2 lampu
2 Kendali 2 lampu secara bergantian menggunakan 1
pushbutton

Copyright (c) 2017 Kedai Techno - Rev2


14

Pengambilan Keputusan

1. OPERATOR RELASI
Untuk membandingkan dua buah nilai kita bisa menggunakan operator relasi. Adapun operator
relasi dalam bahasa C dapat dilihat pada Tabel 1.

Tabel 1. Operator Relasi


Operator Keterangan
== Sama dengan
> Lebih dari
< Kurang dari
>= Lebih dari atau sama dengan
<= Kurang dari atau sama dengan
!= Tidak sama dengan

Contoh :
X adalah bernilai 2
X == 2 --> TRUE
X != 2 --> FALSE
X>1 --> TRUE
X<1 --> FALSE
X <= 2 --> TRUE
X != 5 --> TRUE

2. Operator Logika
Operator logika digunakan untuk menggabungkan banyak kondisi logika yaitu kondisi TRUE dan
kondisi FALSE. Operator logika dapat digunakan di dalam if jika menggunakan 2 kondisi atau lebih.

Jenis operator logika dalam bahasa C adalah sebagai berikut:

Tabel 2. Operator Logika


contoh Nama Operator (simbol) Keterangan
x && y And (&&) True jika x dan y bernilai true
y || y Or (||) True jika salah satu dari x atau y bernilai true
!y Not (!) True jika nilai dari y adalah tidak true (bernilai
kebalikan atau merubah true menjadi false)

Contoh :
TRUE && TRUE --> TRUE
TRUE && FALSE --> FALSE
TRUE || FALSE --> TRUE
!(TRUE && TRUE) --> FALSE
FALSE || FALSE --> FALSE

Copyright (c) 2017 Kedai Techno - Rev2


15

3. Pernyataan if
int val = 51;
If (val > 50){ // kondisi terpenuhi, perintah di dalam if di eksekusi
digitalWrite(12,HIGH);
}

If digunakan dalam pengambilan keputusan, jika kondisi yang diinginkan terpenuhi maka perintah
yang berada di dalam kurung kurawal akan dieksekusi. Pada contoh diatas jika nilai dalam variabel
val lebih besar daripada 50, maka pin D12 menjadi HIGH

4. Pernyataan if-else
int val = 49;
if (val > 50){ //kondisi tidak terpenuhi
digitalWrite(12,HIGH);
}
else { // perintah di dalam else di eksekusi
digitalWrite(12,LOW);
}

If - else digunakan bila ada kondisi selain dari if, misalnya pada contoh diatas, jika nilai dalam
variabel val lebih besar daripada 50 makan pin D12 menjadi HIGH, lalu untuk elsenya adalah kondisi
selain if, jika nilai dalam variabel value lebih kecil atau sama dengan 50 makan pin D12 menjadi
LOW.

5. Pernyataan If di dalam if (nested if)


if (val > 50){
If (val2 < 90){
digitalWrite(12,HIGH);
}
}
else {
digitalWrite(12,LOW);

If di dalam if digunakan bila untuk mengecek / validasi berganda, atau untuk mencapai 2 kondisi
yang berbeda secara bertahap.
Contoh diatas adalah jika variabel val bernilai lebih dari 50, lalu melakukan if lagi, jika val2 bernilai
kurang dari 90, maka pin D12 menjadi HIGH. Jika kondisinya tidak tepenuhi maka eksekusi else
yaitu pin D12 menjadi LOW.

Copyright (c) 2017 Kedai Techno - Rev2


16

6. Pernyataan If -else if - else

if (val >= 50 && val =< 100){


digitalWrite(12,HIGH);

}
else if (val < 50 && val > 0){
digitalWrite(13,HIGH)
}
else {
digitalWrite(12,LOW);
digitalWrite(13,LOW);
}

If - else if - else digunakan jika terdapat banyak kondisi. Pada contoh diatas jika val bernilai 50
sampai 100 maka pin 12 bernilai HIGH, jika val bernilai 1 sampai 49 maka pin 13 bernilai HIGH, pada
kondisi selain dari itu maka pin 12 dan 13 bernilai LOW.

7. Komunikasi Serial

Komunikasi serial digunakan untuk berkomunikasi dengan mikrokontroler, komunikasi serial sangat
berguna untuk memberikan informasi apa yang sedang dikerjakan oleh mikrokontroler. Lewat
komunikasi serial kita juga dapat memberikan perintah kepada mikrokontroler pada saat
beroperasi. Berikut contoh komunikasi serial.

void setup() {
// memulai komunikasi serial dengan baud rate 9600
Serial.begin(9600);
Serial.print(“Booting Arduino”);
Serial.print(“...............”);
delay(1000);
Serial.println(“booting selesai”);

void loop() {
Serial.println(“looping”);
delay(1000);
}

Penjelasan :
 Serial.begin(9600) : memulai komunikasi serial dengan baud rate 9600
 Serial.print : print / cetak tulisan yang diinginkan
 Serial.println : cetak tulisan sekaligus cetak enter setelah menulis tulisan

Setelah mengupload sketch diatas, buka serial monitor, icon pada pojok kanan atas arduino IDE

Gambar 1. Membuka Serial monitor

Copyright (c) 2017 Kedai Techno - Rev2


17

Setelah terbuka, pastikan baud ratenya sesuai dengan yang ada di sketch yang diupload

Copyright (c) 2017 Kedai Techno - Rev2


18

Praktikum
Job 1
Digital Input Pullup
Schematic

D13 - resistor 220ohm - LED - GND


D2 - pushbutton - GND

Copyright (c) 2017 Kedai Techno - Rev2


19

Algoritma program 1a :
Lampu menjadi hidup bila tombol ditekan, dan mati ketika tombol
tidak ditekan

KODE PROGRAM 1a

void setup() {

pinMode(2, INPUT_PULLUP); // setting sebagai pull up resistor


pinMode(13, OUTPUT); // pin LED, setting sebagai OUTPUT

void loop() {
int tombol= digitalRead(2);
delay(50);
//INPUT_PULLUP menjadikan kondisi awal pin menjadi HIGH
// jika tombol di tekan maka kondisi pin D2 menjadi LOW
if (tombol== LOW) { //jika tombol ditekan, lampu menjadi hidup
digitalWrite(13, HIGH);
} else { //jika tombol dilepas, lampu menjadi mati
digitalWrite(13, LOW);
}
}

Komunikasi serial - memberi status lampu lewat komunikasi serial

void setup() {
Serial.begin(9600);
pinMode(2, INPUT_PULLUP); // setting sebagai pull up resistor
pinMode(13, OUTPUT);

void loop() {

int tombol= digitalRead(2);


delay(50);
if (tombol== LOW) {
digitalWrite(13, HIGH);
Serial.println("lampu hidup");
delay(50);
} else {
digitalWrite(13, LOW);
Serial.println("lampu mati");
delay(50);
}
}

Copyright (c) 2017 Kedai Techno - Rev2


20

Algoritma Program 1b
Tekan tombol untuk menghidupkan lampu, tekan lagi untuk
mematikannya
Kode PROGRAM 1b
int led1 = 13;
int val = 0;
void setup() {
//mulai komunikasi serial
Serial.begin(9600);

//jadikan pin2 sebagai pullup


pinMode(2, INPUT_PULLUP);
pinMode(led1, OUTPUT);
}

void loop() {
//baca nilai pushbutton
int tombol = digitalRead(2);
//set delay agar tombol bisa dideteksi dengan sempurna
delay(150);

// harus diingat, pada digitalpullup, logikanya terbalik


// ketika tombol ditekan maka bernilai LOW
// ketika tidak ditekan makan nilainya HIGH

if (tombol == LOW) {
if (val == 0){
digitalWrite(led1, HIGH);
Serial.println(“lampu hidup”);
}else if (val == 1){
digitalWrite(led1, LOW);
Serial.println(“lampu mati”);
}
val = val + 1;
if (val > 1) {
val = 0;
}
}
}

Copyright (c) 2017 Kedai Techno - Rev2


21

Job 2
Kendali 2 lampu
Skema

D5 - R1 - LED1 -GND
D6 - R2 - LED2 - GND

Copyright (c) 2017 Kedai Techno - Rev2


22

Algoritma Program 2:
Tekan tombol untuk menghidupkan lampu 1, tekan lagi untuk
menghidupkan lampu 2, tekan lagi untuk mematikan kedua
lampu.
Kode PROGRAM 2
int led1 = 5;
int led2 = 6;
int val = 0;
void setup() {
//mulai komunikasi serial
Serial.begin(9600);

//jadikan pin2 sebagai pullup


pinMode(2, INPUT_PULLUP);
pinMode(led1, OUTPUT);
}

void loop() {
//baca nilai pushbutton
int tombol = digitalRead(2);
//set delay agar tombol bisa dideteksi dengan sempurna
delay(150);

// harus diingat, pada digitalpullup, logikanya terbalik


// ketika tombol ditekan maka bernilai LOW
// ketika tidak ditekan makan nilainya HIGH

if (tombol == LOW) {
if (val == 0) {
digitalWrite(led1, HIGH);
Serial.println(“lampu 1 hidup”);
} else if (val == 1) {
digitalWrite(led2, HIGH);
Serial.println(“lampu 2 hidup”);
}
else if (val == 2) {
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
Serial.println(“lampu mati”);
}
val = val + 1;
if (val > 2) {
val = 0;
}
}
}

Copyright (c) 2017 Kedai Techno - Rev2


23

Tugas :

1. Gunakan 3 lampu LED


2. Hidupkan secara bergantian menggunakan pushbutton
a) Tekan 1 kali lampu 1 hidup
b) Tekan 2 kali lampu 2 hidup
c) Tekan 3 kali lampu 3 hidup
d) Tekan 4 kali semua lampu mati

Copyright (c) 2017 Kedai Techno - Rev2


24

Modul 3

Pertemuan
Materi Deskripsi Materi
ke-
Analog Vs Digital
Analog Vs Digital, ADC dan
1 ADC (Analog Digital Converter)
PWM
Teori PWM (Pulse Width Modulation)
Looping For
3 2 Perulangan (Looping)
Looping While
1 ADC Memonitor nilai dari potensiometer
Praktik Mengontrol nyala led menggunakan
2 PWM
PWM, bisa terang, dan redup, atau mati

Copyright (c) 2017 Kedai Techno - Rev2


25

1. Analog Vs Digital, ADC & PWM


1.1. Analog Vs Digital

Pada sinyal digital hanya ada 2 keadaan yaitu HIGH dan LOW atau 5v dan 0v, tetapi dengan
menggunakan analog kita dapat mengatur tegangan yang keluar seperti 1v, 2.2v, 4.5v, dsb.
1.2. Analog Digital Converter (ADC)
Analog Digital Converter (ADC) merupakan sistem pengubahan sinyal analog menjadi sinyal
digital. 2 karakter prinsip yang dimiliki ADC yaitu kecepatan sampling dan kecepatan resolusi. pada
Arduino Nano 3.0 yang menggunakan mikrokontroler ATmega328 keluaran Atmel bisa
menggunakan resolusi ADC 10 bit .
Cara konversi perhitungan nilai input tegangan ke bilangan biner dapat kita gunakan
persamaan 1.1 sebagai berikut :
Vin
x R (1.1)
Vref
dimana :
x=nilai input pin ADC yang terbaca
Vin = tegangan input
Vref = tegangan referensi
R= nilai resolusi dari ADC
Sebagai contoh kita ingin mengetahui berapa nilai input pin adc yang terbaca jika Vin sebesar 3 v
dengan tegangan referensi sebesar 5 v dan nilai resolusi ADC 1023 (10bit).

Copyright (c) 2017 Kedai Techno - Rev2


26

Diketahui : Vin = 3v
Vref= 5v
R=1023
Nilai input pin ADC yang terbaca (x)?
Vin
x R
Vref
3
x x1023
5
x  614

Jika kita ingin mengubah nilai 614 (yang merupakan nilai desimal) menjadi nilai biner maka cara
perhitungannya.
614
 307 sisa 0
2
307
 153 sisa 1
2
153
 76 sisa 1
2
76
 38 sisa 0
2
38
 19 sisa 0
2
19
9 sisa 1
2
9
4 sisa 1
2
4
2 sisa 0
2
2
1 sisa 0
2
1
0 sisa 1
2
Jadi bilangan binernya 1001 1001 10

Copyright (c) 2017 Kedai Techno - Rev2


27

1.3. Pulse Width Modulation (PWM)


Seperti kita ketahui bahwa nilai tegangan output pada Arduino Nano 3.0 bisa bernilai 5V (HIGH)
atau 0v (Low). namun jika kita hendak mengatur besar nilai tegangan output menjadi 1,2 atau 3v
( rentang nilai diantara 0-5 v ) maka kita bisa menggunakan teknik PWM (Pulse Width Modulation).
Parameter yang dapat diatur pada PWM adalah periode & lebar pulsa, sedangkan untuk mengatur
besarnya tegangan yang diinginkan kita bisa mengatur besarnya duty cycle. duty cycle merupakan
persentase nilai lebar pulsa dalam satu periode gelombang.

Sedangkan untuk mencari nilai dari Duty Cycle kita bisa menggunakan persamaan 1.2 dibawah
ini
tHIGH
D  100% (1.2)
ttotal
Keterangan:
D = Duty cycle
tHIGH = waktu pada saat keadaan HIGH (lebar pulsa)
Ttotal = total waktu dalam satu gelombang (periode)

Untuk memahami lagi tentang duty cycle bisa kita lihat pada Gambar 2 dibawah ini :

Copyright (c) 2017 Kedai Techno - Rev2


28

Gambar 2 Ilustrasi duty cycle 0%, 100% & 50%


Pada gambar diatas terlihat jika duty cylce 0% maka nilai tegangan yang keluar 0v sedangkan pada
duty cycle 100% tegangan keluarannya sebesar 5v (HIGH) dan jika duty cycle sebesar 50% maka
tegangan keluarannya sebesar 2,5v.

Copyright (c) 2017 Kedai Techno - Rev2


29

2. Looping (perulangan) for & while


2.1. Looping for
“For” dalam bahasa C merupakan fungsi atau kontrol untuk pengulangan sampai dengan batas
yang ditentukan.

for ( init; condition; increment ) {


statement(s);
}
Keterangan kode:
 Init : inisialisasi batas awal pengulangan
 Condition : kondisi pengulangan yang akan ditentukan
 Increment : pengaturan penambahan nilai pada variable
Lebih jelasnya dapat dilihat pada contih berikut ini.

for ( int i = 0; i<10; i++ ) {


Serial.println(i);
}
Pada contoh diatas, nilai i bernilai awal 0, dengan kondisi i<10 maka for akan terus menjalankan
fungsinya sampai dengan 9 dengan penambahan 1 setiap pengulangannya. Output dari contoh
kode diatas adalah

0
1
2
3
4
5
6
7
8
9

2.2. Looping while


Pada looping while, perulangan akan dilakukan selama kondisi yang diinginkan masih bernilai
benar (TRUE) dan akan berhenti jika kondisinya telah salah. Format penulisan while dalam bahasa C
adalah sebagai berikut :

while (kondisi){
Statement;
}

Copyright (c) 2017 Kedai Techno - Rev2


30

Contoh penggunaan while

int i = 0;
while (i<10){
Serial.println(i);
i++;
}

Pertama variabel i diberi nilai 0, lalu while akan terus mengulang dengan kondisi i < 10. jika i telah =
10 maka while akan berhenti. Output dari contoh kode while adalah

0
1
2
3
4
5
6
7
8
9

Copyright (c) 2017 Kedai Techno - Rev2


31

Job 1_ADC
Schematic

PINOUT POTENSIOMETER

Copyright (c) 2017 Kedai Techno - Rev2


32

Algortima Program 1:
Menampilkan nilai pontesiometer lewat komunikasi serial

Kode Program 1
int analogPin = 0;
int nilai = 0;

void setup(){
Serial.begin(9600);
}

void loop()
{
nilai = analogRead(analogPin);
Serial.println(nilai);
delay(500);
}

Copyright (c) 2017 Kedai Techno - Rev2


33

Job 2 PWM

 Schematic

Anode

Cathode

 Kode Program

Contoh 1 Contoh 2 Contoh 3


void setup() { void setup() { void setup() {
analogWrite(9, 255); analogWrite(9, 50); analogWrite(9, 5);
} } }

void loop() { void loop() { void loop() {

} } }

Task :
- Gabungkan dengan potensiometer sehingga ketika potensiometer di putar maka akan mengontrol nyala LED.
- kontrol PWM dengan menggunakan looping for & while

Copyright (c) 2017 Kedai Techno - Rev2


34

Modul 4

Pertemuan
Materi Deskripsi Materi
ke-
1 Module Driver Motor L298N Fungsi dan pinout dari L298N
Teori
2 Modul Relay Fungsi dan cara kerja Relay
Menghidupkan dan mematikan lampu
4 1 L298N
menggunakan pushbutton
Praktik Menghidupkan dan mematikan 2 lampu
2 Relay secara bergantian menggunakan 1
pushbutton

Copyright (c) 2017 Kedai Techno - Rev2


35

1. Module Driver L298N


Besar arus output yang dikeluarkan sebuah mikrokontroler sangatlah kecil sehingga ketika kita
ingin mengontrol sebuah motor DC maka kita memerlukan sebuah driver. Salah satu yang dapat kita
gunakan adalah modul driver L298N. berikut

Output 1 Output 4

Output 3
Output 2

Vin
GND 5V

Keterangan Pinout dari modul driver l298N :


Vin = tegangan input untuk motor DC max 46V
GND = Ground
5V = Tegangan untuk modul L298N

Copyright (c) 2017 Kedai Techno - Rev2


36

ENA = enable PWM out 1 & out 2


ENB = enable PWM Out 3 & Out 4

Fungsi pin in1, in2, in3, in4


In1(HIGH) = OUT1(HIGH)
In1(LOW) = OUT1(LOW)
In2(HIGH) = OUT2(HIGH)
In2(LOW) = OUT2(LOW)
In3(HIGH) = OUT3(HIGH)
In3(LOW) = OUT3(LOW)
In4(HIGH) = OUT4(HIGH)
In4(LOW) = OUT4(LOW)

2. Modul Relay
Bagaimana cara kita untuk mengontrol sebuah perangkat yang menggunakan arus listrik AC
(Alternate current) dengan mikrokontroler. Seperti yang kita ketahui Output arus dari
mikrokontroler menggunakan DC dan arusnya juga tidak besar sehingga untuk mengontrol
perangkat yang menggunakan Arus AC kita mesti menggunakan sebuah saklar yang dapat dikontrol
oleh mikrokontroler. Menurut wikipdia Relai adalah suatu peranti yang
menggunakan elektromagnet untuk mengoperasikan seperangkat kontak sakelar.

Berdasarkan cara Kerjanya relai dibedakan menjadi 4 yaitu (https://id.wikipedia.org/wiki/Relai) :

1. Normal terbuka. Kontak sakelar tertutup hanya jika relai dihidupkan.

Copyright (c) 2017 Kedai Techno - Rev2


37

2. Normal tertutup. Kontak sakelar terbuka hanya jika relai dihidupkan.


3. Tukar-sambung. Kontak sakelar berpindah dari satu kutub ke kutub lain saat relai dihidupkan.
4. Bila arus masuk Pada gulungan,maka seketika gulungan akan berubah menjadi medan magnet.
Gaya magnet inilah yang akan menarik luas sehingga saklar akan bekerja

Copyright (c) 2017 Kedai Techno - Rev2


38

Job 1
Skema

Konfigurasi pin:
 in1 hubungkan ke pin D2
 In2 hubungkan ke pin D3
 EnA hubungkan ke D9

Copyright (c) 2017 Kedai Techno - Rev2


39

Kode Program
Contoh 1
void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(9, OUTPUT);
}
void loop() {
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(9, HIGH);
}

Contoh 2
void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(9, OUTPUT);

}
void loop() {
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(9, HIGH);

}
Contoh 3
void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(9, OUTPUT);
}
void loop() {
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(9, LOW);
}

TASK
 Gunakan teknik pwm untuk mengatur kecepatan motor
 Gunakan potensiometer untuk mengatur kecepatan motor dc

Copyright (c) 2017 Kedai Techno - Rev2


40

Job 2 Relay
Skema
D2 - IN
5v - VCC
GND - GND

Task
1. Hidupkan LAMPU 220V (set pin D2 menjadi LOW)
2. Matikan LAMPU 220v (set pin D2 menjadi HIGH)

Copyright (c) 2017 Kedai Techno - Rev2


41

Modul 5

Pertemuan
Materi Deskripsi Materi
ke-
Penjelasan Singkat tentang sensor
1 Sensor Ultrasonik
ultrasonik
Teori 2 LCD Penjelasan singkat LCD
Real Time Clock, modul jam untuk
3 RTC
arduino
5 Mendeteksi jarak menggunakan
1 Ultrasonik HC-SR04, ditampilkan pada serial
monitor
Praktik
2 LCD Menampilkan tulisan pada LCD
Mengambil data jam dari RTC,
3 RTC
ditampilkan pada serial monitor

Copyright (c) 2017 Kedai Techno - Rev2


42

1. Sensor Ultrasonik
Sensor Ultrasonik adalah alat elektronika yang kemampuannya bisa mengubah dari energy
listrik menjadi energy mekanik dalam bentuk gelombang suara ultrasonik. Sensor ini terdiri dari
rangkaian pemancar Ultrasonik yang dinamakan transmitter dan penerima ultrasonik yang disebut
receiver. Alat ini digunakan untuk mengukur gelombang ultrasonik.

Pada sensor ultrasonik HC-sr04 dapat dilihat transmitter (bulatan kiri) dan receiver (bulatan
kanan), terdapat juga 4 pin, yaitu untuk daya dan komunikasi dengan mikrokontroler.
2. LCD (Liquid Crystal Display)

LCD 16x2 adalah salah satu lcd yang sering digunakan dalam berbagai project arduino, karena
mudah didapat dan mudah untuk diprogram dengan arduino. Library untuk lcd ini juga sudah ada di
arduino.
3. Real Time Clock (RTC)

Copyright (c) 2017 Kedai Techno - Rev2


43

Real time clock (RTC) adalah modul yang dibuat untuk menyimpan data waktu secara real time.
Data waktu yang tersimpan dari detik sampai dengan tahun. Modul ini sangat berguna untuk
berbagai project, terutama yang membutuhkan untuk menjalankan perintah berdasarkan waktu.
Misalnya kontrol lampu hidup pada jam enam sore, dan mati pada jam 6 pagi. Mikrokontroler
sebenarnya bisa menyimpan waktu, tapi ketika dimatikan maka waktunya akan mulai dari awal
alias tidak tersimpan atau tidak berjalan ketika si mikrokontroler dalam keadaan mati, sedangkan
dengan modul RTC waktu akan tersimpan walau mikrokontroler mati karena RTC memiliki baterai
sendiri.

Copyright (c) 2017 Kedai Techno - Rev2


44

Praktikum

Job 1
Ultrasonik

Kode
Masukkan dulu library NewPingMaster pada masing-masing folder library arduino. Defaultnya
di folder Documents > Arduino > library.

Copyright (c) 2017 Kedai Techno - Rev2


45

#include <NewPing.h>

#define TRIGGER_PIN 12 // pin D12 ke pin trigger


#define ECHO_PIN 11 // pin D11 ke ke pin echo
#define MAX_DISTANCE 200 // up to 400-500 cm
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup
void setup() {
// komunikasi serial dengan baud rate 115200,
// buka serial monitor setelah upload
Serial.begin(115200);
}

void loop() {
delay(50); //tunggu 50 ms untuk mendeteksi jarak, minimal delay 29 ms
Serial.print("Ping: ");
// Kirim sinyal dan dapatkan jarak, bila 0 berarti diluar jarak maksimal atau eror
Serial.print(sonar.ping_cm());
Serial.println("cm");
}

Copyright (c) 2017 Kedai Techno - Rev2


46

Job 2
LCD (Liquid Crystal Display)
Skema

Rangkaian LCD
 LCD RS pin ke digital pin 12
 LCD Enable pin ke digital pin 11
 LCD D4 pin ke digital pin 5
 LCD D5 pin ke digital pin 4
 LCD D6 pin ke digital pin 3
 LCD D7 pin ke digital pin 2
 LCD R/W pin ke ground

Copyright (c) 2017 Kedai Techno - Rev2


47

 VDD pin ke 5v
 VSS pin ke ground
 V pin ke resistor ke 5v (power backlight)
 K pin ke ground (gnd backlight)
Rangkaian 10K resistor:
 Vcc ke 5v
 Gnd ke gnd
 Wiper/sinyal ke LCD VO pin (kecerahan lcd)

Kode

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
lcd.clear();
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Kedai Techno");
lcd.setCursor(0, 1);
lcd.print("Arduino Nano v3");
}

void loop() {
}

Copyright (c) 2017 Kedai Techno - Rev2


48

Job 3
RTC (Real Time Clock)

Rangkaian
 VCC ke 5v
 GND ke GND
 SCL ke A5
 SDA ke A4

Program
Pada Arduino IDE, buka example
File > Example > RTClib > ds3231
// Date and time functions using a DS3231 RTC connected via I2C and Wire lib
#include <Wire.h>
#include "RTClib.h"

RTC_DS3231 rtc;

Copyright (c) 2017 Kedai Techno - Rev2


49

char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday",


"Saturday"};

void setup () {

#ifndef ESP8266
while (!Serial); // for Leonardo/Micro/Zero
#endif

Serial.begin(9600);

delay(3000); // wait for console opening

if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}

if (rtc.lostPower()) {
Serial.println("RTC lost power, lets set the time!");
// following line sets the RTC to the date & time this sketch was compiled
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// This line sets the RTC with an explicit date & time, for example to set
// January 21, 2014 at 3am you would call:
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
}

void loop () {
DateTime now = rtc.now();

Copyright (c) 2017 Kedai Techno - Rev2


50

Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();

Serial.print(" since midnight 1/1/1970 = ");


Serial.print(now.unixtime());
Serial.print("s = ");
Serial.print(now.unixtime() / 86400L);
Serial.println("d");

// calculate a date which is 7 days and 30 seconds into the future


DateTime future (now + TimeSpan(7,12,30,6));

Serial.print(" now + 7d + 30s: ");


Serial.print(future.year(), DEC);
Serial.print('/');
Serial.print(future.month(), DEC);
Serial.print('/');
Serial.print(future.day(), DEC);
Serial.print(' ');
Serial.print(future.hour(), DEC);

Copyright (c) 2017 Kedai Techno - Rev2


51

Serial.print(':');
Serial.print(future.minute(), DEC);
Serial.print(':');
Serial.print(future.second(), DEC);
Serial.println();

Serial.println();
delay(3000);
}

Task :
1. Tampilkan jarak dari sensor ultrasonik ke LCD
2. Tampilkan jam dari rtc ke LCD
3. Tampilkan jarak dan jam ke LCD

Copyright (c) 2017 Kedai Techno - Rev2


52

Modul 6

Pertemuan
Materi Deskripsi Materi
ke-
1 Interupsi Interupsi pada arduino
Teori 2 Komunikasi I2C I2C pada arduino
3 Array Array pada pemrograman Arduino (C)
3 Interupsi eksternal menggunakan
1 Interupsi
pushbutton
Praktik Mengkomunikasikan 2 arduino, 1
2 Komunikasi I2C
menjadi slave, 1 menjadi master
3 Array Contoh penggunaaan array

Copyright (c) 2017 Kedai Techno - Rev2


53

1. Interupsi (Interrupts)

Pada tingkat sederhana, interupsi adalah sebuah sinyal yang mengiterupsi proses yang sedang
berlangsung pada prosesor. Interupsi dapat dipicu oleh perubahan faktor eksternal (seperti
perubahan status pada pin input) atau juga faktor internal (seperti timer atau juga software signal).
Pada saat dipicu, interupsi menghentikan sementara proses yang sedang berlangsung dan
menyebabkan program untuk mengeksekusi perintah atau fungsi lain. Pada saat fungsinya selesai
dilakukan, maka program akan kembali bekerja seperti semula.

Pada Arduino Uno, Nano, Mini atau yang berbasis atmega328 pin interupsi terdapat pada pin 2
dan 3. Untuk arduino yang lain, dapat kita lihat pada tabel berikut.
Board Pin Interupsi
Uno, Nano, Mini, dan 328-based 2, 3
Mega, Mega2560, MegaADK 2, 3, 18, 19, 20, 21
Micro, Leonardo, dan 32u4-based 0, 1, 2, 3, 7
Zero semua pin digital, kecuali 4
MKR1000 Rev.1 0, 1, 4, 5, 6, 7, 8, 9, A1, A2
Due Semua pin digital
101 Semua pin digital

Penjelasan sintaks lebih lanjut di https://www.arduino.cc/en/Reference/AttachInterrupt


2. Komunikasi I2C

Inter-Integrated Circuit atau sering disebut I2C adalah standar komunikasi serial dua arah
menggunakan dua saluran yang didisain khusus untuk mengirim maupun menerima data. Sistem
I2C terdiri dari saluran SCL (Serial Clock) dan SDA (Serial Data) yang membawa informasi data
antara I2C dengan pengontrolnya. Piranti yang dihubungkan dengan sistem I2C Bus dapat
dioperasikan sebagai Master dan Slave. Master adalah piranti yang memulai transfer data pada I2C
Bus dengan membentuk sinyal Start, mengakhiri transfer data dengan membentuk sinyal Stop, dan
membangkitkan sinyal clock. Slave adalah piranti yang dialamati master.

Sinyal Start merupakan sinyal untuk memulai semua perintah, didefinisikan sebagai perubahan
tegangan SDA dari “1” menjadi “0” pada saat SCL “1”. Sinyal Stop merupakan sinyal untuk
mengakhiri semua perintah, didefinisikan sebagai perubahan tegangan SDA dari “0” menjadi “1”
pada saat SCL “1”.

Sinyal dasar yang lain dalam I2C Bus adalah sinyal acknowledge yang disimbolkan dengan ACK
Setelah transfer data oleh master berhasil diterima slave, slave akan menjawabnya dengan
mengirim sinyal acknowledge, yaitu dengan membuat SDA menjadi “0” selama siklus clock ke 9. Ini
menunjukkan bahwa Slave telah menerima 8 bit data dari Master.

Pada arduino, komunikasi I2C telah dibuat library nya, yaitu “Wire Library”. Library ini mampu
membuat arduino berkomunikasi dengan perangkat I2C. Pada arduino Uno dan Nano, pin I2C
terdapat pada A4 (SDA) dan A5 (SCL)

3. Array

Copyright (c) 2017 Kedai Techno - Rev2


54

Array (larik) merupakan suatu variabel yang merepresentasikan daftar (list) atau kumpulan
data yang memiliki tipe data sama. Array merupakan konsep yang penting dalam pemrograman,
karna array memungkinkan kita untuk menyimpan data dalam jumlah banyak dan terindeks.

Misalkan ada kumpulan data bertipe int yaitu angka 1, 2, 3, 4, dan 5. Kumpulan data ini dapat
disajikan dalam bentuk Array karena memiliki tipe data yang sama yaitu Int. Misal kumpulan data
tadi kita beri nama Angka sehingga jika disajikan dalam bentuk array akan menjadi Int Angka[]={1, 2,
3, 4, 5} atau Int Angka[5]={1, 2, 3, 4, 5}. Pada sebuah array, index array dimulai dari indeks ke-0,
sehingga pada array Angka[], angka 1 berada di indeks ke-0 (Array[0]), angka 2 berada di indeks
ke-1 (Array[1]), dan seterusnya. Sedangkan pada pendeklarasian Array, Int Angka [5] berarti
Array Angka dapat menampung 5 masukan nilai Int.

Tabel penjelasan array Angka[5] = {1,2,3,4,5}

Indeks array Nilai


Angka[0] (variabel Angka indeks ke 0) 1
Angka[1] (variabel Angka indeks ke 1) 2
Angka[2] (variabel Angka indeks ke 2) 3
Angka[3] (variabel Angka indeks ke 3) 4
Angka[4] (variabel Angka indeks ke 4) 5

Copyright (c) 2017 Kedai Techno - Rev2


55

Praktikum
JOB 1 - Interupsi

Skema

Kode Program

const byte ledPin = 13; //pin 13 sebagai pinled


const byte interruptPin = 2; //pin 2 sebagai pin interupt
volatile byte state = LOW;

void setup() {
pinMode(ledPin, OUTPUT);
// mode input pullup, pada saat terbuka (tombol tidak ditekan), bernilai HIGH,
pinMode(interruptPin, INPUT_PULLUP);
// pasang interup pada pin 2,
// pemicunya CHANGE yaitu perubahan nilai LOW/HIGH pada pin/tombol

Copyright (c) 2017 Kedai Techno - Rev2


56

// lalu eksekusi fungsi blink ketika pemicu terjadi


attachInterrupt(digitalPinToInterrupt(interruptPin), blink, CHANGE);
}

void loop() {
digitalWrite(ledPin, state);
}

void blink() {
state = !state;
}

Task :
1. Ubah CHANGE menjadi FALLING, dan RISING
2. Tambahkan komunikasi serial, lalu berikan keterangan state lewat serial pada saat state
berubah

Copyright (c) 2017 Kedai Techno - Rev2


57

JOB 2 - I2C

Skema

Untuk Contoh Kode i2c, silahkan buka example di Arduino IDE

Untuk master buka di menu File>examples>Wire>master_writer


Untuk slave buka di menu File>examples>Wire>slave_receiver

Copyright (c) 2017 Kedai Techno - Rev2


58

JOB 3 - ARRAY
int angka[5] = {1, 2, 3, 4, 5};
int i = 0;
void setup() {
Serial.begin(9600);
}

void loop() {

if (i < 5) {
Serial.print("Variabel angka indeks ke ");
Serial.print(i);
Serial.print(" adalah ");
Serial.println(angka[i]);
i++;
}

if (i == 5) {
i = 0;
}
delay(1000);
}

Task :
1. panggil urutan array secara berurutan mulai dari yang terbesar (indeks ke 4) ke yang paling
kecil (indeks 0)

Copyright (c) 2017 Kedai Techno - Rev2

Anda mungkin juga menyukai