Anda di halaman 1dari 88

UNIVERSITAS NEGERI MEDAN

PETUNJUK PRAKTIKUM

SISTEM
MIKROPROSESOR

2018

LABORATORIUM TEKNIK ELEKTRO


FAKULTAS TEKNIK
DAFTAR ISI
DAFTAR ISI............................................................................................................................................... 1
KATA PENGANTAR................................................................................................................................... 5
Pengenalan Mikrokontroler Arduino ...................................................................................................... 6
BAB I PENGANTAR MIKROKONTROLER................................................................................................... 6
A. Sejarah Mikrokontroler ............................................................................................................... 6
B. Perkembangan Teknologi Mikrokontroler .................................................................................. 8
C. Implementasi Teknologi Mikrokontroler .................................................................................. 10
D. Rangkuman ............................................................................................................................... 11
BAB II MIKROKONTROLER PLATFORM ARDUINO ................................................................................. 12
A. Konsep Arduino ......................................................................................................................... 12
B. Perangkat Lunak Arduino .......................................................................................................... 15
C. Rangkuman ............................................................................................................................... 19
BAB III PEMROGRAMAN ARDUINO ....................................................................................................... 20
A. Konsep Dasar Pemrograman Arduino....................................................................................... 20
Header........................................................................................................................................... 21
Setup ............................................................................................................................................. 21
Loop............................................................................................................................................... 21
B. Program Sederhana Arduino .................................................................................................... 22
Sketch ............................................................................................................................................ 22
Pembahasan Sketch ...................................................................................................................... 22
C. Ringkasan .................................................................................................................................. 23
BAB IV SIMULASI PROTEUS ................................................................................................................... 24
A. Mengenal Program Proteus ...................................................................................................... 24
B. Menjalankan Program Proteus ................................................................................................. 25
Praktikum Mikrokontroler Arduino ...................................................................................................... 27
MODUL 1 OUTPUT ................................................................................................................................ 27
Tujuan ............................................................................................................................................... 27
Teori Singkat ..................................................................................................................................... 27
1.A. Rangkaian dan Program Sederhana ...................................................................................... 28
Alat dan Bahan .............................................................................................................................. 28
Rangkaian Percobaan .................................................................................................................... 28
Program Percobaan ...................................................................................................................... 28
Langkah Percobaan ....................................................................................................................... 29
Tugas ............................................................................................................................................. 29
1.B. Simulasi Proteus .................................................................................................................... 29
Alat dan Bahan .............................................................................................................................. 29
Rangkaian Percobaan .................................................................................................................... 30
Program Percobaan ...................................................................................................................... 30
Langkah Percobaan ....................................................................................................................... 30
Tugas ............................................................................................................................................. 31
MODUL 2 INPUT – OUTPUT .................................................................................................................. 32
Tujuan ............................................................................................................................................... 32
Teori Singkat ..................................................................................................................................... 32
2.A. Membaca Saklar.................................................................................................................... 34
Alat dan Bahan .............................................................................................................................. 34
Rangkaian Percobaan .................................................................................................................... 35
Program Percobaan ...................................................................................................................... 35
Langkah Percobaan ....................................................................................................................... 36
Tugas ............................................................................................................................................. 37
2.B. Pengendalian LED dengan Saklar .......................................................................................... 38
Alat dan Bahan .............................................................................................................................. 38
Rangkaian Percobaan .................................................................................................................... 38
Program Percobaan ...................................................................................................................... 38
Langkah Percobaan ....................................................................................................................... 39
Tugas ............................................................................................................................................. 40
MODUL 3 ITERASI LOOP ........................................................................................................................ 41
Tujuan ............................................................................................................................................... 41
Teori Singkat ..................................................................................................................................... 41
Aritmetika dan Logika ................................................................................................................... 42
Instruksi Kendali ............................................................................................................................ 43
Instruksi Perulangan ..................................................................................................................... 43
Array.............................................................................................................................................. 45
3.A. Perintah IF dan IF - ELSE ........................................................................................................ 45
Alat dan Bahan .............................................................................................................................. 45
Rangkaian Percobaan .................................................................................................................... 45
Program Percobaan ...................................................................................................................... 46
Langkah Percobaan ....................................................................................................................... 47
Tugas ............................................................................................................................................. 47
3.B. Perulangan dengan WHILE dan FOR ..................................................................................... 48
Alat dan Bahan .............................................................................................................................. 48
Rangkaian Percobaan .................................................................................................................... 48
Program Percobaan ...................................................................................................................... 48
Langkah Percobaan ....................................................................................................................... 49
Tugas ............................................................................................................................................. 50
3.C. Animasi LED........................................................................................................................... 51
Alat dan Bahan .............................................................................................................................. 51
Rangkaian Percobaan .................................................................................................................... 51
Program Percobaan ...................................................................................................................... 51
Langkah Percobaan ....................................................................................................................... 53
Tugas ............................................................................................................................................. 53
3.D. Pengenalan Array .................................................................................................................. 54
Alat dan Bahan .............................................................................................................................. 54
Rangkaian Percobaan .................................................................................................................... 54
Program Percobaan ...................................................................................................................... 54
Langkah Percobaan ....................................................................................................................... 56
Tugas ............................................................................................................................................. 57
MODUL 4 INPUT ANALOG ..................................................................................................................... 58
Tujuan ............................................................................................................................................... 58
Teori Singkat ..................................................................................................................................... 58
Input Analog .................................................................................................................................. 58
Output Analog ............................................................................................................................... 59
4.A. Input Analog .......................................................................................................................... 61
Alat dan Bahan .............................................................................................................................. 61
Rangkaian Percobaan .................................................................................................................... 61
Program Percobaan ...................................................................................................................... 62
Langkah Percobaan ....................................................................................................................... 65
Tugas ............................................................................................................................................. 66
4.B. Output Analog ....................................................................................................................... 66
Alat dan Bahan .............................................................................................................................. 66
Rangkaian Percobaan .................................................................................................................... 66
Program Percobaan ...................................................................................................................... 66
Langkah Percobaan ....................................................................................................................... 68
Tugas ............................................................................................................................................. 69
MODUL 5 KOMUNIKASI SERIAL............................................................................................................. 70
Tujuan ............................................................................................................................................... 70
Teori Singkat ..................................................................................................................................... 70
Serial USART .................................................................................................................................. 71
Operasi Dan Pemrograman Sistem Menggunakan Fitur Lingkungan Pengembangan Arduino ... 72
Antarmuka Peripheral Serial (SPI) ................................................................................................. 72
Antarmuka Serial Dua Kabel (TWI)................................................................................................ 74
5.A. Komunikasi dengan PC .......................................................................................................... 74
Alat dan Bahan .............................................................................................................................. 74
Rangkaian Percobaan .................................................................................................................... 75
Program Percobaan ...................................................................................................................... 75
Langkah Percobaan ....................................................................................................................... 78
Tugas ............................................................................................................................................. 78
5.B. Komunikasi tanpa Kabel (Wireless)....................................................................................... 79
Alat dan Bahan .............................................................................................................................. 79
Rangkaian Percobaan .................................................................................................................... 79
Program Percobaan ...................................................................................................................... 79
Langkah Percobaan ....................................................................................................................... 83
Tugas ............................................................................................................................................. 84
5.C. Komunikasi pada Jaringan..................................................................................................... 85
Alat dan Bahan .............................................................................................................................. 85
Rangkaian Percobaan .................................................................................................................... 85
Program Percobaan ...................................................................................................................... 85
Langkah Percobaan ....................................................................................................................... 87
Tugas ............................................................................................................................................. 87
KATA PENGANTAR
Puji syukur kita panjatkan ke hadirat Tuhan Yang Esa, karena atas berkat dan
karuniaNya telah berdiri Program Studi Teknik Elektro sebagai program studi baru di Jurusan
Pendidikan Teknik Elektro. Untuk itu mutlak diperlukan adanya dokumen pembelajaran
diantaranya Petunjuk Praktikum guna menjamin pelaksanaan pembelajaran berjalan lancara
sesuai tujuan dan kompetensi yang diharapkan berdasarkan KKNI. Dengan usaha dan kerja
maksimal akhirnya penyusunan buku ini dapat terselesaikan atas hasil kerjasama tim penyusun
dari civitas akademika Program Studi Teknik Elektro Universitas Negeri Medan.
Sistem Mikroprosesor merupakan salah satu mata kuliah dan ilmu pengetahuan dasar
yang harus dikuasai oleh mahasiswa teknik elektro, yaitu sebagai bekal untuk menguasai
bidang keelektroan lainnya. Semakin lama perkembangan elektronika khususnya sistem
mikroprosesor semakin pesat dan aplikasinya semakin meluas yang menuntut dasar pondasi
yang cukup kuat. Kehadiran panduan praktek ini diharapkan menjadi penunjang dan pelengkap
mata kuliah Sistem Mikroprosesor yang harus ditempuh mahasiswa. Tanpa adanya praktikum
dirasakan penguasaan mata kuliah bidang keteknikan akan tidak sempurna malah akan tidak
berarti sama sekali.
Tidak ada gading yang tidak retak, tim penyusun menyadari panduan ini masih jauh
dari sempurna. Oleh karenanya diharapkan masukan sehingga ke depan panduan ini dapat
disusun dengan lebih sempurna demi berhasilnya tujuan dan kompetensi pembelajaran sebagai
salah satu upaya mencerdaskan kehidupan bangsa.
Pada kesempatan ini, kami ingin menyampaikan terima kasih yang besar-besarnya pada
semua pihak yang telah terlibat dalam penyusunan petunjuk praktikum ini. Ucapan terima kasih
juga disampaikan untuk dukungan rekan-rekan teknisi di Laboratorium Dasar Teknik Elektro.
Akhir kata, semoga semua usaha yang telah dilakukan berkontribusi pada dihasilkannya lulusan
Program Studi Teknik Elektro sebagai engineer dengan standar internasional.

Medan, Februari 2018


Penyusun Petunjuk Praktikum Sistem Mikroprosesor

Marwan Affandi, ST, MT.


Pengenalan Mikrokontroler Arduino
BAB I
PENGANTAR MIKROKONTROLER
A. Sejarah Mikrokontroler
Sejarah awal perkembangan mikrokontroler dimulai pada awal tahun 1970-an. Motorola
mengeluarkan seri mikrokontroler 6800 yang terus dikembangkan menjadi 68HC05, 68HC08,
68HC11, 68HC12, dan 68HC16. Zilog juga mengeluarkan seri mikroprosesor Z80-nya yang
terkenal dan terus dikembangkan hingga kini menjadi Z180 dan kemudian diadopsi juga oleh
mikroprosesor Rabbit. Tahun 1974, Texas Instrument mengenalkan mikrokontroler dengan seri
TMS 1000 yang merupakan mikrokontroler 4 bit. TMS 1000 adalah mikrokomputer dalam
sebuah chip, lengkap dengan RAM dan ROM. Tahun 1976, Intel mengeluarkan mikrokontroler
8-bit seri Intel 8748 yang merupakan mikrokontroler dari keluarga MCS 48. Intel juga
mengeluarkan mikrokontroler-nya yang populer di dunia yaitu 8051, yang karena begitu
populernya maka arsitektur 8051 tersebut kemudian diadopsi oleh vendor lain seperti Phillips,
Siemens, Atmel, dan vendor-vendor lain. Selain itu masih ada mikrokontroler populer lainnya
seperti Basic Stamps, PIC dari Microchip, MSP 430 dari Texas Instrument dan masih banyak
lagi.
Mikrokontroler (microcontroller) atau disingkat dengan “micron” adalah pengendali
yang merupakan suatu komputer kecil yang terletak di dalam sebuah chip atau IC (integrated
circuit) yang berisikan inti prosesor, memori, dan komponen input/output yang dapat
diprogram. Mikrokontroler biasa digunakan pada produk dan perangkat yang dapat dikontrol
secara otomatis, seperti sistem kontrol mesin mobil (engine control), perangkat medis (medical
devices), pengendali jarak jauh (remote control), mesin perkantoran (office machines), dan juga
mainan (games). Penggunaan mikrokontroler lebih ekonomis dibandingkan sebuah desain
sistem yang berisikan mikroprosesor, memori, dan perangkat input/ouput terpisah.
Mikrokontroler adalah komputer mikro dalam satu chip tunggal. Mikrokontroler memadukan
CPU, ROM, RWM, I/O paralel, I/O seri, counter-timer, dan rangkaian clock dalam satu chip
tunggal seperti terlihat pada Gambar I.1.
Gambar I.1. Blok Diagram Mikrokontroler

Sama halnya dengan mikroprosesor, mikrokontroler adalah perangkat yang dirancang


untuk kebutuhan umum (specific purpose). Sesuai dengan fungsinya sebagai pengendali,
mikrokontroler berisikan sepaket chip lengkap yang terdiri dari fitur-fitur pengolah data yang
juga terdapat dalam mikroprosesor, ditambah RAM, ROM, I/O, dan fitur lain yang terintegrasi
di dalamnya. Contohnya dapat ditemui pada perangkat otomotif, mesin industri, elektronik dan
perangkat- perangkat lain yang memiliki embedded sistem di dalamnya. Mikrokontroler sebagai
sebuah chip telah mengalami perkembangan baik dari sisi arsitektur, teknologi dan
kemampuannya. Untuk melihat perbedaan konsep diantara mikroprosesor dan mikrokontroler
di bawah ini ditunjukan Tabel I.1 perbandingan konfigurasi, arsitektur, dan set instruksi diantara
mikroprosesor Z-80 CPU dengan mikrokontroler AT89C51.

Tabel I.1. Perbedaan Mikroprosesor dan Mikrokontroler


Mikroprosesor Z- Mikrokontroler
No Konfigurasi Pin
80 CPU AT89C51
1 Jumlah pin 40 40
2 Jumlah pin alamat 16 16
3 Jumlah pin data 8 8
4 Jumlah pin interupt 2 2
5 Pin I/O - 32
6 Register 8 bit 20 34
7 Register 16 bit 4 2
8 Ukuran Stack 64 K 128 K
9 ROM Internal - 4 KByte
10 RAM Internal - 128 Byte
11 Memori Eksternal 64 KByte 128 KByte
12 Flag 6 4
13 Timer - 2
14 Port Paralel - 4 x 8 bit
15 Port Serial - 1

Terdapat perbedaan yang signifikan antara mikrokontroler dan mikroprosessor.


Perbedaan yang utama antara keduanya dapat dilihat dari dua faktor utama yaitu arsitektur
perangkat keras (hardware architecture) dan aplikasi masing-masing.
1. Ditinjau dari segi arsitekturnya, mikroprosesor hanya merupakan single chip CPU,
sedangkan mikrokontroler dalam IC-nya selain CPU juga terdapat device lain yang
memungkinkan mikrokontroler berfungsi sebagai suatu single chip komputer. Dalam
sebuah IC mikrokontroler telah terdapat ROM, RAM, EPROM, serial interface dan
paralel interface, timer, interrupt controller, konverter Anlog ke Digital, dan lainnya
(tergantung feature yang melengkapi mikrokontroler tersebut).
2. Sedangkan dari segi aplikasinya, mikroprosessor hanya berfungsi sebagai Central
Processing Unit yang menjadi otak komputer, sedangkan mikrokontroler, dalam
bentuknya yang mungil, pada umumnya ditujukan untuk melakukan tugas–tugas yang
berorientasi kendali (control) pada rangkaian yang membutuhkan jumlah komponen
minimum dan biaya rendah (low cost).

B. Perkembangan Teknologi Mikrokontroler


Mikrokontroler sebagai teknologi baru yaitu teknologi semikonduktor kehadirannya
sangat membantu perkembangan dunia elektronika. Dengan arsitektur yang praktis tetapi
memuat banyak kandungan transistor yang terintegrasi, sehingga mendukung dibuatnya
rangkaian elektronika yang lebih portable. Mikrokontroler dapat diproduksi secara masal
sehingga harganya menjadi lebih murah dibandingkan dengan mikroprosessor, tetapi tetap
memiliki kelebihan yang bisa diandalkan. Gambar I.2 memperlihatkan beberapa contoh chip
mikrokontroler.

Gambar I.2. Chip Mikrokontroler


Mikrokontroler memiliki perbandingan ROM dan RAM-nya yang besar, artinya
program kontrol disimpan dalam ROM (bisa Masked ROM atau Flash PEROM) yang
ukurannya relatif lebih besar, sedangkan RAM digunakan sebagai tempat penyimpan sementara,
termasuk register-register yang digunakan pada mikrokontroler yang bersangkutan.
Perkembangan Mikrokontroler mengalami perubahan dari segi rancangan dan
aplikasinya, seperti faktor kecepatan pengolah data yang semakin meningkat (cepat) dibanding
pendahulunya. Seperti halnya sebuah mikroprosesor, mikrokontroler juga berkembang sesuai
rancangan dan model-model aplikasinya. Mikrokontroler berdasarkan jumlah bit data yang
dapat diolah dapat dibedakan dalam:
1. Mikrokontroler 4 Bit; merupakan mikrokontroler dengan jumlah bit data terkecil.
Mikrokontroler jenis ini diproduksi untuk meminimalkan jumlah pin dan ukuran
kemasan.
2. Mikrokontroler 8 Bit; merupakan mikrokontroler yang paling banyak digunakan untuk
pekerjaan-pekerjaan perhitungan skala kecil. Dalam komunikasi data, Data ASCII serial
juga disimpan dalam ukuran 8 bit. Kebanyakan IC memori dan fungsi logika dibangun
menggunakan data 8 bit sehingga interface bus data menjadi sangat mudah dibangun.
Penggunaan mikrokontroler 8 bit jauh lebih banyak dibandingkan dengan
mikrokontroler 4 bit. Aplikasinya juga sangat variatif mulai dari aplikasi kendali
sederhana sampai kendali mesin berkecepatan tinggi.
3. Mikrokontroler 16 Bit; keterbatasan-keterbatasan yang ada pada mikrokontroler 8 bit
berkaitan dengan semakin kompleknya pengolahan data dan pengendalian serta
kecepatan tanggap/respon disempurnakan dengan menggunakan mikrokontroler 16 bit.
Salah satu solusinya adalah dengan menaikkan kecepatan clock, dan ukuran data.
Mikrokontroler 16 bit digunakan untuk mengatur tangan robot, dan aplikasi Digital
Signal Processing (DSP).
4. Mikrokontroler 32 Bit; ditargetkan untuk aplikasi Robot, Instrumen cerdas, Avionics,
Image Processing, Telekomunikasi, Automobil, dan sebagainya. Program-program
aplikasinya bekerja dengan sistim operasi dan dipadukan dengan perangkat pintar
lainnya.
Karena kebutuhan yang tinggi terhadap “smart chip” dengan berbagai fasilitasnya, maka
berbagai vendor juga berlomba untuk menawarkan produk-produk mikrokontrolernya. Selain
mikroprosesor dan mikrokontroler, sebenarnya telah bemunculan chip-chip pintar lain seperti
DSP prosesor dan Application Spesific Integrated Circuit (ASIC). Di masa depan, chip-chip
mungil berkemampuan sangat tinggi akan mendominasi semua desain elektronik di dunia
sehingga mampu memberikan kemampuan komputasi yang tinggi serta meminimumkan jumlah
komponen-komponen konvensional.

C. Implementasi Teknologi Mikrokontroler


Karena kemampuannya yang tinggi, bentuknya yang kecil, konsumsi dayanya yang
rendah, dan harga yang murah maka mikrokontroler begitu banyak digunakan di dunia.
Mikrokontroler digunakan mulai dari mainan anak-anak, perangkat elektronik rumah tangga,
perangkat pendukung otomotif, peralatan industri, peralatan telekomunikasi, peralatan medis
dan kedokteran, sampai dengan pengendali robot serta persenjataan militer. Terdapat beberapa
keunggulan yang diharapkan dari alat-alat yang berbasis mikrokontroler (microcontroller-based
solutions):
1. Kehandalan tinggi (high reliability) dan kemudahan integrasi dengan komponen lain
(high degree of integration)
2. Ukuran yang semakin dapat diperkecil (reduced in size)
3. Penggunaan komponen dipersedikit (reduced component count) yang juga akan
menyebabkan biaya produksi dapat semakin ditekan (lower manufacturing cost)
4. Waktu pembuatan lebih singkat (shorter development time) sehingga lebih cepat pula
dijual ke pasar sesuai kebutuhan (shorter time to market)
5. Konsumsi daya yang rendah (lower power consumption)
Penerapan teknologi di masyarakat akan memberikan banyak keuntungan.
Mikrokontroler merupakan sebuah sistem komputer fungsional dalam sebuah chip. Di dalamnya
terkandung sebuah inti prosesor, memori (sejumlah kecil RAM, memori program, atau
keduanya), dan perlengkapan input output. Dengan penggunaan mikrokontroler ini maka:
1. Sistem elektronik akan menjadi lebih ringkas,
2. Rancang bangun sistem elektronik akan lebih cepat karena sebagian besar dari sistem
adalah perangkat lunak yang mudah dimodifikasi,
3. Pencarian gangguan lebih mudah ditelusuri karena sistemnya yang kompak.
Teknologi mikrokontroller dapat diterapkan di berbagai bidang, baik di industri
masupun di masyarakat. Dengan menerapkan teknologi Mikrokontroller di masyarakat akan
memberikan banyak keuntungan, contohnya:
1. Kunci Kombinasi Digital dengan Remote Kontrol Inframerah
2. Jam Wekker Digital Bertampilan M1632 LCD
3. Alat penyiram tanaman otomatis
4. Pemberi pakan ikan otomatis
5. Deteksi kebakaran menggunakan sensor suhu dan mikrokontroller
6. Pendeteksi kebocoran gas
7. Sistem keamanan mobil
8. Pintu Air Otomatis
9. Pengendali lampu rumah dengan mikrokontroller melalui SMS
10. Robot Cerdas

D. Rangkuman
1. Mikrokontroler (microcontroller) adalah pengendali yang merupakan suatu komputer
kecil yang terletak di dalam sebuah chip atau IC (integrated circuit) yang berisikan inti
prosesor, memori, dan komponen input/output yang dapat diprogram.
2. Ditinjau dari segi arsitekturnya, mikroprosesor hanya merupakan single chip CPU,
sedangkan mikrokontroler dalam IC-nya selain CPU juga terdapat device lain yang
memungkinkan mikrokontroler berfungsi sebagai suatu single chip computer.
3. Mikrokontroler memiliki perbandingan ROM dan RAM-nya yang besar, artinya
program kontrol disimpan dalam ROM (bisa Masked ROM atau Flash PEROM) yang
ukurannya relatif lebih besar, sedangkan RAM digunakan sebagai tempat penyimpan
sementara, termasuk register-register yang digunakan pada mikrokontroler yang
bersangkutan.
BAB II
MIKROKONTROLER PLATFORM ARDUINO
A. Konsep Arduino
Arduino merupakan papan-tunggal mikrokontroler serba guna yang bisa diprogram dan
bersifat open-source. Platform Arduino sekarang ini menjadi sangat populer dengan
pertambahan jumlah pengguna baru yang terus meningkat. Hal ini karena kemudahannya dalam
penggunaan dan penulisan kode program. Tidak seperti kebanyakan papan sirkuit pemrograman
sebelumnya, Arduino tidak lagi membutuhkan perangkat keras terpisah (disebut programmer
atau downloader) untuk memuat atau meng-upload kode baru ke dalam mikrokontroler. Cukup
dengan menggunakan kabel USB untuk mulai menggunakan Arduino. Selain itu, Arduino IDE
menggunakan bahasa pemrograman C++ dengan versi yang telah disederhanakan, sehingga
lebih mudah dalam belajar pemrograman. Arduino akhirnya berhasil menjadi papan sirkuit
pemrograman paling disukai hingga menjadikannya sebagai bentuk standar dari fungsi
mikrokontroler dengan paket yang mudah untuk diakses.
Hardware dan software Arduino dirancang bagi para seniman, desainer, pe-hobi, hacker,
pemula dan siapapun yang tertarik untuk menciptakan objek interaktif dan pengembangan
lingkungan. Arduino mampu berinteraksi dengan tombol, LED, motor, speaker, GPS, kamera,
internet, ponsel pintar bahkan dengan televisi. Fleksibilitas ini dihasilkan dari kombinasi
ketersediaan software Arduino yang gratis, papan perangkat keras yang murah, dan keduanya
yang mudah untuk dipelajari. Hal inilah yang menciptakan jumlah pengguna menjadi sebuah
komunitas besar dengan berbagai kontribusinya yang telah dirilis pada berbagai proyek dengan
berbasiskan Arduino.
Arduino Uno merupakan versi terbaru dari keluarga Arduino, berbasis mikrokontroler
ATmega328, menyempurnakan tipe sebelumnya, Duemilanove. Perbedaan Arduino tersebut
adalah tidak menggunakan IC FTDI (Future Technology Devices International) USB to Serial
sebagai driver komunikasi USB-nya tetapi menggunakan mikrokontroler ATmega8U2 yang
diprogram sebagai konverter USB ke serial. Uno sendiri diambil dari bahasa Italia yang artinya
1 (satu). Gambar II.1 adalah board Arduino Uno dengan spesifikasi hardware:
 Mikrokontroler : ATmega328
 Tegangan Operasi : 5 V
 Tegangan Input : 7 – 12V
 Digital I/O : 14 pin
 PWM : 6 channel
 Analog Input : 6 channel
 Memory : 32KB Flash PEROM (0,5 KB digunakan oleh bootloader), 2KB
 SRAM dan 1KB EEPROM
 Frekuensi Clock : 16 MHz

Gambar II.1. Arduino Uno Board

Tabel II.1 menunjukkan beberapa produk board yang diproduksi Arduino yang ada di
pasaran:

Tabel II.1. Produk Board Arduino


No Nama Board No Nama Board
1 Arduino Uno 14 Lilypad Arduino
2 Arduino Leonardo 15 Arduino NG (Nuova Generazione)
3 Arduino Due 16 Arduino Extreme
4 Arduino Yun 17 Arduino Diecimila
5 Arduino Tre 18 Arduino Mega
6 Arduino Micro 19 Arduino Mega 2560
7 Arduino Robot 20 Arduino Pro
8 Arduino Esplora 21 Arduino Pro Mini
9 Arduino Mega ADK 22 Arduino Ethernet
10 Arduino Fio 23 Arduino Duemilanove
11 Arduino USB 24 Arduino Shields
12 Arduino Nano 25 Arduino Singel Side Serial
13 Arduino Serial 26 Arduino Mini

Gambar II.2 memperlihatkan bagian utama dari papan Arduino uno, yakni terminal
power supply, port USB, pin digital I/O, tombol reset, mikrokontroler ATmega328 dan pin
analog input.

Pin Digital I/O

Pin Analog

Gambar II.2. Bagian Utama Arduino Uno Board


Berikut ini adalah penjelasan beberapa bagian utama dari papan Arduino uno, yaitu:
1. Power Supply.
Pada Arduino board, ada 2 (dua) pilihan sumber tegangan yang dapat digunakan, yakni
dari port USB maupun dari power supply eksternal. Dengan menghubungkan port USB
di komputer/laptop dengan Arduino maka secara otomatis power supply Arduino
bersumber dari port USB. Untuk sumber tegangan eksternal (non-USB) yakni dengan
menghubungkan Arduino board dengan sumber tegangan DC. Tegangan yang
direkomendasikan adalah 7 sampai 12 V.
2. Input – Output
Port Arduino berbeda penamaannya dengan sistem minimum mikrokontroler atau
microntroller development system. Sebagai contoh pada system minimum ATmega8535
penamaan port adalah PORTA, PORTB, PORTC dan PORTD, untuk akses per-bit maka
PORTA.0 s/d PORTA.7, contoh lain pada AT89S51 maka PORT0, PORT1 dan
seterusnya. Sistem penamaan port pada Arduino merupakan urutan nomor port, mulai
dari nomor nol (0), satu (1) dan seterusnya. Untuk digital I/O dengan nama pin 1, 2
sampai 13, sedangkan untuk analog input menggunakan nama A0, A1 sampai A5.
Pada Arduino uno terdapat 14 pin digital input – output. Secara umum berfungsi sebagai
port input – output biasa, namun ada beberapa pin yang mempunyai fungsi alternatif.
Sebagai contoh, pin 2 dan 3 juga sebagai pin interupsi eksternal. Kemudian pin 5,6,9,10
dan 11 dapat dipakai untuk PWM (Pulse Width Modulation) yang sering dipakai untuk
kendali motor DC maupun motor servo. Tabel II.2 menunjukkan nomor dan fungsi pin
pada Arduino uno.

Tabel II.2. Konfigurasi Pin Arduino Uno


No Pin Fungsi Fungsi alternatif
0 Digital I/O 0 RX (serial – receiver)
1 Digital I/O 1 TX (serial – pengirim)
2 Digital I/O 2 Interupsi external
3 Digital I/O 3 Interupsi external & PWM
4 Digital I/O 4 –
5 Digital I/O 5 PWM
6 Digital I/O 6 PWM
7 Digital I/O 7 –
8 Digital I/O 8 –
9 Digital I/O 9 PWM
10 Digital I/O 10 SPI – SS & PWM
11 Digital I/O 11 SPI – MOSI & PWM
12 Digital I/O 12 SPI – MISO
13 Digital I/O 13 SPI – SCK & LED
3. Analog Input
Arduino memiliki 6 pin analog input, berfungsi membaca sinyal masukan analog seperti
sensor analog. Meskipun demikian pin analog input dapat pula digunakan untuk
keperluan digital I/O. Tabel II.3 menunjukkan nomor dan fungsi pin input analog.

Tabel II.3. Konfigurasi Pin Analog Input


No pin Fungsi Fungsi Alternatif
A0 Analog Input 1 –
A1 Analog Input 2 –
A2 Analog Input 3 –
A3 Analog Input 4 –
A4 Analog Input 5 TWI – SDA
A5 Analog Input 6 TWI – SCL

Arduino memberikan kemudahan bagi penggunanya untuk membuat berbagai proyek


berbasis mikrokontroler. Contohnya yang dapat dibuat dengan Arduino antara lain,
untuk membuat simulasi lampu, membuat robot, mengontrol motor dc, mengontrol
motor stepper, pengatur suhu, display LCD, dan masih banyak yang lainnya. Gambar
II.3 adalah contoh produk alat menggunakan Arduino.

Gambar II.3. Robot berbasis Arduino Uno

B. Perangkat Lunak Arduino


Arduino dapat digunakan untuk mengembangkan objek interaktif, mengambil masukan
dari berbagai switch atau sensor, dan mengendalikan berbagai lampu, motor, dan output fisik
lainnya. Proyek Arduino dapat berdiri sendiri, atau berkomunikasi dengan perangkat lunak
(software) yang berjalan pada komputer (misalnya: Flash, Pengolahan, MaxMSP, database,
dsb). Board dapat dirakit sendiri atau dibeli; open-source IDE dapat didownload secara gratis.
Arduino IDE adalah software open source yang memudahkan untuk menulis kode
program dan meng-upload-nya ke board Arduino. Software Arduino dapat berjalan pada
Windows, Mac OS X, dan Linux. Software ini ditulis dalam bentuk Java dan berbasis
processing, avr-gcc, dan perangkat lunak open source lainnya.
Software Arduino yang ada dalam situs Arduino (https://www.arduino.cc/) telah
memiliki versi 1.8.5, seperti terlihat pada Gambar II.4 Software Arduino IDE (Integrated
Development Environment) adalah sebuah perangkat lunak yang memudahkan dalam
mengembangkan aplikasi mikrokontroler mulai dari menuliskan source program, kompilasi,
upload hasil kompilasi, dan uji coba secara terminal serial. Arduino dapat dijalankan di
komputer dengan berbagai macam platform karena didukung atau berbasis Java. Source
program yang dibuat untuk aplikasi mikrokontroler adalah bahasa C/C++ dan dapat
digabungkan dengan assembly.

Gambar II.4. Tampilan Software Arduino 1.8.5

Di samping IDE Arduino sebagai jantungnya, bootloader adalah jantung dari Arduino
lainnya yang berupa program kecil yang dieksekusi sesaat setelah mikrokontroler diberi catu
daya. Bootloader ini berfungsi sebagai pemonitor aktifitas yang diinginkan oleh Arduino. Jika
dalam IDE terdapat file hasil kompilasi yang akan di-upload, bootloader secara otomatis
menyambutnya untuk disimpan dalam memori program. Jika pada saat awal mikrokontroler
bekerja, bootloader akan mengeksekusi program aplikasi yang telah diupload sebelumnya. Jika
IDE hendak mengupload program baru, bootloader seketika menghentikan eksekusi program
berganti menerima data program untuk selanjutnya diprogramkan dalam memori program
mikrokontroler.
Hubungan komunikasi data antara IDE arduino dengan board Arduino digunakan
komunikasi secara serial dengan protokol RS232. Jika board arduino sudah dilengkapi dengan
komunikasi serial RS232 (biasanya USB), maka dapat langsung ditancapkan ke USB komputer.
Piranti serial RS232 ini digunakan jika board arduino atau arduino buatan sendiri tidak
dilengkapi dengan piranti serial 232.
Prosedur Menggunakan Arduino Board
1. Menyiapkan Arduino Board dan Kabel USB (Gambar II.5)

Gambar II.5. Arduino dan Kabel USB


2. Mengunduh Software Arduino
Dapatkan versi terbaru dari halaman download yang tersedia di situs resmi Arduino,
https://www.arduino.cc/en/Main/Software. Setelah download selesai, unzip file yang
didownload (jika mendownload file tipe .zip). Pastikan untuk mempertahankan struktur
folder. Klik dua kali pada folder untuk membukanya, dan akan ada beberapa file dan
sub-folder di dalam.
3. Menghubungkan Arduino Board ke Komputer
Arduino Uno, Mega Duemilanove dan Arduino Nano memerlukan sumber listrik dari
salah satu koneksi USB komputer atau power supply eksternal. Sumber daya dipilih
dengan jumper, plastik kecil yang terdapat antara USB dan jack listrik. Periksa apakah
jumper diatur pada dua pin paling dekat dengan port USB atau tidak. Hubungkan papan
Arduino ke komputer menggunakan kabel USB. LED indikator daya hijau (berlabel
PWR) akan menyala.
4. Membuka Software Arduino (Gambar II.6)
Klik dua kali aplikasi Arduino, lalu dapat dilakukan simulasi dengan hal-hal sebagai
berikut:
 Buka contoh blink
Buka LED berkedip contoh sketsa: File > Examples > 1.Basics > Blink

Gambar II.6. Contoh Blink LED

 Pilih Board yang digunakan dengan memilih entri dalam menu Tools > Board yang
sesuai dengan Arduino. Misalnya dipilih Arduino Uno (Gambar II.7)
Gambar II.7. Memilih Board

 Pilih port serial (Gambar II.8)


Pilih perangkat serial Arduino dari menu Tools | Serial Port. Biasanya Port akan
otomatis terdeteksi.

Gambar II.8. Memilih Port

 Upload Program (Gambar II.9)


Dengan meng-klik tombol "Upload". Tunggu beberapa detik – akan terlihat akan
berkedip LED RX dan TX pada Arduino Board.

Gambar II.9. Upload Program


C. Rangkuman
1. Arduino merupakan papan-tunggal mikrokontroler serba guna yang bisa diprogram dan
bersifat open-source.
2. Arduino Uno adalah salah satu kit mikrokontroler yang berbasis pada ATmega328.
Modul ini sudah dilengkapi dengan berbagai hal yang dibutuhkan untuk mendukung
mikrokontroler untuk bekerja.
3. Arduino IDE menggunakan bahasa pemrograman C++ dengan versi yang telah
disederhanakan, sehingga lebih mudah dalam belajar pemrograman.
4. Software Arduino IDE (Integrated Development Environment) adalah sebuah perangkat
lunak yang memudahkan dalam mengembangkan aplikasi mikrokontroler mulai dari
menuliskan source program, kompilasi, upload hasil kompilasi, dan uji coba secara
terminal serial.
5. Hubungan komunikasi data antara IDE arduino dengan board Arduino digunakan
komunikasi secara serial dengan protokol RS232. Jika board arduino sudah dilengkapi
dengan komunikasi serial RS232 (biasanya USB),maka dapat langsung ditancapkan ke
USB komputer.
BAB III
PEMROGRAMAN ARDUINO
A. Konsep Dasar Pemrograman Arduino
Software/program yang ditulis menggunakan Arduino disebut sketsa (sketch). Sketsa ini
ditulis dalam editor teks. Sketsa disimpan dengan ekstensi file .ino, yang memiliki fitur untuk
meng-cut, meng-copy, mem-paste, mencari/ mengganti teks, dll. Area pesan (console)
memberikan umpan balik, menyimpan dan mengekspor juga menampilkan kesalahan. Konsol
menampilkan teks output dalam lingkungan Arduino termasuk detail pesan error dan informasi
lainnya. Bagian sudut bawah sebelah kanan jendela menampilkan board dan port serial yang
sedang dipakai. Tombol-tombol toolbar (Gambar III.1) memungkinkan untuk memverifikasi
dan meng-upload program, membuat, membuka, dan menyimpan sketsa, juga membuka
monitor serial.

Gambar III.1. Toolbar dan Menu Arduino

Code Program Arduino biasa disebut sketch dan dibuat menggunakan bahasa
pemrograman C. Program atau sketch yang sudah selesai ditulis di Arduino IDE dapat langsung
di-compile dan di-upload ke Arduino Board.

Gambar III.2. Sketch dalam Arduino IDE


Secara sederhana, sketch dalam Arduino dikelompokkan menjadi 3 blok (Gambar
III.2.), yakni : Header, Setup dan Loop. Untuk program yang lebih kompleks akan ada blok lain
berupa fungsi-fungsi pendukung.

Header
Pada bagian ini biasanya ditulis definisi-definisi penting yang akan digunakan
selanjutnya dalam program, misalnya penggunaan library dan pendefinisian variabel. Code
dalam blok ini dijalankan hanya sekali pada waktu compile. Di bawah ini contoh code untuk
mendeklarasikan variable led (integer) dan sekaligus di isi dengan angka 13.
int led = 13;

Setup
Di sinilah awal program Arduino berjalan, yaitu di saat awal, atau ketika power on
Arduino board. Biasanya di blok ini diisi penentuan apakah suatu pin digunakan sebagai input
atau output, menggunakan perintah pinMode. Initialisasi variable juga bisa dilakukan di blok
ini.
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}

OUTPUT adalah suatu makro yang sudah didefinisikan Arduino yang berarti = 1. Jadi

perintah di atas sama dengan pinMode(led,1);


Suatu pin dapat difungsikan sebagai output atau input. Jika difungsikan sebagai output,
pin tersebut siap mengirimkan arus listrik (maksimum 100 mA) kepada beban yang
disambungkannya. Jika difungsikan sebagai input, pin tersebut memiliki impedansi yang tinggi
dan siap menerima arus yang dikirimkan kepadanya.

Loop
Blok ini akan dieksekusi secara terus menerus. Apabila program sudah sampai akhir
blok, maka akan dilanjutkan dengan mengulang eksekusi dari awal blok. Program akan berhenti
apabila tombol power Arduino di matikan. Di sinilah fungsi utama program Arduino kita berada.
void loop() {
digitalWrite(led, HIGH); // turn the LED on
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off
delay(1000); // wait for a second
}

Perintah digitalWrite(pinNumber, nilai) akan memerintahkan arduino untuk


menyalakan atau mematikan tegangan di pinNumber tergantung nilainya. Jadi perintah
digitalWrite(led, HIGH) akan membuat pin nomor 13 (karena di header dideklarasi led

= 13) memiliki tegangan = 5V (HIGH). Hanya ada dua kemungkinan nilai digitalWrite
yaitu HIGH atau LOW yang sebetulnya adalah nilai integer 1 atau 0.

B. Program Sederhana Arduino


Program sederhana adalah Led Blink, program ini akan mengakses pin 10 dan
memerintahkan Arduino untuk mengulang blink led, Gambar III.3.

Gambar III.3. Wiring LED blinking

Sketch
// Project 1 - LED Flasher
int ledPin = 10;

void setup() {
pinMode(ledPin, OUTPUT);
}

void loop() {
digitalWrite(ledPin, HIGH); // sets the LED on
delay(1000);
digitalWrite(ledPin, LOW); // sets the LED off
delay(1000);
}

Pembahasan Sketch
// Project 1 - LED Flasher
Ini adalah komentar baris yang berguna untuk dokumentasi program, kompiler akan
mengabaikan bagian ini. Baris komentar berguna bagi programmer agar bisa mengerti maksud
program.
int ledPin = 10;
Inisialisasi variable, dalam hal ini inisialisasi variable bernama ledPin dengan type data
integer dan nilai 10.
void setup() {
pinMode(ledPin, OUTPUT);
}
Setiap sketch Arduino wajib memiliki fungsi setup() dan loop(). Fungsi setup()
dipanggil hanya sekali saat pertama kali program berjalan. Fungsi setup()biasanya tempat
untuk men-setup hal-hal umum agar program siap dijalankan, seperti setup pin modes, setting
serial baud rates, dan lainnya. Pada sketch Led Blink, fungsi setup hanya memiliki 1 baris
perintah yaitu:
pinMode(ledPin, OUTPUT);
pinMode merupakan fungsi yang berguna untuk memberitahu arduino bahwa pin pada
board akan digunakan sebagai input atau output. Dalam baris program di atas, memberitahu
arduino untuk menset pin 10 (nilai ledPin adalah 10) sebagai Output.
void loop() {
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
}

Fungsi loop() adalah program utama yang dipanggil secara kontinu selama Arduino
menyala. Setiap perintah dalam fungsi loop() akan dipanggil satu persatu sampai perintah
terakhir dalam blok loop dicapai, lalu Arduino akan kembali ke awal perintah di blok fungsi
loop(), sampai Arduino dimatikan atau tombol reset ditekan.

C. Ringkasan
1. Kode Program Arduino biasa disebut sketch dan dibuat menggunakan bahasa
pemrograman C. Program atau sketch yang sudah selesai ditulis di Arduino IDE dapat
langsung di-compile dan di-upload ke Arduino Board.
2. Secara sederhana, sketch dalam Arduino dikelompokkan menjadi 3 blok yakni : Header,
Setup dan Loop.
3. Setiap sketch Arduino wajib memiliki fungsi setup() dan loop(). Fungsi setup()
dipanggil hanya sekali saat pertama kali program berjalan. Fungsi loop() adalah
program utama yang dipanggil secara kontinu selama Arduino menyala.
BAB IV
SIMULASI PROTEUS
A. Mengenal Program Proteus
Proteus merupakan salah satu aplikasi simulasi dalam mendesain perangkat elektronik,
baik yang Non Programmable maupun yang Programmable. Proteus merupakan gabungan dari
program ISIS dan ARES. Dengan penggabungan tersebut maka skematik rangkaian elektronika
dapat dirancang serta disimulasikan dan dibuat menjadi layout PCB.
Fitur - fitur yang terdapat pada Proteus antara lain :
 Memiliki kemampuan untuk mensimulasikan hasil rancangan baik digital maupun
analog maupun gabungan keduanya,
 Mendukung simulasi yang menarik dan simulasi secara grafis,
 Mendukung simulasi berbagai jenis microcontroller seperti AVR, PIC, 8051 series dan
mikrokontroller lainnya.
 Memiliki model-model peripheral yang interactive seperti LED, tampilan LCD, RS232,
dan berbagai jenis library lainnya,
 Mendukung instrument-instrument virtual seperti voltmeter, ammeter, oscciloscope,
logic analyser, dll.
 Memiliki kemampuan menampilkan berbagi jenis analisis secara grafis seperti transient,
frekuensi, noise, distorsi, AC dan DC, dan lain-lain.
 Mendukung berbagai jenis komponen-komponen analog,
 Mendukung open architecture sehingga kita bisa memasukkan program seperti C++
untuk keperluan simulasi,
 Mendukung pembuatan PCB yang di-update secara langsung dari program ISIS ke
program pembuat PCB-ARES.
ISIS merupakan singkatan dari Intelligent Schematic Input System dipergunakan untuk
keperluan pendidikan dan perancangan. Beberapa fitur umum dari ISIS adalah sebagai berikut:
 Dapat dioperasikan pada Windows 98/Me/2k/XP/Vista dan Windows terbaru
 Routing secara otomatis dan memiliki fasilitas penempatan dan penghapusan dot.
 Sangat powerful untuk pemilihan komponen dan pemberian properties-nya.
 Mendukung untuk perancangan berbagai jenis bus dan komponen-komponen pin, port
modul dan jalur.
 Memiliki fasilitas report terhadap kesalahan-kesalahan perancangan dan simulasi
elektrik.
 Mendukung fasilitas interkoneksi dengan program pembuat PCB-ARES.
 Memiliki fasilitas untuk menambahkan package dari komponen yang belum didukung.
ARES (Advanced Routing and Editing Software) digunakan untuk membuat modul
layout PCB. Adapun fitur-fitur dari ARES adalah sebagai berikut :
 Memiliki database dengan tingkat keakuratan 32-bit dan memberikan resolusi sampai
10 nm, resolusi angular 0,1 derajat dan ukuran maksimum board hingga 10 m. ARES
mendukung sampai 16 layer.
 Terintegrasi dengan program pembuat skematik ISIS, dengan kemampuan untuk
menentukan informasi routing pada skematik.
 Visualisasi board 3-Dimensi.
 Penggambaran 2-Dimensi dengan simbol library.
Dalam simulasi arduino dibutuhkan Library Arduino Uno, yang dapat di unduh secara
gratis. Kelebihan dari simulasi proteus dan Arduino Uno ini terutama pada hasil simulasi yang
mendekati hasil sebenarnya, sehingga Proteus ini cocok digunakan dalam perancangan
Mikrokontroler sebelum dicoba ke dalam Board Arduino Uno. Selain itu tidak diperlukan
membuat rangkaian minimum Arduino Uno, karena Library Arduino Uno yang telah diunduh
telah menyertakan Board Arduino Uno secara utuh seperti aslinya.

B. Menjalankan Program Proteus


Sebelum membuat rangkaian elektronika, ada baiknya rancangan rangkaian tersebut
disimulasikan terlebih dahulu salah satunya menggunakan PROTEUS. Dengan simulasi, dapat
dengan mudah diketahui apakah rancangan elektronika yang dibuat sudah benar atau masih ada
yang kesalahan. Ketika terdapat kesalahan maka dengan mudah ditelusuri bagian atau
komponen yang memerlukan perbaikan untuk diuji kembali.
Cara menggunakan Proteus dapat dilakukan dengan langkah berikut:
 Buka dan jalankan aplikasi Proteus, saat ini versi terbaru adalah versi 8.7.
 Akan muncul GUI seperti terlihat pada Gambar IV.1, kemudian klik icon ISIS

Gambar IV.1. Tampilan Awal Proteus


 Akan terlihat tampilan awal ISIS seperti pada Gambar IV.2

Gambar IV.2. Tampilan Awal ISIS

 Kemudian pilih komponen yang akan digunakan.


 Pada toolbox sebelah kiri, pilih Component Mode kemudian klik tombol yang berisi
huruf P Untuk mengaktifkan Pick Device. Pick Device adalah kotak dialog untuk
memilih komponen yang akan kita gunakan.
 Akan muncul kotak dialog, isikan komponen yang Anda inginkan pada kolom keywords.
misalnya diisi Arduino Uno kemudian pilih salah satu list komponen yang muncul.
 Letakkan komponen yang dipilih pada stage.
 Selanjutnya silahkan mencari lainnya kemudian letakkan ke stage.
 Langkah berikutnya adalah menyambung komponen satu dengan yang lain dengan
mengarahkan kursor mendekati ujung komponen, klik mouse kemudian arahkan kursor
menuju ujung komponen yang lain.
 Lakukan berulang sehingga mendapatkan rangkaian yang betul-betul baik
 Setelah menggambar komponen selesai, saatnya menulis programnya
 Setelah program selesai ditulis jalankan simulasi. Simulasi akan berjalan setelah
menekan tombol PLAY.
Praktikum Mikrokontroler Arduino
MODUL 1 OUTPUT
Tujuan
Setelah melaksanakan praktikum ini, diharapkan mahasiswa mampu:
1. Menggunakan output arduino sebagai aplikasi mikrokontroler
2. Merangkai dan membuat program sederhana berbasis LED
3. Menjalankan simulasi Proteus untuk melihat hasil aplikasi berbasis Arduino
4. Memanfaatkan fungsi tundaan waktu pada aplikasi mikrokontroler berbasis Arduino

Teori Singkat
Pada Arduino terdapat dua buah jenis pin, yaitu analog dan digital. Pin digital memiliki dua
buah nilai yang dapat ditulis dalam 2 keadaan yaitu High (1) dan Low (0). Logika high maksudnya
ialah 5 Volt dikirim ke pin baik itu oleh mikrokontroler atau dari komponen. Low berarti pin tersebut
bertegangan 0 Volt. Dari logika ini, anda dapat membayangkan perumpamaan: start/stop, siap/tidak
siap, on/off, dsb.
Pin-pin analog memiliki karakteristik yang berbeda dari pin digital. Informasi yang dapat
ditulis atau dibaca sangat lebar. Misalnya saja untuk write, dapat ditulis nilai dari 0-255 (0V – 5V).
Sedangkan untuk read, dapat direpresentasikan nilai dari 0-1023 (0V – 5V dengan setiap kenaikan
sebesar 0,005V).
Pada proyek pertama ini dilakukan dengan membuat LED berkedip sebagai outputnya.
Arduino bekerja pada tegangan 5-12 volt dengan arus yang relatif besar yang sanggup memutuskan
LED. Sehingga jika kita ingin menyambungkan LED, maka kita butuh tahanan (resistor) untuk
membatasi arus yang masuk ke LED. LED memiliki tegangan kerja (forward voltage/vf) yaitu
tegangan yang dibutuhkan LED untuk dapat menyala dengan baik.
Ukuran resistor yang dapat dipakai mulai dari 100Ω hingga 1KΩ. Semakin besar nilai
resistor maka nyala LED akan semakin redup. Pada Arduino, tegangan yang keluar dari pin-pinnya
adalah 0-5 volt, sementara catu daya yang dapat diberikan pada Arduino adalah 5-12 volt. Oleh
sebab itu, pemilihan resistor tergantung tegangan mana yang akan kita gunakan.
Pada proyek ini juga dilakukan pengujian terhadap board Arduino. Pengujian ini dilakukan
untuk menguji fungsi kerja board dapat berfungsi dengan baik atau tidak, selain itu untuk menguji
keterkiriman source code yang di upload pada board. Pada pengujian dasar ini dilakukan penyalaan
LED yang menempel langsung pada board Arduino. LED tersebut akan menyala dan mati secara
bergantian.
1.A. Rangkaian dan Program Sederhana
Alat dan Bahan
 Kit Arduino untuk satu kelompok (max 3 org)
 Arduino dapat diganti dengan development board dengan kualitas di bawahnya, selama
masih kompatibel dengan IDE Arduino
 Laptop
 Breadboard
 Resistor 100 Ω
 Kabel jumper
 LED warna

Rangkaian Percobaan

Gambar 1.1. Percobaan LED

Program Percobaan
Sketch 1.1. Contoh Program Arduino
/* Blink
Turns an LED on for one second, then off for one second, repeatedly.
*/

// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever


void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off
delay(1000); // wait for a second
}
Langkah Percobaan
Sebelum melakukan percobaan, perhatikan baik-baik letak port tegangan dan ground
pada board Arduino. Kemudian lakukan langkah berikut:
1) Susun rangkaian pada Gambar 1.1 menggunakan Breadboard dan kabel jumper.
2) Hubungkan board Arduino Uno dengan komputer/laptop menggunakan kabel USB.
3) Pastikan LED menyala, jika tidak, ulangi langkah pertama dengan memeriksa polaritas
LED dan koneksi kabel.
4) Bukalah IDE Arduino, kemudian buka file source code example berjudul Blink yang
terdapat pada bagian Basic atau ketik program pada Sketch 1.1.
5) Sebelum melakukan project, pada bagian IDE Arduino periksa terlebih dahulu pada
menu tools, board dan port yang digunakan pada project. Sesuaikan board dan port
dengan jenis board yang digunakan serta port yang terhubung dengan kabel USB pada
board Arduino.
6) Compile menggunakan verify button (tanda ceklist pada IDE Arduino) untuk memeriksa
ada atau tidaknya error/kesalahan dalam pengetikan.
7) Upload program ke board arduino dengan cara, pilih File > Upload to I/O board, atau
tekan tombol tanda panah pada jendela IDE Arduino.
8) Perhatikan dan catat hasil yang terjadi, apakah sesuai dengan spesifikasi rangkaian

Tugas
Berikan jawaban dari soal di bawah ini pada Laporan Praktikum. Berikan juga
kesimpulan dari percobaan pada subbab akhir di Laporan.
1. Pada akhir percobaan, LED mana saja yang menyala, berikan penjelasan juga
bagaimana kondisi menyalanya tiap LED.
2. Jelaskan juga mengapa kondisi menyala LED menjadi seperti akhir percobaan
3. Berapa lama kedipan LED pada board Arduino, jelaskan penyebabnya.

1.B. Simulasi Proteus


Alat dan Bahan
 Kit Arduino untuk satu kelompok (max 3 org)
 Arduino dapat diganti dengan development board dengan kualitas di bawahnya, selama
masih kompatibel dengan IDE Arduino.
 Laptop
 Breadboard
 Resistor 100 Ω 8 buah
 Kabel jumper
 LED warna 8 buah

Rangkaian Percobaan

Gambar 1.2. LED Berkedip

Program Percobaan
Sketch 1.2. LED Flasher
// Project 1 - LED Flasher
int ledPin = 10; // LED connected to digital pin 10
void setup() {
pinMode(ledPin, OUTPUT); // sets the digital pin as output
}

void loop() {
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
}

Langkah Percobaan
Sebelum melakukan percobaan, pada bagian IDE Arduino periksa terlebih dahulu pada
menu Tools, board dan port yang digunakan pada project. Sesuaikan board dan port dengan
jenis board yang digunakan serta port yang terhubung dengan kabel USB pada board Arduino.
Kemudian lakukan langkah berikut:
1) Susun rangkaian pada Gambar 1.2 menggunakan Breadboard dan kabel jumper.
2) Hubungkan board Arduino Uno dengan komputer/laptop menggunakan kabel USB.
3) Bukalah IDE Arduino, kemudian ketik program pada Sketch 1.2.
4) Compile dan upload program ke board arduino, perhatikan dan catat hasil yang terjadi.
5) Jika LED berkedip seperti Percobaan 1.A maka maka percobaan yang dilakukan benar.
6) Buka Program Proteus, buat skema rangkaian di atas dan beri nama file sesuai NIM
anda.
7) Buka kembali IDE Arduino, perhatikan baris di bagian bawah muncul keterangan lokasi
program Sketch 1.2 yang sudah di compile, sorot kemudian copy (Ctrl + C).
8) Kembali ke Proteus. Masukkan programnya ke Arduino Uno dengan cara double klik
hingga muncul kotak dialog Edit Component. Pada bagian Program File, paste (Ctrl
+ V) hingga tertulis lokasi program Arduino Uno yang sudah dibuat sebelumnya.
9) Klik Play dan amati hasilnya, LED akan menyala secara bergantian.

Tugas
Desain program di bawah ini dan simulasikan menggunakan Proteus. Laporkan hasilnya
pada Laporan Praktikum. Berikan juga kesimpulan dari percobaan pada subbab akhir di
Laporan.
1. Gambarkan flow chart dari program yang digunakan pada percobaan di atas
2. Buatlah program untuk menyalakan 8 LED pada modul secara bersamaan
3. Modifikasi program di atas sehingga menghasilkan keluaran led (OUTPUT LED
DISLAY) sesuai dengan representasi biner dari nomor kelompok Anda.
MODUL 2 INPUT – OUTPUT
Tujuan
Setelah melaksanakan praktikum ini, diharapkan mahasiswa mampu:
1. Menggunakan Arduino sebagai input dan output
2. Merangkai dan membuat aplikasi input dan output pada Arduino dengan menggunakan IDE
Arduino
3. Menjalankan simulasi Proteus untuk melihat hasil aplikasi input dan output berbasis
Arduino

Teori Singkat
Pada modul sebelumnya sudah dilakukan cara meng-akses pin sebagai keluaran, maka
pada proyek ini akan digabung dengan masukan atau input. Masukan untuk mikrokontroler
maupun Arduino dapat berasal dari saklar, sinyal logika, atau rangkaian lain yang memiliki
keluaran. Cara yang termudah adalah menggunakan saklar. Prinsip kerja yang sederhana
untuk membaca saklar ini nantinya dapat dikembangkan untuk membaca piranti masukan
lain seperti sensor.

Saklar geser dan simbolnya. Saklar tekan dan simbolnya


Gambar 2.1 Saklar

c e g
Gambar 2.2 Saklar jenis lain: (a) reed switch, (b) rotary switch, (c) key switch (d) DPDT switch, (e)
multi switch, (f) tilt switch, (g) micro switch.

Saklar merupakan sebuah piranti masukan mekanis yang berfungsi untuk memberikan
data kepada mikrokontroler ataupun Arduino. Terdapat dua macam saklar, yaitu saklar geser
dan saklar tekan seperti terlihat pada Gambar 2.1. Jenis saklar yang lain ditunjukkan oleh
Gambar 2.2.
Pada Arduino, ketika menjadikan pin INPUT sebagai HIGH, maka secara internal
Arduino akan menghubungkan pin tersebut pada pull-up resistor. Untuk lebih jelasnya dapat
digambarkan skema pull-up resistor pada Gambar 2.3

Gambar 2.3 Skema pull-up resistor

Jika sebuah pin diset sebagai INPUT, kemudian pin tersebut belum tersambung ke VCC
atau GND, maka logika pada pin tersebut masih mengambang (floating). Oleh sebab itu, pin
tersebut harus ditentukan apakah akan diberi pull-up resistor (sehingga bernilai HIGH) atau
diberi pull-down (sehingga bernilai LOW).
Jika pin tersebut diset HIGH, secara internal mikrokontroler pada Arduino pin tersebut
akan disambungkan ke VCC dengan pengaman sebuah resistor yang diistilahkan sebagai pull-
up resistor. Begitu juga jika pin tersebut diset LOW, maka pin tersebut akan dihubungkan ke
GND dengan pengaman resistor kemudian diistilahkan dengan pull-down resistor.
Secara umum menghubungkan saklar ke mikrokontroler ditunjukkan oleh Gambar 2.4.
Dengan cara pertama (a), saklar dapat dihubungkan ke port mikrokontroler yang mempunyai
internal pull-up resistor. Pada lembar data disebutkan bila port mikrokontroler digunakan
sebagai jalur masukan atau jalur keluaran maka port 1 , port 2, dan port 3 memiliki internal
pull-up resistor sedangkan port 0 tidak. Bila saklar pada posisi terbuka maka logika yang
dibaca oleh mikrokontroler adalah karena internal pull-up resistor bekerja. Sedangkan saat
saklar pada posisi tertutup maka logika yang dibaca oleh mikrokontroler adalah 0. Cara kedua
(b) sama seperti cara pertama. Eksternal pull-up resistor yang dipasang memungkinkan untuk
menghubungkan saklar ke port 0. Cara ketiga (c) juga dapat dihubungkan ke port manapun
dengan logika kerja yang berkebalikan dengan cara pertama maupun cara kedua. Pada
cara ketiga terdapat kekurangan yaitu bila dihubungkan ke port yang mempunyai internal
pull-up resistor maka akan selalu timbul arus yang mengalir dari port ke ground.
(a) (b) (c)
Gambar 2.4 Menghubungkan saklar ke mikokontroler

Saat menekan atau menggeser saklar, pulsa yang dihasilkan tidak berbentuk persegi
yang halus tetapi mempunyai sedikit getaran. Ini disebabkan karena saklar adalah peralatan
mekanis dimana pelat-pelat logamnya bergetar sebentar setelah bertabrakan atau terlepas.
Perhatikan Gambar 2.5. Getaran tersebut dikenal dengan istilah efek bouncing. Efek
bouncing ini dapat mengganggu kinerja mikrokontroler saat mengambil nilai logika saklar.
Getaran yang terjadi dapat menimbulkan nilai logika saklar yang berubah dengan cepat.

Gambar 2.5 Efek bouncing yang muncul pada saklar mekanis

2.A. Membaca Saklar


Alat dan Bahan
 Kit Arduino untuk satu kelompok (max 3 org)
 Arduino dapat diganti dengan development board dengan kualitas di bawahnya, selama
masih kompatibel dengan IDE Arduino
 Laptop
 Breadboard
 Resistor 1 kΩ
 Kabel jumper
 LED warna

Rangkaian Percobaan

(a) (b)
Gambar 2.6. Pengendalian LED dengan Push Button

Program Percobaan
Sketch 2.1. Mengendalikan LED dengan push button
/*
Button

Turns on and off a light emitting diode(LED)


when pressing a pushbutton attached to pin 7.

*/

// constants won't change. They're used here to set pin numbers:


const int buttonPin = 7; // the number of the pushbutton pin

// variables will change:


int buttonState = 0; // variable of pushbutton status

void setup() {
// initialize the LED pin as an output:
pinMode(LED_BUILTIN, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
}

void loop() {
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);

// check if the pushbutton is pressed.


if (buttonState == HIGH) {
// turn LED off:
digitalWrite(LED_BUILTIN, LOW);
} else {
// turn LED on:
digitalWrite(LED_BUILTIN, HIGH);
}
}

Sketch 2.2. Modifikasi Aplikasi Pengendalian LED dengan push button


/*
Button

Turns on and off a light emitting diode(LED)


when pressing a pushbutton attached to pin 7.

*/

// constants won't change. They're used here to set pin numbers:


const int buttonPin = 7; // the number of the pushbutton pin

// variables will change:


int buttonState = 0; // variable of pushbutton status

void setup() {
// initialize the LED pin as an output:
pinMode(LED_BUILTIN, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
}

void loop() {
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);

// check if the pushbutton is pressed.


if (buttonState == HIGH) {
// turn LED on:
digitalWrite(LED_BUILTIN,HIGH);
} else {
// turn LED off:
digitalWrite(LED_BUILTIN,LOW);
}
}

Langkah Percobaan
Sebelum melakukan percobaan, perhatikan baik-baik letak port tegangan dan ground
pada board Arduino. Kemudian lakukan langkah berikut:
1) Susun rangkaian pada Gambar 2.6(a) menggunakan Breadboard dan kabel jumper.
2) Hubungkan board Arduino Uno dengan komputer/laptop menggunakan kabel USB.
3) Bukalah IDE Arduino, kemudian ketik program pada Error! Reference source not
found..
4) Pada IDE Arduino periksa terlebih dahulu pada menu tools, board dan port yang
digunakan pada project. Sesuaikan board dan port dengan jenis board yang digunakan
serta port yang terhubung dengan kabel USB pada board Arduino.
5) Compile dan upload program ke board arduino
6) Tekan push button, jika LED menyala maka percobaan yang dilakukan benar, jika tidak,
ulangi langkah pertama dengan memeriksa koneksi push button dan kabel.
7) Ubah rangkaian hingga seperti pada Gambar 2.6(b)
8) Tekan kembali push button, perhatikan dan catat hasil yang terjadi.
9) Kembali ke IDE Arduino, kemudian ketik program pada Sketch 2.2.
10) Compile dan upload program ke board arduino.
11) Tekan push button, jika LED menyala maka percobaan yang dilakukan benar.

Tugas
Gambarkan flow chart dari program yang digunakan pada percobaan di atas dan berikan
jawaban dari soal di bawah ini pada Laporan Praktikum. Berikan juga kesimpulan dari
percobaan pada subbab akhir di Laporan.
1. Pada percobaan pertama dengan sketch kedua, saat kapan LED menyala? Jelaskan juga
mengapa kondisi menyala LED menjadi seperti itu?
2. Bagaimana cara menyalakan LED jika menggunakan rangkaian kedua dan sketch
pertama?
3. Buatlah simulasi Proteus untuk kedua percobaan di atas
2.B. Pengendalian LED dengan Saklar
Alat dan Bahan
 Kit Arduino untuk satu kelompok (max 3 org)
 Arduino dapat diganti dengan development board dengan kualitas di bawahnya, selama
masih kompatibel dengan IDE Arduino.
 Laptop
 Breadboard
 Resistor 10 kΩ 3 buah
 Kabel jumper
 LED RGB 1 buah atau LED Merah, Hijau, Biru masing-masing 1 buah

Rangkaian Percobaan

Gambar 2.7 Rangkaian Rangkaian Pengendalian LED RGB dengan Push Button

Program Percobaan
Sketch 2.3 Pengendalian LED RGB dengan push button
/*
3 Button

Turns on and off a RGB light emitting diode(LED)


when pressing pushbuttons attached to pin A0, A2, and A4.
*/

// variables will change:


int buttonState1 = 0; // variable of pushbutton status
int buttonState2 = 0;
int buttonState3 = 0;

void setup() {
// initialize the LED pin as an output:
pinMode(7, OUTPUT); pinMode(10, OUTPUT); pinMode(13, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(A0, INPUT); pinMode(A2, INPUT); pinMode(A4, INPUT);
}

void loop() {
// read the state of the pushbutton1 value:
buttonState1 = digitalRead(A0);

// check if the pushbutton1 is pressed.


if (buttonState1 == HIGH) {
// turn LED on:
digitalWrite(7,HIGH);
} else {
// turn LED off:
digitalWrite(7,LOW);
}
// read the state of the pushbutton2 value:
buttonState2 = digitalRead(A2);

// check if the pushbutton2 is pressed.


if (buttonState2 == HIGH) {
// turn LED on:
digitalWrite(10,HIGH);
} else {
// turn LED off:
digitalWrite(10,LOW);
}
// read the state of the pushbutton3 value:
buttonState3 = digitalRead(A4);

// check if the pushbutton3 is pressed.


if (buttonState3 == HIGH) {
// turn LED on:
digitalWrite(13,HIGH);
} else {
// turn LED off:
digitalWrite(13,LOW);
}
}

Langkah Percobaan
Sebelum melakukan percobaan, pada bagian IDE Arduino periksa terlebih dahulu pada
menu Tools, board dan port yang digunakan pada project. Sesuaikan board dan port dengan
jenis board yang digunakan serta port yang terhubung dengan kabel USB pada board Arduino.
Kemudian lakukan langkah berikut:
1) Hubungkan board Arduino Uno dengan komputer/laptop menggunakan kabel USB.
2) Buka Program Proteus, buat skema rangkaian pada Gambar 2.7 dan beri nama file sesuai
NIM anda.
3) Bukalah IDE Arduino, kemudian ketik program pada Sketch 2.3.
4) Compile program, perhatikan baris di bagian bawah muncul keterangan lokasi program
Sketch 2.3 yang sudah di compile, sorot kemudian copy (Ctrl + C).
5) Kembali ke Proteus. Masukkan programnya ke Arduino Uno dengan cara double klik
hingga muncul kotak dialog Edit Component. Pada bagian Program File, paste (Ctrl
+ V) hingga tertulis lokasi program Arduino Uno yang sudah dibuat sebelumnya.
6) Klik Play dan amati hasilnya, LED akan menyala jika tiap push button ditekan.
7) Susun rangkaian pada Gambar 2.7 menggunakan Breadboard dan kabel jumper.
8) Kembali ke IDE Arduino, kemudian upload program ke board arduino.
9) Tekan tiap push button, jika LED menyala seperti pada simulasi Proteus, maka
percobaan yang dilakukan benar.

Tugas
Gambarkan flow chart dari program yang digunakan pada percobaan di atas dan desain program
sesuai ketentuan di bawah ini dan simulasikan menggunakan Proteus. Laporkan hasilnya pada
Laporan Praktikum. Berikan juga kesimpulan dari percobaan pada subbab akhir di Laporan
1. Buat program untuk menyalakan LED RGB dengan kondisi sebagai berikut:
 Ketika push button 1 ditekan, hanya cahaya merah yang menyala
 Ketika push button 2 ditekan, 2 warna cahaya akan menyala
 Ketika push button 3 ditekan, seluruh warna cahaya akan menyala
2. Modifikasi program di atas 3 buah LED sehingga menghasilkan keluaran led (OUTPUT
LED DISLAY) seperti halnya lampu lalu lintas yang berada di perempatan jalan, dengan fungsi
push button sebagai saklar pengaktifan dan penon-aktifan lampu merah.
MODUL 3 ITERASI LOOP
Tujuan
Setelah melaksanakan praktikum ini, diharapkan mahasiswa mampu:
1. Membuat program dengan teknik loop dalam arduino untuk aplikasi running LED
2. Merangkai rangkaian aplikasi running LED dengan arduino.
3.

Teori Singkat
Modul sebelumnya dilakukan pengaturan untuk membuat LED berkedip, maka modul
kali ini akan menekankan pada pemahaman tentang bahasa pemrograman dan fungsi-fungsi
logika yang umum dipakai. Implementasi dari pembelajaran fungsi logika tersebut akan
diterapkan pada beberapa model Animasi LED seperti running LED atau yang lainnya.
Kerja mikrokontroler bergantung dari software berupa program yang telah ditanam di
dalam memorinya. Software mikrokontroler berupa rangkaian instruksi yang diprogram sesuai
keinginan programmer. Tiap keluarga mikrokontroler mempunyai instruction set (seperangkat
instruksi) berupa bahasa assembler yang berbeda-beda. Bahasa assembler merupakan bahasa
yang langsung mewakili opcode yang dimilki oleh mikrokontroler. Biasa disebut bahasa tingkat
rendah karena perbendaharaan katanya masih jauh dari bahasa komunikasi manusia dan hanya
menangani operasi yang sederhana. Oleh karena itu penggunaan bahasa assembler kurang
begitu populer dan digantikan dengan bahasa pemrograman tingkat tinggi seperti Basic, Pascal,
C, dan sebagainya.
Bahasa C termasuk bahasa tingkat tinggi karena instruksinya mudah dipahami. Saat ini
telah banyak mikrokontroler yang memiliki Compiler bahasa C. Compiler inilah yang
menerjemahkan bahasa C menjadi object code untuk di-download ke ROM mikrokontroler.
Selain menulis secara langsung, pemrograman dalam bahasa C juga dapat dilakukan
menggunakan aplikasi IDE (Integrated Development Environmet) yaitu suatu program aplikasi
yang digunakan untuk menuliskan program beserta pengujiannya. Aplikasi ini akan bertindak
sebagai software C-cross Compiler yang dapat digunakan untuk membuat, meng- compile dan
mendownload program dalam bahasa C.
Sebagaimana diketahui pengembangan sebuah sistem menggunakan mikrokontroler
platform Arduino dapat dilakukan dengan menggunakan aplikasi bawaan dari Arduino.
Software Arduino IDE merupakan perangkat lunak yang memudahkan dalam mengembangkan
aplikasi mikrokontroler mulai dari menuliskan source program, kompilasi, upload hasil
kompilasi, dan uji coba secara terminal serial. Arduino dapat dijalankan di komputer dengan
berbagai macam platform karena didukung atau berbasis Java. Source program yang dibuat
untuk aplikasi mikrokontroler adalah bahasa C/C++ dan dapat digabungkan dengan assembler.
Secara umum program dalam bahasa apapun seperti halnya pada Arduino IDE memiliki elemen
dasar pemrograman yang kurang lebih sama seperti aritmetika dan logika, instruksi kendali,
serta algoritma program.

Aritmetika dan Logika


Operasi yang dilakukan dalam program tidak akan lepas dari operasi aritmetika dan
logika. Hampir semua program selalu melibatkan operator-operator aritmetika dan logika.
Operator aritmetika berguna untuk mengerjakan fungsi-fungsi aritmetika dasar. Beberapa
operator matematika yang dibutuhkan dalam bahasa pemrograman dapat dilihat pada Tabel 3.1.

Tabel 3.1 Operator Aritmetika


Operator Arti
= Operator assignment, untuk memberi nilai pada variabel
+ Operator penambahan
- Operator pengurangan
* Operator perkalian
/ Operator pembagian. Sebagai catatan:
% Operator modulo (sisa pembagian). Misal:
++ Increment (penambahan 1 pada nilai variabel)
-- Decrement (pengurangan 1 pada nilai variabel)

Operator logika digunakan untuk mendapatkan hasil perbandingan dari 2 nilai, hasil
keluarannya berupa nilai logika seperti terlihat pada Tabel 3.2.

Tabel 3.2 Operator logika


Operator Arti
== Sama dengan
!= Tidak sama dengan
< Lebih kecil
> Lebih besar
<= Lebih kecil atau sama dengan
>= Lebih besar atau sama dengan
&& Logika AND
|| Logika OR
! Logika NOT
Instruksi Kendali
Instruksi kendali merupakan instruksi yang berkaitan dengan pengendalian aliran
program. Terdapat 2 macam instruksi kendali pada pemrograman menggunakan IDE Arduino
yaitu instruksi percabangan dan perulangan. Instruksi percabangan biasanya digunakan dalam
proses pengambilan keputusan. Instruksi percabangan akan mengecek kondisi suatu pernyataan,
untuk dicari nilai kebenarannya dan bertindak sesuai hasil kebenaran tersebut. Perulangan atau
looping berfungsi untuk melakukan perulangan eksekusi instruksi pada suatu baris kode
sebanyak n kali atau selama kondisi tertentu. Jika kondisi tidak terpenuhi, maka proses
perulangan akan dihentikan.
Alur program seringkali membutuhkan percabangan baik itu bersyarat ataupun tanpa
syarat. Percabangan bersyarat meliputi proses seleksi atau pengujian kondisi dari suatu masukan
untuk menentukan alur program berikutnya. Instruksi percabangan dalam pemrograman IDE
Arduino dikenal sebagai perintah if.
Perintah if memiliki beberapa kombinasi, bisa if saja, if-else if-else if-else,
dan seterusnya. Semakin kompleks tentu logika yang dipakai akan tampak semakin rumit.
Perintah if akan mengeksekusi blok kode antara tanda kurung jika kondisi dalam pernyataan
if secara logis bernilai benar (true). Sintaks perintah if dapat ditulis sebagai berikut:
if(kondisi) //jika kondisi benar laksanakan pernyataan dibawahnya
{
pernyataan1;
pernyataan2;
...
}
Pada dasarnya if-else merupakan pengembangan dari if. else berarti kondisi yang
tidak sesuai dengan kondisi dalam if. Dengan kata lain, else artinya “jika tidak”. Sintaks
perintah if-else dapat ditulis sebagai berikut:
if(kondisi){
pernyataan1;
}
else {
pernyataan2;
}

Instruksi Perulangan
Perulangan atau looping berfungsi untuk melakukan perulangan eksekusi instruksi pada
suatu baris kode sebanyak n kali atau selama kondisi tertentu. Jika kondisi tidak terpenuhi, maka
proses perulangan akan dihentikan. Terdapat 3 instruksi yang termasuk dalam instruksi kendali
yaitu while, do-while, dan for. Setiap instruksi tersebut memiliki karakteristik tersendiri.
Perintah while merupakan perintah untuk melakukan perulangan berdasarkan suatu
kondisi, jadi banyaknya perulangan tidak bisa ditentukan dengan pasti. Dalam while seakan
ada pengecekan kondisi seperti perintah if untuk melakukan perulangan. Bentuk umum dari
perintah while yaitu :
while(kondisi){
// eksekusi kode
pernyataan1;
pernyataan2;
}
Instruksi perulangan while, akan melakukan perulangan terhadap blok kode, selama
kondisi bernilai true, atau benar. Jika kondisi sesuai, maka perintah atau source code yang ada
dalam kurung kurawal “{}” tersebut akan dieksekusi. Untuk lebih memahami tentang perintah
while,

Berbeda dengan instruksi while, instruksi do-while akan menjalankan atau


mengeksekusi blok kode minimal satu kali di awal, dan kemudian eksekusi selanjutnya
bergantung kondisi dalam while. Berikut sintaks instruksi do-while:
do
{
// eksekusi kode
pernyataan1;
pernyataan2;
} while(kondisi)
Instruksi for merupakan instruksi perulangan dimana jumlah perulangan telah
ditetapkan/diketahui terlebih dahulu. Pada awal pendeklarasian instruksi for, biasanya diikuti
dengan operator tertentu untuk mengubah nilai variabel (nilai awalan) agar proses loop dapat
terhenti sesuai target untuk menghindari for tanpa batas. Berikut sintaks perulangan for:
for (inisialisasi;kondisi;penambahan){
// eksekusi kode
pernyataan1;
pernyataan2;
}
Inisialisasi berisi tentang kondisi awal, biasanya inisialisasi suatu variabel atau data
(misal, a=0). Sedangkan penambahan merupakan perubahan yang akan terjadi pada variabel
pada statemen awal (misal a=a+1). Sedangkan kondisi merupakan kondisi dimana perulangan
akan terjadi, ketika kondisi sudah tidak sesuai, maka perulangan akan berhenti.
Pernyataan penambahan a=a+1 dapat diganti menjadi a++ dengan maksud yang sama.
Selain a++, ada juga ++a, a--, dan --a. Penulisan a-- sama dengan a++, hanya saja a-- berarti
a=a-1, atau a akan berkurang 1 terus-menerus selama perulangan.
Penempatan ++ di depan atau di belakang i berarri bahwa : jika ++ nya ada di belang,
maka proses penambahannya dilakukan setelah blok kode dalam for dijalankan. Tapi jika ++
nya ada di depan, maka proses penambahan akan dilakukan sebelum proses dijalankan.

Array
Array merupakan variabel yang bisa menampung banyak data, masing-masing data bisa
diambil dengan alamat indeks (posisi) data dalam Array tersebut. Alamat indeks pada array
standarnya adalah angka integer yang diawali dari angka 0. Jadi, jika kita punya data 5 dalam
variabel Array, maka data pertama pada alamat indeks ke-0, data ke-2 pada alamat indeks ke-1,
dan data ke-5 pada alamat indeks ke-4.

3.A. Perintah IF dan IF - ELSE


Alat dan Bahan
 Kit Arduino untuk satu kelompok (max 3 org)
 Arduino dapat diganti dengan development board dengan kualitas di bawahnya, selama
masih kompatibel dengan IDE Arduino
 Laptop
 Breadboard
 Resistor 1 kΩ
 Kabel jumper
 LED warna

Rangkaian Percobaan

Gambar 3.1. Modifikasi timeDelay


Program Percobaan
Sketch 3.1. Modifikasi timeDelay
/*
Turns on and off a light emitting diode (LED) connected to a
digital pin, with using timedelaymodification

*/

// constants won't change. They're used here to set pin numbers:


const int ledPin = 10; // LED connected to digital pin 10

// variables will change:


int timeDelay = 1000; // time delay inisialization 1000 |1s

void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
}

void loop() {
// timeDelay deacrement:
timeDelay = timeDelay - 100;

// reset timeDelay when zero or negatif.


if (timeDelay <= 0) {
timeDelay = 1000;
}
// turn LED on and off during delaytime:
digitalWrite(ledPin, HIGH);
delay(timeDelay);
digitalWrite(ledPin, LOW);
delay(timeDelay);
}

Sketch 3.2. Perubahan if-else


/*
Turns on and off a light emitting diode (LED) connected to a
digital pin, with using timedelaymodification

*/

// constants won't change. They're used here to set pin numbers:


const int ledPin = 10; // LED connected to digital pin 10

// variables will change:


int timeDelay = 1000; // time delay inisialization 1000 |1s

void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
}

void loop() {
// reset timeDelay when zero or negatif after 3 seconds.
if (timeDelay <= 0) {
delay(3000;)
timeDelay = 1000;
} else {
// timeDelay deacrement:
timeDelay = timeDelay - 100;
}
// turn LED on and off during delaytime:
digitalWrite(ledPin, HIGH);
delay(timeDelay);
digitalWrite(ledPin, LOW);
delay(timeDelay);
}

Langkah Percobaan
Sebelum melakukan percobaan, perhatikan baik-baik letak port tegangan dan ground
pada board Arduino. Kemudian lakukan langkah berikut:
1) Susun rangkaian pada Gambar 3.1 menggunakan Breadboard dan kabel jumper.
2) Hubungkan board Arduino Uno dengan komputer/laptop menggunakan kabel USB.
3) Bukalah IDE Arduino, kemudian ketik program pada Sketch 3.1.
4) Pada IDE Arduino periksa terlebih dahulu pada menu tools, board dan port yang
digunakan pada project. Sesuaikan board dan port dengan jenis board yang digunakan
serta port yang terhubung dengan kabel USB pada board Arduino.
5) Compile dan upload program ke board arduino
6) Jika LED berkedip maka percobaan yang dilakukan benar, jika tidak, ulangi langkah
pertama dengan memeriksa koneksi kabel. Catat hasil yang terjadi
7) Kembali ke IDE Arduino, kemudian ketik program pada Sketch 3.2.
8) Compile dan upload program ke board arduino.
9) Jika LED berkedip maka percobaan yang dilakukan benar, jika tidak, ulangi langkah
pertama dengan memeriksa koneksi kabel. Perhatikan dan catat hasil yang terjadi.

Tugas
Gambarkan flow chart dari program yang digunakan pada percobaan di atas dan berikan
jawaban dari soal di bawah ini pada Laporan Praktikum. Berikan juga kesimpulan dari
percobaan pada subbab akhir di Laporan.
1. Pada percobaan pertama, saat kapan LED menyala? Jelaskan juga mengapa kondisi
menyala LED menjadi seperti itu?
2. Pada percobaan pertama, saat kapan LED menyala? Jelaskan juga mengapa kondisi
menyala LED menjadi seperti itu?
3. Jelaskan perbedaan percabangan if dan if-else
4. Buatlah simulasi Proteus untuk kedua percobaan di atas
3.B. Perulangan dengan WHILE dan FOR
Alat dan Bahan
 Kit Arduino untuk satu kelompok (max 3 org)
 Arduino dapat diganti dengan development board dengan kualitas di bawahnya, selama
masih kompatibel dengan IDE Arduino
 Laptop
 Breadboard
 Resistor 1 kΩ
 Kabel jumper
 LED warna

Rangkaian Percobaan
Sama seperti Percobaan 3.A.

Program Percobaan
Sketch 3.3. Perulangn while
/*
Turns on and off a light emitting diode (LED) connected to a
digital pin, with using timedelaymodification

*/

// constants won't change. They're used here to set pin numbers:


const int ledPin = 10; // LED connected to digital pin 10

// variables will change:


int timeDelay = 1000; // time delay inisialization 1000 |1s

void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
}

void loop() {
// block code for positif
while (timeDelay > 0) {
// turn LED on and off during 500 ms:
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
// timeDelay deacrement:
timeDelay = timeDelay - 100;
}
// block code for zero or negatif timeDelay.
while (timeDelay <= 0) {
// turn LED on and off during 500 ms:
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
// timeDelay increment:
timeDelay = timeDelay + 100;
}
}
Sketch 3.4. Perulangn for
/*
Turns on and off a light emitting diode (LED) connected to a
digital pin, with using timedelaymodification

*/

// constants won't change. They're used here to set pin numbers:


const int ledPin = 10; // LED connected to digital pin 10

// timedelay:
int timeDelay = 3000;

void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
}

void loop() {
// 10 times repeating
for(i=0;i<=0);i++ {

// turn LED on and off during 500 ms:


digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
}
// wait for 3s
delay(timeDelay);
}
Langkah Percobaan
Sebelum melakukan percobaan, perhatikan baik-baik letak port tegangan dan ground
pada board Arduino. Kemudian lakukan langkah berikut:
1) Susun rangkaian pada Gambar 3.1 menggunakan Breadboard dan kabel jumper.
2) Hubungkan board Arduino Uno dengan komputer/laptop menggunakan kabel USB.
3) Bukalah IDE Arduino, kemudian ketik program pada Sketch 3.3.
4) Pada IDE Arduino periksa terlebih dahulu pada menu tools, board dan port yang
digunakan pada project. Sesuaikan board dan port dengan jenis board yang digunakan
serta port yang terhubung dengan kabel USB pada board Arduino.
5) Compile dan upload program ke board arduino
6) Jika LED berkedip maka percobaan yang dilakukan benar, jika tidak, ulangi langkah
pertama dengan memeriksa koneksi kabel. Catat hasil yang terjadi.
7) Kembali ke IDE Arduino, kemudian ketik program pada Sketch 3.4.
8) Compile dan upload program ke board arduino.
9) Jika LED berkedip maka percobaan yang dilakukan benar, jika tidak, ulangi langkah
pertama dengan memeriksa koneksi kabel. Perhatikan dan catat hasil yang terjadi.

Tugas
Gambarkan flow chart dari program yang digunakan pada percobaan di atas dan berikan
jawaban dari soal di bawah ini pada Laporan Praktikum. Berikan juga kesimpulan dari
percobaan pada subbab akhir di Laporan.
1. Pada percobaan pertama, saat kapan LED menyala? Jelaskan juga mengapa kondisi
menyala LED menjadi seperti itu?
2. Pada percobaan kedua, saat kapan LED menyala? Jelaskan juga mengapa kondisi
menyala LED menjadi seperti itu?
3. Jelaskan perbedaan perulangan while dan for
4. Buatlah simulasi Proteus untuk kedua percobaan di atas
3.C. Animasi LED
Alat dan Bahan
 Kit Arduino untuk satu kelompok (max 3 org)
 Arduino dapat diganti dengan development board dengan kualitas di bawahnya, selama
masih kompatibel dengan IDE Arduino
 Laptop
 Breadboard
 Resistor 220 Ω
 Kabel jumper
 LED warna 8 buah

Rangkaian Percobaan

Gambar 3.2. Animasi LED

Program Percobaan
Sketch 3.5. Animasi LED
/*
Lights multiple LEDs in sequence.

The circuit:
- LEDs from pins 2 through 5 to ground
*/

// constants won't change. They're used here to set pin numbers:


const int ledPin1 = 2; // LED connected to digital pin 2
const int ledPin2 = 3; // LED connected to digital pin 3
const int ledPin3 = 4; // LED connected to digital pin 4
const int ledPin4 = 5; // LED connected to digital pin 5

void setup() {
// use a for loop to initialize each pin as output:
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
}

void loop() {
// turn the pin off:
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
delay(1000);

// turn the pin on:


digitalWrite(ledPin1, HIGH);
delay(1000);
digitalWrite(ledPin2, HIGH);
delay(1000);
digitalWrite(ledPin3, HIGH);
delay(1000);
digitalWrite(ledPin4, HIGH);
delay(1000);
}
Sketch 3.6. Animasi LED Alternatif
/*
Demonstrates the use of a for() loop.
Lights multiple LEDs in sequence, then in reverse.

The circuit:
- LEDs from pins 2 through 5 to ground

This example code is in the public domain.

http://www.arduino.cc/en/Tutorial/ForLoop
*/

int timer = 1000; // The higher the number, the slower the timing.

void setup() {
// use a for loop to initialize each pin as an output:
for (int thisPin = 2; thisPin < 6; thisPin++) {
pinMode(thisPin, OUTPUT);
}
}

void loop() {
// loop from the lowest pin to the highest:
for (int thisPin = 2; thisPin < 6; thisPin++) {
// turn the pin on:
digitalWrite(thisPin, HIGH);
delay(timer);
// turn the pin off:
digitalWrite(thisPin, LOW);
}
}
Langkah Percobaan
Sebelum melakukan percobaan, perhatikan baik-baik letak port tegangan dan ground
pada board Arduino. Kemudian lakukan langkah berikut:
1) Susun rangkaian pada Gambar 3.2 menggunakan Breadboard dan kabel jumper.
2) Hubungkan board Arduino Uno dengan komputer/laptop menggunakan kabel USB.
3) Bukalah IDE Arduino, kemudian ketik program pada Sketch 3.5.
4) Pada IDE Arduino periksa terlebih dahulu pada menu tools, board dan port yang
digunakan pada project. Sesuaikan board dan port dengan jenis board yang digunakan
serta port yang terhubung dengan kabel USB pada board Arduino.
5) Compile dan upload program ke board arduino
6) Jika LED berkedip secara berurutan maka percobaan yang dilakukan benar, jika tidak,
ulangi langkah pertama dengan memeriksa sketch dan koneksi kabel. Catat hasil yang
terjadi.
7) Kembali ke IDE Arduino, kemudian ketik program pada Sketch 3.6.
8) Compile dan upload program ke board arduino.
9) Jika LED berkedip secara berurutan maka percobaan yang dilakukan benar, jika tidak,
ulangi langkah pertama dengan memeriksa sketch dan koneksi kabel. Perhatikan dan
catat hasil yang terjadi.

Tugas
Gambarkan flow chart dari program yang digunakan pada percobaan di atas dan berikan
jawaban dari soal di bawah ini pada Laporan Praktikum. Berikan juga kesimpulan dari
percobaan pada subbab akhir di Laporan.
1. Menurut pendapat Anda, apakah kelebihan program kedua dibandingkan dengan
program pertama?
2. Buatlah program untuk menyalakan LED geser bergantian ke kiri
3. Buatlah program untuk menyalakan LED geser bergantian ke kanan dan ke kiri
4. Buatlah aplikasi lampu lalu lintas dari 6 buah LED dimana setiap warna lampu diwakili
oleh 2 buah LED
3.D. Pengenalan Array
Alat dan Bahan
 Kit Arduino untuk satu kelompok (max 3 org)
 Arduino dapat diganti dengan development board dengan kualitas di bawahnya, selama
masih kompatibel dengan IDE Arduino
 Laptop
 Breadboard
 Resistor 1 kΩ
 Kabel jumper
 LED warna 8 buah

Rangkaian Percobaan

Gambar 3.3. Array dengan 6 LED

Program Percobaan
Sketch 3.7. Animasi LED dengan Array
/*
Arrays
Demonstrates the use of an array to hold pin numbers in order to
iterate over the pins in a sequence. Lights multiple LEDs in
sequence, then in reverse.

Like the For Loop Experiment, where the pins have to be


contiguous

The circuit:
- LEDs from pins 2 through 7 to ground
*/

int timer = 1000; // The higher the number, the slower the timing.

// an array of pin numbers to which LEDs are attached


int ledPins[] = {2, 3, 4, 5, 6, 7};
// the number of pins (i.e. the length of the array)
int pinCount = 6;

void setup() {
// the array elements are numbered from 0 to (pinCount - 1).
// use a for loop to initialize each pin as an output:
for (int thisPin = 0; thisPin < pinCount; thisPin++) {
pinMode(ledPins[thisPin], OUTPUT);
}
}

void loop() {
// loop from the lowest pin to the highest:
for (int thisPin = 0; thisPin < pinCount; thisPin++) {
// turn the pin on:
digitalWrite(ledPins[thisPin], HIGH);
delay(timer);
// turn the pin off:
digitalWrite(ledPins[thisPin], LOW);

// loop from the highest pin to the lowest:


for (int thisPin = pinCount - 1; thisPin >= 0; thisPin--) {
// turn the pin on:
digitalWrite(ledPins[thisPin], HIGH);
delay(timer);
// turn the pin off:
digitalWrite(ledPins[thisPin], LOW);
}
}

Sketch 3.8. Modifikasi Animasi LED dengan Array


/*
Arrays
Demonstrates the use of an array to hold pin numbers in order to
iterate over the pins in a sequence. Lights multiple LEDs in
sequence, then in reverse.

Unlike the For Loop tutorial, where the pins have to be


contiguous, here the pins can be in any random order.

The circuit:
- LEDs from pins 2 through 7 to ground

created 2006
by David A. Mellis
modified 30 Aug 2011
by Tom Igoe

This example code is in the public domain.

http://www.arduino.cc/en/Tutorial/Array
*/
int timer = 1000; // The higher the number, the slower the timing.

// an array of pin numbers to which LEDs are attached


int ledPins[] = {2, 7, 4, 6, 5, 3};

// the number of pins (i.e. the length of the array)


int pinCount = 6;

void setup() {
// the array elements are numbered from 0 to (pinCount - 1).
// use a for loop to initialize each pin as an output:
for (int thisPin = 0; thisPin < pinCount; thisPin++) {
pinMode(ledPins[thisPin], OUTPUT);
}
}

void loop() {
// loop from the lowest pin to the highest:
for (int thisPin = 0; thisPin < pinCount; thisPin++) {
// turn the pin on:
digitalWrite(ledPins[thisPin], HIGH);
delay(timer);
// turn the pin off:
digitalWrite(ledPins[thisPin], LOW);
}

// loop from the highest pin to the lowest:


for (int thisPin = pinCount - 1; thisPin >= 0; thisPin--) {
// turn the pin on:
digitalWrite(ledPins[thisPin], HIGH);
delay(timer);
// turn the pin off:
digitalWrite(ledPins[thisPin], LOW);
}
}
Langkah Percobaan
Sebelum melakukan percobaan, perhatikan baik-baik letak port tegangan dan ground
pada board Arduino. Kemudian lakukan langkah berikut:
1) Susun rangkaian pada Gambar 3.3 menggunakan Breadboard dan kabel jumper.
2) Hubungkan board Arduino Uno dengan komputer/laptop menggunakan kabel USB.
3) Bukalah IDE Arduino, kemudian ketik program pada Sketch 3.7.
4) Pada IDE Arduino periksa terlebih dahulu pada menu tools, board dan port yang
digunakan pada project. Sesuaikan board dan port dengan jenis board yang digunakan
serta port yang terhubung dengan kabel USB pada board Arduino.
5) Compile dan upload program ke board arduino
6) Jika LED berkedip secara berurutan maka percobaan yang dilakukan benar, jika tidak,
ulangi langkah pertama dengan memeriksa sketch dan koneksi kabel. Catat hasil yang
terjadi.
7) Kembali ke IDE Arduino, kemudian ketik program pada Sketch 3.8.
8) Compile dan upload program ke board arduino.
9) Jika LED berkedip secara acak maka percobaan yang dilakukan benar, jika tidak, ulangi
langkah pertama dengan memeriksa sketch dan koneksi kabel. Perhatikan dan catat hasil
yang terjadi.

Tugas
Gambarkan flow chart dari program yang digunakan pada percobaan di atas dan berikan jawaban
dari soal di bawah ini pada Laporan Praktikum. Berikan juga kesimpulan dari percobaan pada
subbab akhir di Laporan.
1. Apakah yang membedakan kedua percobaan di atas, jelaskan mengapa hal tersebut bisa
terjadi!
2. Buatlah program untuk menyalakan LED geser sesuai kreasi anda masing-masing
MODUL 4 INPUT ANALOG
Tujuan
Setelah melaksanakan praktikum ini, diharapkan mahasiswa mampu:
1. Menggunakan Analog input pada arduino
2. Membuat program sederhana dengan menggunakan analog input sebagai delay untuk lama
nyala LED.
3. Dapat membuat program PWM untuk mengatur kontras LED

Teori Singkat
Pada saat menggunakan tombol sebagai sinyal input/masukan pada pin input Arduino
maka sebenarnya hanya memberikan dua kemungkinan kondisi sinyal masukan yaitu tombol
tertekan atau tombol tidak tertekan. Pada saat tombol tertekan berarti menghubungkan atau
memberikan tegangan 5 volt pada masukan sedangkan sebaliknya pada saat tombol dilepas
hanya memberikan tegangan 0 volt.
Kondisi input yang demikian dikenal sebagai digital input dengan logika 1 dan 0, dimana
1 untuk tegangan HIGH atau 5 volt dan 0 untuk tegangan LOW atau 0 volt. Begitu juga halnya
pada sisi output, jika hanya melibatkan dua kondisi keluaran seperti misalnya saat
menghidupkan dan memadamkan LED pada suatu saat tertentu maka hanya melibatkan dua
kondisi output digital. Output digital 1 atau HIGH dengan output tegangan 5 volt dan output
digital 0 atau LOW dengan output tegangan 0 volt.
Pada beberapa sistim kontrol, pengolahan input dan output secara digital mungkin sudah
memenuhi kinerja yang dibutuhkan. Akan tetapi pada kondisi tertentu ada kemungkinan
dihadapkan pada kondisi input dan output yang membutuhkan besaran yang berubah-ubah
dengan nilai yang kontinyu dan tidak lagi hanya dengan dua keadaan seperti halnya sinyal
digital. Sinyal semacam ini disebut sebagai sinyal analog, sebagai contoh saat menghubungkan
sensor yang tegangan keluarannya bervariasi dalam kisaran dari 0 volt sampai 5 volt. Maka
dalam hal ini Arduino sebagai kontroler harus mampu mengidentifikasi/mengolah semua variasi
tegangan keluaran dari sensor yang dihubungkan pada pin inputnya tersebut. Begitu juga halnya
saat diperlukan tegangan output yang membutuhkan nilai tegangan yang bervariasi, seperti
misalnya saat menginginkan mengatur tingkat keterangan sebuah LED atau berubahnya
kecepatan sebuah motor.

Input Analog
Arduino khusus menyediakan 6 kanal (8 kanal pada model Mini dan Nano, dan 16 pada
model Mega) untuk difungsikan sebagai analog input. Konverter Analog ke Digital
menggunakan resolusi 10 bit yang berarti jangkauan nilai analog dari 0 volt sampai 5 volt akan
dirubah menjadi nilai integer 0 sampai 1023, atau resolusinya adalah 5 volt/1024 = 4,9 mV per
unit, hal ini berarti nilai digital yang dihasilkan akan berubah setiap perubahan 4,9 mV dari
tegangan input analognya. Akan tetapi jangkauan input analog dan resolusi tersebut dapat
dirubah dengan fungsi analogReference().
Perintah yang digunakan untuk fungsi analog input ini adalah:
1. analogRead(Pin): berfungsi untuk membaca nilai analog pada input pin yang akan
menghasilkan nilai integer antara 0-1023.
2. analogReference(Parameter):berfungsi untuk menentukan referensi yang
digunakan. Parameternya meliputi:
 DEFAULT: default analog reference yaitu 5V (pada board Arduino 5V) atau 3,3 volt
(pada board Arduino 3,3 V)
 INTERNAL: built-in referensi internal tergantung pada jenis mikrokontroler yang
terpasang pada board Arduino, 1.1 volt pada ATmega168 atau ATmega328 dan 2.56
volt pada ATmega8.
 INTERNAL1V1: referensi internal 1.1V (khusus Arduino Mega)

 INTERNAL2V56: referensi internal 2,56V (khusus Arduino Mega)

 EXTERNAL: pilihan referensi yang tergantung pada tegangan yang diberikan pada pin
AREF(hanya dengan range tegangan 0 sampai 5V).
Perlu untuk diperhatikan untuk tidak menggunakan referensi dibawah 0 volt atau lebih dari 5
volt dan pastikan memilih referensi external sebelum perintah analogRead() jika
menghubungkan pin AREF dengan referensi eksternal karena dapat merusak perangkat
mikrokontroler.

Output Analog
Secara teori suatu output analog akan mengeluarkan tegangan bervariasi sesuai dengan
nilai yang dikehendaki, maka seharusnya pin output analog Arduino seharusnya mampu
mengeluarkan tegangan output dengan kisaran tegangan dari 0 V sampai 5 V. Akan tetapi tidak
demikian adanya, karena pin-pin Arduino yang difungsikan sebagai output sebenarnya hanya
mampu bekerja sebagai output digital yaitu hanya mampu mengeluarkan tegangan 0V atau 5V.
Arduino menangani output analog tersebut menggunakan metode Pulse Width Modulation
(PWM) atau modulasi lebar pulsa untuk menghasilkan output analog yang dikehendaki. Metode
PWM ini menggunakan pendekatan perubahan lebar pulsa untuk menghasilkan nilai tegangan
analog yang diinginkan. Pin yang difungsikan sebagai PWM output analog akan mengeluarkan
sinyal pulsa digital dengan frekwensi 500 Hz (500 siklus dalam 1 detik). Jadi, Arduino bisa
menghidup-matikan LED sebanyak 500 kali dalam 1 detik.

Gambar 4.1. Sikulus PWM

Nilai tegangan analog diperoleh dengan merubah duty cycle atau perbandingan lamanya
pulsa HIGH terhadap periode (T) dari sinyal digital tersebut seperti terlihat pada Gambar 4.1.
Jika pulsa HIGH muncul selama setengah dari periode sinyal maka akan menghasilkan duty
cycle 50% sehingga besar sinyal analog yang dihasilkan ekivalen dengan setengah dari tegangan
analog maksimal yaitu 1/2 dari 5 V atau sama dengan 2,5 V begitu juga halnya jika pulsa HIGH
hanya seperempat bagian dari periode sinyal maka tegangan analog identik yang dihasilkan
adalah 1/4 dari 5V = 1,25 V dan seterusnya.

Gambar 4.2. Input Nilai pada Siklus PWM


Perintah yang digunakan untuk output analog adalah analogWrite(Pin,Value),
dimana:
 Pin: nomor pin Arduino yang akan digunakan sebagai analog output. Pin yang
mendukung output PWM ditandai dengan adanya tanda tilde (~) di depan angka pinnya,
seperti 3, 5, 6, dan seterusnya
 Value: nilai duty cycle yang diinginkan dengan nilai 0-255, yang berarti nilai 0 untuk 0
Volt dan 255 untuk tegangan keluaran maksimum atau 5 Volt.
Jika diberikan nilai 127 (dianggap setengah dari 0 hingga 255, atau 50% dari 255), maka
dihasilkan setengah siklus bernilai 5 volt, dan setengah siklus lagi bernilai 0 volt. Sedangkan
jika memberikan 25% dari 255 (1/4 * 255 atau 64), maka 1/4 siklus akan bernilai 5 volt, dan 3/4
sisanya akan bernilai 0 volt, dan ini akan terjadi 500 kali dalam 1 detik. Untuk visualisasi siklus
PWM, dapat dilihat pada Gambar 4.2.

4.A. Input Analog


Alat dan Bahan
 Kit Arduino untuk satu kelompok (max 3 org)
 Laptop
 Breadboard
 Resistor 220 Ω
 Potensiometer 100 kΩ
 Kabel jumper
 LED warna

Rangkaian Percobaan

Gambar 4.3. Pengendalian LED dengan potensiometer


Program Percobaan
Sketch 4.1. LED Flasher Dengan Potensiometer
/*
It reads the state of a potentiometer (an analog input) and turns on
an LED only if the potentiometer goes above a certain threshold
level

The circuit:
- potentiometer
Center pin of the potentiometer goes to analog pin 3.
Side pins of the potentiometer go to +5V and ground.
- LED connected from digital pin 13 to ground

- Note: On most Arduino boards, there is already an LED on the board


connected to pin 13
*/

// These constants won't change:


const int analogPin = A0; // pin that the sensor is attached to
const int ledPin = 13; // pin that the LED is attached to
const int threshold = 400; // an arbitrary threshold level that's in
the range of the analog input

void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
}

void loop() {
// read the value of the potentiometer:
int analogValue = analogRead(analogPin);

// if the analog value is high enough, turn on the LED:


if (analogValue > threshold) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}
Sketch 4.2. LED Berkedip Dengan Potensiometer
/*
Analog Input

Demonstrates analog input by reading an analog sensor on analog pin


3 and turning on and off a light emitting diode(LED) connected to
digital pin 13.
The amount of time the LED will be on and off depends on the value
obtained by analogRead().
The circuit:
- potentiometer
center pin of the potentiometer to the analog input 3
one side pin (either one) to ground
the other side pin to +5V
- LED
anode (long leg) attached to digital output 13
cathode (short leg) attached to ground

- Note: because most Arduinos have a built-in LED attached to pin 13


on the board, the LED is optional.

created by David Cuartielles


modified 30 Aug 2011
By Tom Igoe

This example code is in the public domain.

http://www.arduino.cc/en/Tutorial/AnalogInput
*/

int sensorPin = A0; // select the input pin for the potentiometer
int ledPin = 13; // select the pin for the LED
int sensorValue = 0; // variable to store the value coming from the
sensor

void setup() {
// declare the ledPin as an OUTPUT:
pinMode(ledPin, OUTPUT);
}

void loop() {
// read the value from the sensor:
sensorValue = analogRead(sensorPin);
// turn the ledPin on
digitalWrite(ledPin, HIGH);
// stop the program for <sensorValue> milliseconds:
delay(sensorValue);
// turn the ledPin off:
digitalWrite(ledPin, LOW);
// stop the program for for <sensorValue> milliseconds:
delay(sensorValue);
}
Sketch 4.3. LED Berkedip Responsif Dengan Potensiometer
/*
Analog Input without Delay

Demonstrates analog input by reading an analog sensor and turning on


and off a light emitting diode(LED) connected to digital pin without
using the delay() function. This means that other code can run at
the same time without being interrupted by the LED code.
The amount of time the LED will be on and off depends on the value
obtained by analogRead().

The circuit:
- potentiometer
center pin of the potentiometer to the analog input 3
one side pin (either one) to ground
the other side pin to +5V
- LED
anode (long leg) attached to digital output 13
cathode (short leg) attached to ground

- Note: because most Arduinos have a built-in LED attached to pin 13


on the board, the LED is optional.
*/

// constants won't change. Used here to set a pin number:


int sensorPin = A0; // select the input pin for the potentiometer
int ledPin = 13; // select the pin for the LED

// Variables will change:


int ledState = LOW; // ledState used to set the LED
int sensorValue = 0; // variable to store the value coming from the
sensor

// Generally, you should use "unsigned long" for variables that hold
time
// The value will quickly become too large for an int to store
unsigned long previousMillis=0;// will store last time LED was updated

void setup() {
// set the digital pin as output:
pinMode(ledPin, OUTPUT);
}

void loop() {
// read the value from the sensor:
sensorValue = analogRead(sensorPin);

// here is where you'd put code that needs to be running all the
time.

// check to see if it's time to blink the LED; that is, if the
difference
// between the current time and last time you blinked the LED is
bigger than
// the interval at which you want to blink the LED.
unsigned long currentMillis = millis();

if (currentMillis - previousMillis >= sensorValue) {


// save the last time you blinked the LED
previousMillis = currentMillis;

// if the LED is off turn it on and vice-versa:


if (ledState == LOW) {
ledState = HIGH;
} else {
ledState = LOW;
}

// set the LED with the ledState of the variable:


digitalWrite(ledPin, ledState);
}
}

Langkah Percobaan
Sebelum melakukan percobaan, perhatikan baik-baik letak port tegangan dan ground
pada board Arduino. Kemudian lakukan langkah berikut:
1) Susun rangkaian pada Gambar 4.3 menggunakan Breadboard dan kabel jumper.
2) Hubungkan board Arduino Uno dengan komputer/laptop menggunakan kabel USB.
3) Bukalah IDE Arduino, kemudian ketik program pada Error! Reference source not
found..
4) Pada IDE Arduino periksa terlebih dahulu pada menu tools, board dan port yang
digunakan pada project. Sesuaikan board dan port dengan jenis board yang digunakan
serta port yang terhubung dengan kabel USB pada board Arduino.
5) Compile dan upload program ke board arduino
6) Putar potensiometer hingga LED menyala, maka percobaan yang dilakukan benar, jika
tidak, ulangi langkah pertama dengan memeriksa program dan koneksitas
7) Kembali ke IDE Arduino, kemudian ketik program pada Error! Reference source not
found..
8) Compile dan upload program ke board arduino.
9) Putar potensiometer, jika LED berkedip maka percobaan yang dilakukan benar, jika
tidak, ulangi langkah pertama dengan memeriksa koneksi kabel. Perhatikan dan catat
hasil yang terjadi.
10) Kembali ke IDE Arduino, kemudian ketik program pada Sketch 4.3.
11) Compile dan upload program ke board arduino.
12) Putar potensiometer, jika LED berkedip maka percobaan yang dilakukan benar, jika
tidak, ulangi langkah pertama dengan memeriksa koneksi kabel. Perhatikan dan catat
hasil yang terjadi
Tugas
Berikan jawaban dari soal di bawah ini pada Laporan Praktikum. Berikan juga
kesimpulan dari percobaan pada subbab akhir di Laporan.
1. Pada percobaan pertama, saat kapan LED menyala? Jelaskan juga mengapa kondisi
menyala LED seperti itu?
2. Pada percobaan kedua, bagaimana kondisi nyala LED? Jelaskan juga mengapa kondisi
menyala LED menjadi seperti itu?
3. Jelaskan perbedaan hasil pemrograman pada percobaan kedua denga ketiga
4. Dari percobaan diatas buat analisa jalannya sistem berserta analisa perbaris tiap line
program.
5. Buatlah program dengan menggunakan potensiometer dan 4 LED dimana terdapat 4
kondisi yaitu : 1) Led Mati semua, 2) Led hidup secara berkedip-kedip, 3)Led berjalan
dari kiri ke kanan, dan 4) Led berjalan dari kanan ke kiri. Simulasikan menggunakan
Proteus.

4.B. Output Analog


Alat dan Bahan
 Kit Arduino untuk satu kelompok (max 3 org)
 Arduino dapat diganti dengan development board dengan kualitas di bawahnya, selama
masih kompatibel dengan IDE Arduino
 Laptop
 Breadboard
 Resistor 1 kΩ
 Kabel jumper
 LED warna

Rangkaian Percobaan
Sama seperti Percobaan 4.A.

Program Percobaan
Sketch 4.4. Fading
/*
Fading

This example shows how to fade an LED using the analogWrite()


function.

The circuit:
- LED attached from digital pin 9 to ground.

This example code is in the public domain.

http://www.arduino.cc/en/Tutorial/Fading
*/

int ledPin = 9; // LED connected to digital pin 9

void setup() {
// declare pin 9 to be an output:
pinMode(led, OUTPUT);
}

void loop() {
// fade in from min to max in increments of 5 points:
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
// sets the value (range from 0 to 255):
analogWrite(ledPin, fadeValue);
// wait for 30 milliseconds to see the dimming effect
delay(30);
}

// fade out from max to min in increments of 5 points:


for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
// sets the value (range from 0 to 255):
analogWrite(ledPin, fadeValue);
// wait for 30 milliseconds to see the dimming effect
delay(30);
}
}
Sketch 4.5. Mengatur kecerahan LED dengan potensiometer
/*
Analog input, analog output, serial output

Reads an analog input pin, maps the result to a range from 0 to 255
and uses
the result to set the pulse width modulation (PWM) of an output
pin.
Also prints the results to the Serial Monitor.

The circuit:
- potentiometer connected to analog pin 3.
Center pin of the potentiometer goes to the analog pin.
side pins of the potentiometer go to +5V and ground
- LED connected from digital pin 9 to ground

This example code is in the public domain.

http://www.arduino.cc/en/Tutorial/AnalogInOutSerial
*/

// These constants won't change. They're used to give names to the


pins used:
const int analogInPin = A0; // Analog input pin that the
potentiometer is attached to
const int analogOutPin = 9; // Analog output pin that the LED is
attached to

int sensorValue = 0; // value read from the pot


int outputValue = 0; // value output to the PWM (analog out)

void setup() {
// initialize serial communications at 9600 bps:
Serial.begin(9600);
}

void loop() {
// read the analog in value:
sensorValue = analogRead(analogInPin);
// map it to the range of the analog out:
outputValue = map(sensorValue, 0, 1023, 0, 255);
// change the analog out value:
analogWrite(analogOutPin, outputValue);

// print the results to the Serial Monitor:


Serial.print("sensor = ");
Serial.print(sensorValue);
Serial.print("\t output = ");
Serial.println(outputValue);

// wait 2 milliseconds before the next loop for the analog-to-


digital
// converter to settle after the last reading:
delay(2);
}
Langkah Percobaan
Sebelum melakukan percobaan, perhatikan baik-baik letak port tegangan dan ground
pada board Arduino. Kemudian lakukan langkah berikut:
1) Susun rangkaian pada Gambar 4.1 menggunakan Breadboard dan kabel jumper.
2) Hubungkan board Arduino Uno dengan komputer/laptop menggunakan kabel USB.
3) Bukalah IDE Arduino, kemudian ketik program pada Sketch 4.4.
4) Pada IDE Arduino periksa terlebih dahulu pada menu tools, board dan port yang
digunakan pada project. Sesuaikan board dan port dengan jenis board yang digunakan
serta port yang terhubung dengan kabel USB pada board Arduino.
5) Compile dan upload program ke board arduino
6) Jika kecerahan LED berubah maka percobaan yang dilakukan benar, jika tidak, ulangi
langkah pertama dengan memeriksa program dan koneksitas. Catat hasil yang terjadi.
7) Kembali ke IDE Arduino, kemudian ketik program pada Sketch 4.5.
8) Compile dan upload program ke board arduino.
9) Lalu buka serial port melalui Tools  Serial Monitor.
10) Putar potensiometer hingga kecerahan LED berubah, maka percobaan yang dilakukan
benar, jika tidak, ulangi langkah pertama dengan memeriksa program dan koneksitas.
Perhatikan dan catat hasil yang terjadi

Tugas
Berikan jawaban dari soal di bawah ini pada Laporan Praktikum. Berikan juga
kesimpulan dari percobaan pada subbab akhir di Laporan.
1. Pada percobaan pertama, saat kapan LED menyala? Jelaskan juga mengapa kondisi
menyala LED seperti itu?
2. Pada percobaan kedua, bagaimana kondisi nyala LED? Jelaskan juga mengapa kondisi
menyala LED menjadi seperti itu?
3. Dari percobaan diatas buat analisa jalannya sistem berserta analisa perbaris tiap line
program.
5. Buatlah program dengan menggunakan potensiometer, 2 buah push-button dan 4 LED
dimana terdapat 4 kondisi yaitu : 1) Led Mati semua, 2) Led hidup secara berkedip-
kedip, 3)Led berjalan dari kiri ke kanan, dan 4) Led berjalan dari kanan ke kiri. Intensitas
cahaya LED dapat diatur dengan kedua push-button. Tampilkan hasil program pada
rangkaian Arduino dan simulasikan menggunakan Proteus.
MODUL 5 KOMUNIKASI SERIAL
Tujuan
Setelah melaksanakan praktikum ini, diharapkan mahasiswa mampu:
1. Menggunakan komunikasi serial pada arduino
2. Membuat program sederhana pengendalian input/output memanfaatkan komunikasi serial.
3. Dapat membuat aplikasi pengaturan jarak jauh.

Teori Singkat
Kemampuan untuk melakukan komunikasi data antar perangkat elektronik merupakan
hal yang sangat penting yang harus dimikili oleh sebuah mikrokontroler. Mikrokontroler harus
sering bertukar data dengan mikrokontroler atau perangkat periferal lainnya. Perlu diperhatikan
bahwa kemampuan komunikasi tersebut tidak boleh sampai mengganggu fungsi dari
mikrokontroler itu sendiri.
Data dapat dipertukarkan dengan menggunakan teknik paralel atau serial. Dengan teknik
paralel, seluruh byte data biasanya dikirim secara bersamaan dari perangkat pengiriman ke
perangkat penerima. Sistem ini cukup efisien dilakukan dipandang dari sudut pandang waktu,
dimana membutuhkan delapan jalur terpisah untuk transfer data. Sedangkan komunikasi serial
adalah sebuah komunikasi yang terjadi dengan mengirimkan data per-bit secara berurutan dan
bergantian. Dari segi waktu sistem ini terlihat tidak efisien. Namun komunikasi ini hanya
membutuhkan satu jalur atau kabel sehingga jauh lebih sedikit dibandingkan dengan
komunikasi paralel karena hanya satu bit data yang dikirimkan melalui seuntai jalur atau kabel
pada waktu tertentu secara berurutan.
Manfaat paling dasar adanya komunikasi serial adalah memungkinkan terjadinya
pertukaran informasi antara papan arduino dan komputer. Hal ini memungkinkan untuk dapat
memantau status pekerjaan yang sedang dilakukan melalui komputer. Sebagai contoh, data
sensor dapat diuji tanpa harus menggunakan tampilan dari LCD tetapi langsung diamati
menggunakan komputer. Dengan demikian pengujian rangkaian sensor dan perkiraan tercapainya
hasil akhir yang diharapkan dapat langsung diamati tanpa harus merangkai LCD display dan
memprogramnya kembali berdasrkan data dari sensor yang sedang digunakan.
Komunikasi serial pada Arduino dapat dilakukan secara dua arah. Artinya baik komputer
yang kita gunakan maupun papan Arduino yang sedang kita program dapat saling
berkomunikasi dan saling mengirim maupun menerima informasi. Mikrokontroler ATmega328
yang terdapat pada papan Arduino dilengkapi dengan sejumlah sistem komunikasi serial yang
berbeda seperti serial USART, antarmuka periferal serial atau serial peripheral interface (SPI),
dan Two-wire Serial Interface (TWI). Sistem-sistem ini memiliki perbedaan dalam pengiriman
serial data.

Serial USART
Serial USART (Universal Synchronous dan Asynchronous Receiver and Transmitter)
melakukan komunikasi full duplex (dua arah) antara penerima dan pengirim. Hal ini dilakukan
dengan melengkapi ATmega328 dengan perangkat keras lain sebagai pengirim dan penerima.
USART biasanya digunakan sebagai komunikasi asynchronous. Artinya, tidak ada kesamaan
clock antara pengirim dan penerima agar data tetap sinkron satu sama lain. Untuk
mempertahankan sinkronisasi antara pengirim dan penerima, bit-bit awal dan akhir kerangka
digunakan di awal dan akhir setiap byte data dalam urutan pengiriman seperti yang terdapat
USART Atmel.
Generator clock USART menyediakan sumber clock sistem USART dan mengatur Baud
rate USART. Baud rate berasal dari sumber clock sistem mikrokontroler. Sistem clock terbagi
atas register Baud rate USART (USART Baud Rate Register/UBRR) H dan L dan beberapa
bagian tambahan untuk mengatur Baud rate. Pada mode normal asynchronous, Baud rate
ditentukan menggunakan persamaan berikut:
𝑓𝑟𝑒𝑘𝑢𝑒𝑛𝑠𝑖 𝑐𝑙𝑜𝑐𝑘 𝑠𝑖𝑠𝑡𝑒𝑚
𝐵𝑎𝑢𝑑 𝑟𝑎𝑡𝑒 =
16 (𝑈𝐵𝑅𝑅 + 1)
Dimana UBRR adalah isi register UBRRH dan UBRRL (0 hingga 4095). Penyelesaian untuk
UBRR menghasilkan:
𝑓𝑟𝑒𝑘𝑢𝑒𝑛𝑠𝑖 𝑐𝑙𝑜𝑐𝑘 𝑠𝑖𝑠𝑡𝑒𝑚
𝑈𝐵𝑅𝑅 = −1
16 × 𝐵𝑎𝑢𝑑 𝑟𝑎𝑡𝑒
Pengirim USART terdiri dari suatu register pemindah pengiriman (Transmit Shift
Register). Data yang akan dikirim dimuat ke dalam Transmit Shift Register melalui USART I/O
Data Register (UDR). Bit kerangka mulai dan berhenti secara otomatis ditambahkan ke data
pada Transmit Shift Register. Paritas secara otomatis dihitung dan ditambahkan ke Transmit
Shift Register. Data kemudian dipindahkan keluar Transmit Shift Register melalui pin TxD
setiap bitnya pada Baud rate yang ditetapkan. Pengirim USART dilengkapi dengan dua status
flag: UDRE dan TXC. Flag USART Data Register Empty (UDRE) menentukan saat buffer
pengirim kosong yang menandakan siap untuk menerima data baru. Bit ini harus dituliskan
menjadi nilai nol saat penulisan USART Control and Status Register A (UCSRA). Bit UDRE
dibersihkan dengan penulisan ke USART I/O Data Register (UDR). Bit flag Transmit Complete
(TXC) diatur ke logika satu ketika seluruh kerangka di Transmit Shift Register telah dipindah
keluar dan tidak ada data baru di buffer pengirim. Bit TXC di reset dengan menulis logika 1.
Penerima USART hampir identik dengan Transmitter USART dengan arah aliran data
dibalik. Data diterima tiap bit melalui pin RxD pada Baud Rate yang ditentukan. Penerima
USART dilengkapi dengan flag Receive Complete (RXC). Flag RXC adalah berlogika satu
ketika data yang belum dibaca berada pada buffer penerima.

Operasi Dan Pemrograman Sistem Menggunakan Fitur Lingkungan Pengembangan Arduino


Lingkungan Pengembangan Arduino dilengkapi dengan fitur komunikasi USART
bawaan. Pengiriman (TX) dan penerimaan (RX) USART dilakukan melalui pin DIGITAL 1
(TX) dan 0 (RX) ) Arduino Uno ke perangkat input, perangkat output, atau mikrokontroler lain
yang mendukung USART. Arduino Uno juga dapat berkomunikasi dengan komputer melalui
kabel USB. Perintah Arduino Development Environment untuk melakukan komunikasi USART
disediakan pada Tabel 5.1.

Tabel 5.1. Perintah USART pada pemrograman Arduino


Perintah Deskripsi
Serial.begin () Mengaturl baud rate

Serial.end () Menonaktifkan komunikasi serial. Memungkinkan TX


Digital (1) dan RX Digital (0) digunakan untuk input
dan output digital.

Serial.available () Menentukan berapa banyak byte yang telah diterima


dan disimpan dalam buffer 128 byte.

Serial.read () Membaca data serial yang masuk.

Serial.flush () Menghapus buffer penerimaan data serial.

Serial.print () Mencetak data ke port serial sebagai teks ASCII.


Pilihan parameter kedua menentukan format
pencetakan (BYTE, BIN, OCT, DEC, HEX).

Serial.println () Mencetak data ke port serial sebagai teks ASCII diikuti


perintah return (enter)

Serial.write () Menulis data biner ke port serial. Satu byte,


serangkaian byte, atau array byte dapat dikirim.

Antarmuka Peripheral Serial (SPI)


Antarmuka Peripheral Serial atau Serial Peripheral Interface (SPI) pada ATmega328
juga menyediakan komunikasi serial dua arah antara pengirim dan penerima. Dalam sistem SPI,
pengirim dan penerima memiliki kesamaan sumber clock. Hal ini membutuhkan jalur clock
tambahan antara pengirim dan penerima namun memungkinkan tingkat pengirim data yang
lebih tinggi dibandingkan dengan USART. Sistem SPI memungkinkan pertukaran data yang
cepat dan efisien antara mikrokontroler dengan perangkat periferal. Ada banyak sistem SPI
eksternal yang kompatibel tersedia untuk memperluas fitur mikrokontroler. Sebagai contoh,
LCD atau konverter digital-ke-analog dapat ditambahkan ke mikrokontroler menggunakan
sistem SPI.

Gambar 5.1. Tinjauan SPI

SPI dapat dipandang sebagai register geser sinkron 16-bit dengan 8-bit setengahnya
berada di pengirim dan 8-bit lainnya yang berada di penerima seperti yang ditunjukkan pada
Gambar 5.1. Pengirim dinyatakan sebagai master karena menyediakan sumber clock
sinkronisasi antara pengirim dan penerima. Penerima ditetapkan sebagai slave. Slave dipilih
sebagai penerima dengan menyatakan jalur Slave Select (𝑆𝑆) bernilai rendah. Ketika jalur 𝑆𝑆
bernilai rendah, pergeseran slave diaktifkan.
Pengiriman SPI dimulai dengan memuat byte data ke dalam data SPI yang dikonfigurasi
SPI Data Register (SPDR). Setiap saat generator clock SPI memberikan pulsa clock ke master
dan juga ke slave melalui pin SCK. Tiap bit digeser keluar dari register geser yang dijadikan
master ke pin Master Out Slave In (MOSI) mikrokontroler pada setiap pulsa SCK. Data diterima
di pin MOSI dari perangkat yang dijadikan slave. Pada saat yang sama, satu bit digeser keluar
dari pin Master In Slave Out (MISO) dari perangkat slave ke pin MISO dari perangkat master.
Setelah delapan pulsa clock SCK master, satu byte data telah dipertukarkan antara master dan
perangkat SPI yang dijadikan slave. Lengkapnya pengiriman data dari master dan penerimaan
data di slave ditandai oleh SPI Interrupt Flag (SPIF) di kedua perangkat. Flag SPIF terletak di
SPI Status Register (SPSR) dari masing-masing perangkat. Pada saat yang bersamaan, byte data
lain dapat dikirimkan.
Arduino Development Environment menyediakan perintah "shiftOut" untuk
menyediakan komunikasi serial menggunakan ISP. Perintah shiftOut membutuhkan empat
parameter ketika dipanggil:
 dataPin: pin DIGITAL Arduino Uno yang akan digunakan untuk output serial.

 clockPin: pin DIGITAL Arduino Uno yang akan digunakan untuk clock.

 bitOrder: menunjukkan apakah byte data yang akan dikirim pertama adalah MSB
(MSBFIRST) atau LSB (LSBFIRST).
 value: byte data yang akan digeser keluar.
Untuk menggunakan perintah shiftOut, pin yang sesuai dideklarasikan sebagai output
menggunakan pinMode perintah dalam fungsi setup (). Perintah shiftOut kemudian dipanggil di
tempat yang tepat dalam fungsi loop () menggunakan sintaks berikut:
shiftOut (dataPin, clockPin, LSBFIRST, nilai);
Sebagai hasil dari perintah ini, nilai yang ditentukan akan digeser secara serial dari pin data yang
ditentukan, LSB pertama, pada tingkat clock yang disediakan melalui pin clock.

Antarmuka Serial Dua Kabel (TWI)


Sistem TWI memungkinkan perancang sistem untuk menghubungkan sejumlah
perangkat (mikrokontroler, transduser, display, penyimpanan memori, dll.) bersama-sama ke
dalam sistem menggunakan skema interkoneksi dua kawat. TWI memungkinkan maksimum
128 perangkat untuk dihubungkan bersama. Setiap perangkat memiliki alamat uniknya sendiri
dan keduanya dapat mengirim dan menerima melalui dua bus kawat pada frekuensi hingga 400
kHz. Hal ini memungkinkan perangkat untuk bertukar informasi secara bebas dengan perangkat
lain di jaringan dalam area kecil.

5.A. Komunikasi dengan PC


Alat dan Bahan
 Kit Arduino untuk satu kelompok (max 3 org)
 Laptop
 Breadboard
 Resistor 220 Ω
 Potensiometer 100 kΩ
 Kabel jumper
 LED warna
Rangkaian Percobaan

(a) (b)
Gambar 5.2. Komunikasi PC

Program Percobaan
Sketch 5.1. Membaca Tegangan Analog
/*
ReadAnalogVoltage

Reads an analog input on pin 0, converts it to voltage, and prints


the result to the Serial Monitor.
Graphical representation is available using Serial Plotter (Tools >
Serial Plotter menu).
Attach the center pin of a potentiometer to pin A0, and the outside
pins to +5V and ground.

This example code is in the public domain.

http://www.arduino.cc/en/Tutorial/ReadAnalogVoltage
*/

// the setup routine runs once when you press reset:


void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
}

// the loop routine runs over and over again forever:


void loop() {
// read the input on analog pin 0:
int sensorValue = analogRead(A0);
// Convert the analog reading (which goes from 0 - 1023) to a
voltage (0 - 5V):
float voltage = sensorValue * (5.0 / 1023.0);
// print out the value you read:
Serial.println(voltage);
}
Sketch 5.2. Dimmer
/*
Dimmer

Demonstrates sending data from the computer to the Arduino board, in


this case to control the brightness of an LED. The data is sent in
individual bytes, each of which ranges from 0 to 255. Arduino reads
these bytes and uses them to set the brightness of the LED.

The circuit:
- LED attached from digital pin 9 to ground.
- Serial connection to Processing, Max/MSP, or another serial
application

created 2006
by David A. Mellis
modified 30 Aug 2011
by Tom Igoe and Scott Fitzgerald

This example code is in the public domain.

http://www.arduino.cc/en/Tutorial/Dimmer
*/

const int ledPin = 9; // the pin that the LED is attached to

void setup() {
// initialize the serial communication:
Serial.begin(9600);
// initialize the ledPin as an output:
pinMode(ledPin, OUTPUT);
}

void loop() {
byte brightness;

// check if data has been sent from the computer:


if (Serial.available()) {
// read the most recent byte (which will be from 0 to 255):
brightness = Serial.read();
// set the brightness of the LED:
analogWrite(ledPin, brightness);
}
}
Sketch 5.3. Dimmer dengan String Input Serial
/*
Serial input String, analog output dimmer, serial output

Reads a serial input string until it sees a newline, then converts


the string to a number if the characters are digits and uses the
result to set the pulse width modulation (PWM) of an output pin.
When new serial data arrives, this sketch adds it to a String.
When a newline is received, the loop prints the string and clears
it. Also prints the results to the Serial Monitor.
*/
String inString = ""; // string to hold input
const int ledPin = 9; // the pin that the LED is attached to

void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port
//only
pinMode(ledPin, OUTPUT);
}
// send an intro:
Serial.println("Convert string to integer ");
Serial.println("To set PWM duty cycle ");
Serial.println();
}
void loop() {
// Read serial input:
while (Serial.available() > 0) {
int inChar = Serial.read();
if (isDigit(inChar)) {
// convert the incoming byte to a char and add it to the string:
inString += (char)inChar;
}
// if you get a newline, print the string, then the string's
value:
if (inChar == '\n') {
int PWM_duty_cycle = inString.toInt(); //Convert to integer

//Convert to max duty cycle


if(PWM_duty_cycle > 255) {
Serial.println("\nWarning: Maximum Value is 255");
PWM_duty_cycle = 255;
}
Serial.print("\nPWM duty cycle at pin 9 is ");
Serial.println(PWM_duty_cycle);
Serial.print("String: ");
Serial.println(inString);

analogWrite(ledPin, PWM_duty_cycle);//Set PWM duty cycle at


//pin 9

// clear the string for new input:


inString = "";
}
}
}

Langkah Percobaan
Sebelum melakukan percobaan, perhatikan baik-baik letak port tegangan dan ground
pada board Arduino. Kemudian lakukan langkah berikut:
1) Susun rangkaian pada Gambar 5.2(a) menggunakan Breadboard dan kabel jumper.
2) Hubungkan board Arduino Uno dengan komputer/laptop menggunakan kabel USB.
3) Bukalah IDE Arduino, kemudian ketik program pada Sketch 5.1.
4) Pada IDE Arduino periksa terlebih dahulu pada menu tools, board dan port yang
digunakan pada project. Sesuaikan board dan port dengan jenis board yang digunakan
serta port yang terhubung dengan kabel USB pada board Arduino.
5) Compile dan upload program ke board arduino
6) Lalu buka serial port melalui Tools  Serial Monitor.
7) Putar potensiometer hingga Serial Monitor menampilkan besar tegangan yang terukur,
maka percobaan yang dilakukan benar, jika tidak, ulangi langkah pertama dengan
memeriksa program dan koneksitas
8) Susun kembali rangkaian pada Gambar 5.2(b) menggunakan Breadboard dan kabel
jumper.
9) Kembali ke IDE Arduino, kemudian ketik program pada Sketch 5.2.
10) Compile dan upload program ke board arduino.
11) Putar potensiometer, jika LED berkedip maka percobaan yang dilakukan benar, jika
tidak, ulangi langkah pertama dengan memeriksa koneksi kabel. Perhatikan dan catat
hasil yang terjadi.
12) Kembali ke IDE Arduino, kemudian ketik program pada Sketch 4.3.
13) Compile dan upload program ke board arduino.
14) Putar potensiometer, jika LED berkedip maka percobaan yang dilakukan benar, jika
tidak, ulangi langkah pertama dengan memeriksa koneksi kabel. Perhatikan dan catat
hasil yang terjadi

Tugas
Berikan jawaban dari soal di bawah ini pada Laporan Praktikum. Berikan juga
kesimpulan dari percobaan pada subbab akhir di Laporan.
1. Pada percobaan pertama, tegangan pada bagian yang terukur? Jelaskan juga mengapa
mengapa terjadi seperti itu?
2. Pada percobaan kedua, bagaimana kondisi nyala LED? Jelaskan juga mengapa kondisi
menyala LED menjadi seperti itu?
3. Dari percobaan diatas buat analisa jalannya sistem berserta analisa perbaris tiap line
program.

5.B. Komunikasi tanpa Kabel (Wireless)


Alat dan Bahan
 Kit Arduino untuk satu kelompok
 Laptop
 Breadboard
 Resistor 220 Ω
 Kabel jumper
 LED warna dan Infra Red
 Modul Bluetooth HC05 dan RFID-RC522

Rangkaian Percobaan

(a) (b)

(c)
Gambar 5.3. Komunikasi Wireless

Program Percobaan
Sketch 5.4. Komunikasi Bluetooth
/*
Bluetooh Basic: LED ON OFF
Control a LED on pin of arduino using a bluetooth module
*/
char data = 0; //Variable for storing received data
void setup()
{
Serial.begin(9600); //Sets the baud for serial data transmission
pinMode(13, OUTPUT); //Sets digital pin 13 as output pin
}
void loop()
{
if (Serial.available() > 0) // Send data only when you receive data:
{
data = Serial.read(); //Read the incoming data & store into data
Serial.print(data); //Print Value inside data in Serial monitor
Serial.print("\n");
if (data == '1') // Checks whether value of data is equal to 1
digitalWrite(13, HIGH); //If value is 1 then LED turns ON
else if (data == '0') // Checks whether value of data is equal to 0
digitalWrite(13, LOW); //If value is 0 then LED turns OFF
}
}

Sketch 5.5. Komunikasi Radio (IR)


/*
IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv.

Arduino should have an IR detector/demodulator connected to the receive


pin (9) and a visible LED connected to pin 11.

*/

#include <IRremote.h>

const int receiver = 9;


const int led = 11;

IRrecv ir_receiver(receiver);
decode_results results;

void setup()
{
Serial.begin(9600);
// In case the interrupt driver crashes on setup, give a clue
// to the user what's going on.
Serial.println("Enabling IRin");
ir_receiver.enableIRIn(); // Start the receiver
Serial.println("Enabled IRin");
pinMode(led, OUTPUT);
}

void loop()
{
if (ir_receiver.decode(&results))

{
Serial.println(results.value, HEX);
translateIR();
ir_receiver.resume(); // Receive the next value
delay(200);
}

void translateIR()

{
int sensorValue = 0;
sensorValue = digitalRead(led);

switch (results.value) {

case 0x20DF10EF: //change here the hex value of the button accessed
if (sensorValue == 0) {

Serial.println(" ON ");
digitalWrite(led, HIGH);
break;
}
if (sensorValue == 1) {

Serial.println(" OFF ");


digitalWrite(led, LOW);
break;
}

case 0x20DFD02F: //change here the hex value of the button accessed
if (sensorValue == 0) {
Serial.println(" BLINK ");
for (int i = 1; i < 5; i++) {
digitalWrite(led, HIGH);
delay(500);
digitalWrite(led, LOW);
delay(500);
}
break;
}
default:
Serial.println(" other button ");
}
}
Sketch 5.6. Komunikasi Radio (RFID)
/*
* ----------------------------------------------------------------------
----------------------------------------------
* Example sketch/program showing how to read data & access control from
a PICC to serial.
* ----------------------------------------------------------------------
----------------------------------------------
* This is a MFRC522 library example; for further details and other
examples see: https://github.com/miguelbalboa/rfid
*
* Example sketch/program showing how to read data from a PICC (that is:
a RFID Tag or Card) using a MFRC522 based RFID
* Reader on the Arduino SPI interface.
* Access the security control
* When the Arduino and the MFRC522 module are connected (see the pin
layout below), load this sketch into Arduino IDE
* then verify/compile and upload it. To see the output: use Tools,
Serial Monitor of the IDE (hit Ctrl+Shft+M). When
* you present a PICC (that is: a RFID Tag or Card) at reading distance
of the MFRC522 Reader/PCD, the serial output
* will show the ID/UID, type and any data blocks it can read. Note: you
may see "Timeout in communication" messages
* when removing the PICC from reading distance too early.
*
* If your reader supports it, this sketch/program will read all the
PICCs presented (that is: multiple tag reading).
* So if you stack two or more PICCs on top of each other and present
them to the reader, it will first output all
* details of the first and then the next PICC. Note that this may take
some time as all data blocks are dumped, so
* keep the PICCs at reading distance until complete.
*/

#include <SPI.h>
#include <MFRC522.h>

#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.

void setup()
{
Serial.begin(9600); // Initiate a serial communication
SPI.begin(); // Initiate SPI bus
mfrc522.PCD_Init(); // Initiate MFRC522
Serial.println("Approximate your card to the reader...");
Serial.println();

}
void loop()
{
// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
//Show UID on serial monitor
Serial.print("UID tag :");
String content= "";
byte letter;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
Serial.println();
Serial.print("Message : ");
content.toUpperCase();
if (content.substring(1) == "BD 31 15 2B") //change here the UID of the
card/cards that you want to give access
{
Serial.println("Authorized access");
Serial.println();
delay(3000);
}

else {
Serial.println(" Access denied");
delay(3000);
}
}

Langkah Percobaan
Sebelum melakukan percobaan, perhatikan baik-baik letak port tegangan dan ground
pada board Arduino. Kemudian lakukan langkah berikut:
1) Susun rangkaian rangkaian LED seperti terlihat pada Gambar 5.3(a) menggunakan
Breadboard dan kabel jumper. Perhatikan modul bluetooth HC05 jangan dihubugkan
terlebih dahulu
2) Hubungkan board Arduino Uno dengan komputer/laptop menggunakan kabel USB.
3) Bukalah IDE Arduino, kemudian ketik program pada Sketch 5.4.
4) Pada IDE Arduino periksa terlebih dahulu pada menu tools, board dan port yang
digunakan pada project. Sesuaikan board dan port dengan jenis board yang digunakan
serta port yang terhubung dengan kabel USB pada board Arduino.
5) Compile dan upload program ke board arduino
6) Hubungkan modul bluetooth HC05 ke board Arduino Uno sesuai Gambar 5.3(a).
7) Unduh aplikasi android LED Controller.apk atau aplikasi android pengendalian LED
lainnya dengan terlebih dahulu menyesaikan nilai variabel yang dihasilkan aplikasi
8) Jalankan aplikasi android pada handphone dengan terebih dahulu menghubungkan
komunikasi bluetooth antara handphone dengan board arduino.
9) Lalu buka serial port melalui Tools  Serial Monitor.
10) Klik suatu button pada aplikasi android, jika LED menyala, maka percobaan yang
dilakukan benar. Jika tidak, ulangi percobaan dengan memeriksa program, koneksi kabel
dan bluetooth, serta nilai keluaran yang dihasilkan perangkat remote control pada Serial
Monitor. Perhatikan dan catat hasil yang terjadi.
11) Lepaskan modul bluetooth HC05 dan hubungkan LED Infra Merah seperti pada Gambar
5.3(b).
12) Kembali ke IDE Arduino, kemudian ketik program pada Sketch 5.5.
13) Compile dan upload program ke board arduino.
14) Lalu buka serial port melalui Tools  Serial Monitor.
15) Tekan suatu button pada perangkat remote control, hingga kecerahan LED berubah,
maka percobaan yang dilakukan benar, jika tidak, ulangi percobaan dengan memeriksa
program, koneksitas, serta nilai keluaran yang dihasilkan perangkat remote control pada
Serial Monitor. Perhatikan dan catat hasil yang terjadi.
16) Lepaskan seluruh rangkaian dan susun kembali rangkaian pada Gambar 5.3(c).
17) Kembali ke IDE Arduino, kemudian ketik program pada Sketch 5.6.
18) Compile dan upload program ke board arduino.
19) Lalu buka serial port melalui Tools  Serial Monitor.
20) Letakkan kartu RFID atau tag ID pada modul RFID-RC522, jika Serial Monitor
menginformasikan akses ditolak maka percobaan yang dilakukan benar, jika tidak,
ulangi langkah pertama dengan memeriksa program dan koneksitas.
21) Ubah program dengan memberikan kode yang dihasilkan kartu RFID atau tag ID pada
Serial Monitor.
22) Letakkan kartu RFID atau tag ID pada modul RFID-RC522, jika Serial Monitor
menginformasikan akses diterima maka percobaan yang dilakukan benar, jika tidak,
ulangi langkah pertama dengan memeriksa program dan koneksitas.Perhatikan dan catat
hasil yang terjadi

Tugas
Berikan jawaban dari soal di bawah ini pada Laporan Praktikum. Berikan juga
kesimpulan dari percobaan pada subbab akhir di Laporan.
1. Susun diagram alir program untuk tiap sketch di atas
2. Buatlah program dengan menggunakan modul bluetooth dimana intensitas cahaya LED
dapat diatur dari perangkat android
3. Buatlah program dengan menggunakan remote control dan 4 LED dimana terdapat 4
kondisi yaitu : 1) Led Mati semua, 2) Led hidup secara berkedip-kedip, 3)Led berjalan
dari kiri ke kanan, dan 4) Led berjalan dari kanan ke kiri. Tampilkan hasil program pada
rangkaian Arduino dan simulasikan menggunakan Proteus.
4. Buatlah program dengan menggunakan RFID dimana akses hanya bisa diterima untuk
3 kartu, dimana saat akses diterima diindikasikan dengan LED, dan akses ditolak
diindikasikan dengan buzzer.
5.C. Komunikasi pada Jaringan
Alat dan Bahan
 Kit Arduino untuk satu kelompok (max 3 org)
 Arduino dapat diganti dengan development board dengan kualitas di bawahnya, selama
masih kompatibel dengan IDE Arduino
 Laptop
 Breadboard
 Resistor 1 kΩ
 Kabel jumper
 LED warna

Rangkaian Percobaan
Sama seperti Percobaan 4.A.

Program Percobaan
Sketch 5. 7. Komunikasi via Ethernet
/*
Fading

This example shows how to fade an LED using the analogWrite()


function.

The circuit:
- LED attached from digital pin 9 to ground.

This example code is in the public domain.

http://www.arduino.cc/en/Tutorial/Fading
*/

int ledPin = 9; // LED connected to digital pin 9

void setup() {
// declare pin 9 to be an output:
pinMode(led, OUTPUT);
}

void loop() {
// fade in from min to max in increments of 5 points:
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
// sets the value (range from 0 to 255):
analogWrite(ledPin, fadeValue);
// wait for 30 milliseconds to see the dimming effect
delay(30);
}

// fade out from max to min in increments of 5 points:


for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
// sets the value (range from 0 to 255):
analogWrite(ledPin, fadeValue);
// wait for 30 milliseconds to see the dimming effect
delay(30);
}
}
Sketch 5.8. Komunikasi via Internet
/*
Analog input, analog output, serial output

Reads an analog input pin, maps the result to a range from 0 to 255
and uses
the result to set the pulse width modulation (PWM) of an output
pin.
Also prints the results to the Serial Monitor.

The circuit:
- potentiometer connected to analog pin 3.
Center pin of the potentiometer goes to the analog pin.
side pins of the potentiometer go to +5V and ground
- LED connected from digital pin 9 to ground

This example code is in the public domain.

http://www.arduino.cc/en/Tutorial/AnalogInOutSerial
*/

// These constants won't change. They're used to give names to the


pins used:
const int analogInPin = A0; // Analog input pin that the
potentiometer is attached to
const int analogOutPin = 9; // Analog output pin that the LED is
attached to

int sensorValue = 0; // value read from the pot


int outputValue = 0; // value output to the PWM (analog out)

void setup() {
// initialize serial communications at 9600 bps:
Serial.begin(9600);
}

void loop() {
// read the analog in value:
sensorValue = analogRead(analogInPin);
// map it to the range of the analog out:
outputValue = map(sensorValue, 0, 1023, 0, 255);
// change the analog out value:
analogWrite(analogOutPin, outputValue);

// print the results to the Serial Monitor:


Serial.print("sensor = ");
Serial.print(sensorValue);
Serial.print("\t output = ");
Serial.println(outputValue);

// wait 2 milliseconds before the next loop for the analog-to-


digital
// converter to settle after the last reading:
delay(2);
}
Langkah Percobaan
Sebelum melakukan percobaan, perhatikan baik-baik letak port tegangan dan ground
pada board Arduino. Kemudian lakukan langkah berikut:
23) Susun rangkaian pada Gambar 4.1 menggunakan Breadboard dan kabel jumper.
24) Hubungkan board Arduino Uno dengan komputer/laptop menggunakan kabel USB.
25) Bukalah IDE Arduino, kemudian ketik program pada Sketch 4.4.
26) Pada IDE Arduino periksa terlebih dahulu pada menu tools, board dan port yang
digunakan pada project. Sesuaikan board dan port dengan jenis board yang digunakan
serta port yang terhubung dengan kabel USB pada board Arduino.
27) Compile dan upload program ke board arduino
28) Jika kecerahan LED berubah maka percobaan yang dilakukan benar, jika tidak, ulangi
langkah pertama dengan memeriksa program dan koneksitas. Catat hasil yang terjadi.
29) Kembali ke IDE Arduino, kemudian ketik program pada Sketch 4.5.
30) Compile dan upload program ke board arduino.
31) Lalu buka serial port melalui Tools  Serial Monitor.
32) Putar potensiometer hingga kecerahan LED berubah, maka percobaan yang dilakukan
benar, jika tidak, ulangi langkah pertama dengan memeriksa program dan koneksitas.
Perhatikan dan catat hasil yang terjadi

Tugas
Berikan jawaban dari soal di bawah ini pada Laporan Praktikum. Berikan juga
kesimpulan dari percobaan pada subbab akhir di Laporan.
5. Pada percobaan pertama, saat kapan LED menyala? Jelaskan juga mengapa kondisi
menyala LED seperti itu?
6. Pada percobaan kedua, bagaimana kondisi nyala LED? Jelaskan juga mengapa kondisi
menyala LED menjadi seperti itu?
7. Dari percobaan diatas buat analisa jalannya sistem berserta analisa perbaris tiap line
program.
Buatlah program dengan menggunakan potensiometer, 2 buah push-button dan 4 LED dimana
terdapat 4 kondisi yaitu : 1) Led Mati semua, 2) Led hidup secara berkedip-kedip, 3)Led berjalan
dari kiri ke kanan, dan 4) Led berjalan dari kanan ke kiri. Intensitas cahaya LED dapat diatur
dengan kedua push-button. Tampilkan hasil program pada rangkaian Arduino dan simulasikan
menggunakan Proteus.

Anda mungkin juga menyukai