[Link].
COM | JAGOAN ARDUINO 1
[Link] | JAGOAN ARDUINO 2
Jagoan Arduino
Zamisyak Oby | Konsultan Project Robotic
© 2018, Indobot Robotic Center
Dilarang keras menerjemahkan, memfotokopi atau memperbanyak
sebagian maupun seluruh bagian tanpa izin tertulis dari Indobot
Robotic Center.
“ Hargailah karya orang lain maka suatu saat karyamu akan lebih
dihargai orang lain “
--Zamisyak Oby--
[Link] | JAGOAN ARDUINO 3
Kata Pengantar
Syukur Alhamdulillah penulis panjatkan pada Tuhan yang Maha
Kuasa. Hanya karena anugerah-NYA Jagoan Arduino ini dapat
terselesaiakan. Semoga tulisan ini dapat menjadi pedoman tambahan
dalam belajar pemrogaman Arduino.
Pemrogaman sudah menjadi kebutuhan penting di era teknologi
informasi ini. Meskipun sekarang sudah banyak alat – alat elektronik
yang sifatnya otomatis sudah banyak beredar dipasaran, namun
membuat progam sendiri untuk kebutuhan yang lebih spesifik akan tetap
diperlukan. Progam komesil belum tentu sesuai dengan permasalahan
yang akan dihadapi. Belajar elektronika dan coding tidak butuh waktu
yang lama.
Pemrogaman bukan pekerjaan yang sulit karena dengan Arduino
semua bisa. Arduino sudah memiliki wadah komunitas secara global,
dimana belajar pemrogaman sudah bisa diakses secara global hanya
dengan melalui internet.
Semakin hari kegiatan memperogam sudah menjadi kebutuhan
tersendiri bukan hanya karena hobi, tapi karena tuntutan permasalahn
yang sekarang ini harus diselesaikan dengan otomatisasi. Sebagian besar
orang belajar memprogam dari Learning by doing. Memprogam
membutuhkan metode yang baik supaya hasil progam bisa maksimal.
Buku Jagoan Arduino akan mengajarkan tentang pemrogaman yang baik
dan mengupas tentang dunia Arduino.
Yogyakarta, April 2018
Zamisyak Oby
[Link] | JAGOAN ARDUINO 4
Ucapan Terima Kasih
1. Alloh SWT, berkat izin dan hidayahnya sehingga mampu
menyelesaikan buku ini.
2. Rasulullah SAW, yang menjadi suri tauladan dan panutan hingga
akhir hayat nanti.
3. Ibukku tercinta, Darwiyah, yang selalu mendukung untuk
menjadikan anak yang kuat dan mandapatkan yang terbaik.
4. Ayahku tercinta, Sukardi yang selalu mendukung sampai saat ini.
5. Kakakku, Iken Jhonatra dan Laode Kurnia Sandi yang luar biasa.
6. Tim Indobot Robotic Center, yang selalu membersamai dalam
mewujudkan mimpi besar bersama.
7. Mentor bisnis saya Coach Mugihardi, berkat bimbingan dan
dukunganya bisnis ini menjadi lebih tumbuh.
8. Guru kehidupan saya, Pak Alfan yang sudah mengajari saya
banyak hal sebagai bekal kehidupan nanti.
9. Guru imajiner saya, Dewa Eka Prayoga, Saptuari Sugiharto, Jaya
Setiabudi dan seluruh penulis buku bisnis yang pernah saya baca.
Berkat pemikiran anda yang luar biasa, pikiran saya jadi
tercerahkan.
10. Arduino yang sudah merubah hidup saya menjadi lebih mudah.
Luar biasa Arduino.
11. Anda, para pembaca buku ini yang luar biasa karena anda telah
melakukan selangkah perubahan lebih baik lagi untuk menjadi
progamer.
[Link] | JAGOAN ARDUINO 5
Daftar Isi
Kata Pengantar........................................................................................ 4
Ucapan Terima Kasih .............................................................................. 5
Daftar Isi .................................................................................................. 6
Bab 1. Apa Itu Arduino? .......................................................................... 8
1.1 Pengenalan Macam Arduino Board ........................................... 10
1.2 Penggunaan Board Arduino Uno ................................................ 11
1.3 Cara Instal Software Arduino IDE ............................................... 14
1.4 Pengenalan Software Arduino IDE ............................................. 17
Bab 2. Pemrogaman Arduino ............................................................... 19
2.1 Struktur Utama ........................................................................... 19
2.2 Ekspresi Bilangan ........................................................................ 21
2.3 Struktur Kontrol .......................................................................... 22
2.4 Perulangan .................................................................................. 25
2.5 Syntax .......................................................................................... 28
2.6 Operasi Aritmatika...................................................................... 29
2.7 Operator Perbandingan .............................................................. 29
2.8 Operator Boolean ....................................................................... 29
2.9 Operator Bitwise ......................................................................... 30
2. 10 Operator Pertambahan dan Pengurangan .............................. 30
2. 11 Variabel .................................................................................... 30
2.12 Tipe Data ................................................................................... 31
2.13 Pin Input dan Output ................................................................ 32
2.13.1 Inisialisasi Fungsi Pin I/O ................................................... 32
[Link] | JAGOAN ARDUINO 6
2.13.2 Menulis Data Digital di Pin Output ................................... 32
2.13.1 Membaca Data Digital pada Pin Input .............................. 33
2.13.3 Menulis Data Analog di Pin Output PWM ........................ 34
2.13.4 Membaca Data Analog di Pin Input ADC ( Analog to Digital
Converter ) .................................................................................... 34
2.14 Time ........................................................................................... 35
2.14.1 millis() ................................................................................. 35
2.14.2 micros() ............................................................................... 35
2.14.3 delay() ................................................................................. 35
2.14.4 delayMicroseconds() .......................................................... 36
2.15 External Interrupts .................................................................... 36
2.15.1 attachInterrupt() ................................................................. 36
2.15.2 detachInterrupt() ................................................................ 39
2.16 Interrupts .................................................................................. 39
2.16.1 interrupts().......................................................................... 39
2.16.2 noInterrupts() ..................................................................... 39
2.17 Communication ......................................................................... 40
2.17.1 Serial ................................................................................... 40
Bab 3. Project & Study Kasus ................................................................ 41
3.1 Project Jam Digital Menggunakan LCD 1602.............................. 41
3.2 Kalkulator Sederhana ................................................................. 43
3.2 LCD OLED 12C 0,96’’ 128x64 Loncat Atau Skipping? Ini
Solusinya…......................................................................................... 49
[Link] | JAGOAN ARDUINO 7
Bab 1. Apa Itu Arduino?
Arduino merupakan platform prototyping open-source hardware
yang mudah digunakan dalam membuat suatu projek berbasis
pemrogaman. Arduino Board mampu membaca inputan berupa sensor,
tombol dan mengolah menjadi outputan seperti mengaktifkan motor,
menyalakan LED dan sebagainya. Anda dapat memprogam Arduino
Board dengan memberikan set instruksi tertentu dengan menggunakan
Arduino programming language, dan Software Arduino (IDE).
Mengapa Arduino?
Arduino dapat bekerja di Mac, Windows, dan Linux. Semua
orang bisa membuat instrumen ilmiah menggunakan Arduino untuk
membuktikan prinsip – prinsip kimia dan fisika, atau untuk memulai
dengan pemrogaman robotika. Jadi Arduino adalah salah satu kunci
untuk belajar hal – hal baru. Siapapun seperti anak – anak, seniman,
progamer dan penghobi elektronika dapat memulai menggunakan
arduino hanya dengan mengikuti tutorial, kit maupun berdiskusi secara
online dengan anggota komunitas Arduino baik di Facebook, Twitter
maupun web [Link] dan komunitas di daerah anda.
[Link] | JAGOAN ARDUINO 8
Apa saja keuntungan menggunakan Arduino?
Arduino menyederhanakan proses bekerja dengan mikrokontroler,
tetapi menawarkan berbagai keuntungan bagi guru, siswa, dan semua
orang yang tertarik dengan Arduio seperti :
• Murah – Arduino Board relatif murah kalau di Indonesia dr harga
Rp 100.000 – Rp 400.000, harga tersebut bisa kalian temukan
dari Arduino yang clone sampai Arduino yang asli.
• Cross-platform – Software Arduino (IDE) lebih fleksibel karena
dapat digunakan di Windows, Macintosh OSX, dan sistem
operasi Linux. Kebanyakan software mikrokontroler hanya
tersedia di Windows.
• Sederhana untuk dipelajari – Software Arduino (IDE) mudah
digunakan untuk pemula dan tingkat lanjut.
• Open Source dan Software ectensible – Perangkat lunak
Arduino diterbitkan sebagai alat Open Source. Bahasa yang
digunakan ialah bahasa C untuk AVR dan dapat dikembangkan
lagi untuk membuat library melalui C++.
• Open source dan hardware extensible – Arduino Board
diterbitkan di bawah lisensi Creative Commons, sehingga
desainer sirkuit yang berpengalaman dapat membuat versi
mereka sendiri, dan mengembangkan sendiri. Bahkan pengguna
yang relatif tidak berpengalaman dapat membangun versi papan
arduino untuk memahami cara kerjanya dan menghemat uang.
[Link] | JAGOAN ARDUINO 9
1.1 Pengenalan Macam Arduino Board
Arduino Uno Arduino 101 Arduino Pro
Arduino Mega Arduino Zero Arduino Due
Arduino Yun Arduino Gemma Arduino Lilypad USB
Arduino Pro Micro Arduino Micro Arduino Pro Mini
[Link] | JAGOAN ARDUINO 10
1.2 Penggunaan Board Arduino Uno
Arduino Uno adalah papan terbaik untuk memulai dengan
belajar elektronik dan coding. Papan jenis ini yang paling kuatdan yang
paling banyak digunakan dari seluruh keluarga Arduino.
USB Digital
tipe B Pin I/0
Atmega
328
DC IN 7,4V
Analog
– 9V
Pin
Disini kita akan lebih sering menggunakan Arduino Uno karena
lebih kuat dan banyak digunakan untuk memulai belajar elektronik dan
coding.
Selain itu, beberapa pin memiliki fungsi khusus:
Uno memiliki 6 input analog, berlabel A0 melalui A5, yang
masing-masing menyediakan 10 bit resolusi (yaitu 1024 nilai yang
berbeda). Secara default mereka mengukur dari tanah ke 5 volt,
meskipun adalah mungkin untuk mengubah batas atas dari kisaran
mereka menggunakan pin AREF dan fungsi analogReference ().
AREF. tegangan referensi untuk input analog. Digunakan dengan
analogReference (). Berikut spesifikasi lengkap Arduino Uno.
[Link] | JAGOAN ARDUINO 11
Spesifikasinya
Mikrokontroler ATmega328P
Tegangan operasi 5V
Input Voltage
7-9 V
(dianjurkan)
Input Voltage
6-20V
(batas)
14 (dimana 6
Digital I / O Pins memberikan output
PWM)
PWM Digital I / O
6
Pins
Pins Masukan Analog 6
Arus DC per I / O Pin 20 mA
Arus untuk DC 3.3V
50 mA
Pin
32 KB (ATmega328P)
Flash Memory yang 0,5 KB digunakan
oleh bootloader
SRAM 2 KB (ATmega328P)
EEPROM 1 KB (ATmega328P)
Kecepatan jam 16 MHz
[Link] | JAGOAN ARDUINO 12
Tegangan Kerja Arduino
Untuk Arduino yang mudah digunakan untuk belajar pertama
kali adalah Arduino Uno. Cara menyakan arduino cukup mudah yaitu
dengan menghubungkan port USB pada USB tipe B arduino dengan
PC/Laptop atau bisa menggunakan tegangan eksternal melalui DC IN
dengan tegangan yang dianjurkan 7 sampai 9V.
Input dan Output
Setiap papan Arduino memiliki jumlah input dan output yang
berbeda-beda. Kali ini yang akan dibahas adalah Arduino Uno. Berikut
adalah table 1.1 untuk pin I/O Arduino Uno :
Tabel 1.1 pin I/O Arduino Uno
No Pin Fungsi Fungsi Lain
0 Digital I/0 Rx ( Serial Receiver )
1 Digital I/0 Tx ( Serial Transmiter )
2 Digital I/0 Interupsi Eksternal
Interupsi Eksternal /
3 Digital I/0
PWM Timer 2
4 Digital I/0 -
5 Digital I/0 PWM Timer 0
6 Digital I/0 PWM Timer 0
7 Digital I/0 -
8 Digital I/0 -
9 Digital I/0 PWM Timer 1
10 Digital I/0 SPI – SS / PWM Timer 1
SPI – MOSI / PWM Timer
11 Digital I/0
1
12 Digital I/0 SPI – MISO
13 Digital I/0 SPI – SCK / LED
[Link] | JAGOAN ARDUINO 13
No Pin Fungsi Fungsi Lain
A0 Analog I/0 -
A1 Analog I/0 -
A2 Analog I/0 -
A3 Analog I/0 -
A4 Analog I/0 TWI – SDA
A5 Analog I/0 Twi – SCK
1.3 Cara Instal Software Arduino IDE
Cara menginstal Arduino IDE bisa langsung membuka file yang
sudah disediakan dalam CD maupun download di
[Link]
Setelah itu mulai dengan step pertama. Buka [Link]
Lalu akan tampil seperti ini. Lalu klik Yes.
[Link] | JAGOAN ARDUINO 14
Setelah ini akan muncul seperti diatas Klik I Agree.
Kemudian centang semua dan klik next
[Link] | JAGOAN ARDUINO 15
Kemudian tentukan Destination Folder untuk Hasil Instalasinya.
Disini bisa dipilih default pada C. Setelah itu klik install. Tunggu
prosesnya hingga selesai.
Setelah itu akan muncul completed jika sudah selesai.
[Link] | JAGOAN ARDUINO 16
Klik close setelah selesai dan sudah mulai bisa dibuka software
arduinonya.
1.4 Pengenalan Software Arduino IDE
Gambar Tampilan Awal Arduino IDE
[Link] | JAGOAN ARDUINO 17
Arduino Integrated Development Environment - atau Arduino
Software (IDE) - berisi editor teks untuk menulis kode, area pesan, konsol
teks, toolbar dengan tombol untuk fungsi-fungsi umum dan serangkaian
menu. Termasuk menghubungkan ke perangkat keras Arduino untuk
meng-upload program dari komputer.
Verify
Memeriksa kode Anda untuk kesalahan kompilasi itu.
Upload
Mengkompilasi kode Anda dan upload ke papan dikonfigurasi.
Lihat upload di bawah ini untuk rincian.
Catatan: Jika Anda menggunakan programmer eksternal dengan papan
Anda, Anda dapat tekan "shift" tombol pada komputer Anda saat
menggunakan ikon ini maka teks akan berubah menjadi "Upload Using
Programmer"
New
Membuat sketsa baru.
Open
Membuka file yang sudah ada
Save
Mengamankan sketsa Anda.
Serial Monitor
Membuka Monitor serial .
[Link] | JAGOAN ARDUINO 18
Bab 2. Pemrogaman Arduino
Pemrogaman arduino menggunakan struktur Bahasa C.
Mekanisme pemrogamanya arduino sama dengan mikrokontroler pada
umumnya. Mulai dari membuat sket progam, meng-compile, selanjutnya
proses upload pada papan arduino. Pengisian progam dengan metode
upload ialah mengisi papan arduino dengan progam yang sudah
berbentuk Hex atau hasil compile dari bahasa C ke bahasa mesin.
Tulis Compile Upload
Progam Progam Progam
Program Arduino dapat dibagi dalam tiga bagian utama: struktur, nilai-
nilai (variabel dan konstanta), dan fungsi.
2.1 Struktur Utama
• Setup()
Fungsi setup() dipanggil ketika sketsa progam dimulai.
Fungsi ini digunakan untuk menginisialisasi variabel, mode pin,
penggunaan librari, dll. Fungsi setup() hanya akan berjalan
sekali, setelah power arduino dinyalakan atau saat mereset
papan Arduino.
Contoh : Progam 1.1
int ledPin = 13;
void setup(){
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH);
delay(5000);
digitalWrite(ledPin, HIGH);
}
void loop(){
// ...
}
[Link] | JAGOAN ARDUINO 19
Progam 1.1 akan menyalakan LED pada pin 13 selama 5 detik
lalu mati. Eksekusi ini dilakukan hanya sekali.
• Loop()
Setelah membuat fungsi setup(), maka berikutnya
adalah fungsi loop(). Fungsi loop() akan melakukan loop
berturut-turut dimana program akan dijalankan terus
menerus secara berurutan dan loop untuk mengontrol papan
Arduino.
Contoh : Progam 1.2
const int buttonPin = 3;
setup ()
{
[Link](9600);
pinMode(buttonPin, INPUT);
}
loop()
{
if (digitalRead (buttonPin) == HIGH)
[Link] ( 'H');
else
[Link] ( 'L');
delay (1000);
}
Progam 1.2 pada serial monitor akan menampilkan huruf H
ketika tombol pada pin 3 ditekan dan bila dilepaskan akan
tampil huruf L.
[Link] | JAGOAN ARDUINO 20
• //Komentar
Komentar digunakan untuk memberikan keterangan
pada progam yang dibuat. Komentar tidak dieksekusi maka
komentar tidak menambah ukuran file hasil compile. Cara
membuat komentar ialah sebagai berikut :
//komentar segaris diawali dengan dua garis miring
/*komentar untuk lebih dari satu baris diawali
dengan garis miring lalu tanda bintang serta
diakhiri dengan bintang lalu garis miring*/
2.2 Ekspresi Bilangan
Dalam pemrogaman bahasa C pada arduino, bilangan dapat
diekspresikan dalam beberapa format, yaitu :
• Biner
Ditulis dengan awalan huruf ‘0b’. Contoh : b11110010
• Desimal
Ditulis biasa tanpa awalan. Contoh : 435
• Oktal
Ditulis dengan awalan angka ‘0’. Contoh : 0753
• Heksadesimal
Diawali dengan ‘0x’. Contoh : 0x5A
[Link] | JAGOAN ARDUINO 21
2.3 Struktur Kontrol
Setiap progam yang dibuat membutuhkan suatu kontrol. Tak
hanya perulangan namun suatu eksekusi dengan syarat tertentu juga
diperlukan.
Pengujian Kondisi :
• if
Digunakan untuk mengecek suatu kondisi. Jika benar maka
perintah didalam if akan dikerjakan.
if(kondisi){
Pernyataan / perintah
}
Contoh :
if(x==6) {
a=a+5;
}
• if – else
seperti dengan if, hanya saja ada 2 pilihan pernyataan /
perintah. Jika kondisi benar maka perintah didalam if akan
dikerjakan, jika kondisinya salah maka pernyataan didalam
else lah yang akan dikerjakan
if(kondisi){
Pernyataan / perintah 1
}
else {
Pernyataan / perintah 2
}
[Link] | JAGOAN ARDUINO 22
Contoh :
if(x==1) {
a=1;
}
else {
a=0;
}
• if – else if
Untuk melakukan pengecekan suatu kondisi lebih dari satu
maka bisa menggunakan if – else if.
if(kondisi1){
Pernyataan / perintah 1
}
else if(kondisi2){
Pernyataan / perintah 2
}
else if(kondisi ke-n){
Pernyataan / perintah ke-n
}
Contoh :
if(x==1) {
a=1;
}
else if(x==2){
a=2;
}
else if(x==3){
a=3;
}
[Link] | JAGOAN ARDUINO 23
• switch case
Pernyataan ini digunakan untuk memilih kondisi yang sesuai
untuk kemudian mengerjakan perintahnya. Bedanya adalah
kondisi yang diuji berupa sebuah nilai variable.
switch(variabel){ //variable yang diuji
case 1 : //pernyataan/perintah 1
break;
case 2 : //pernyataan/perintah 2
break;
case n : //pernyataan/perintah n
break;
default : //pernyataan/perintah default
}
Jika variable memenuhi syarat dari salah satu case maka dia akan
mengerjakan pernyataan/perintah tersebut. Misal nilai variable
= 2 maka dia kan mengerjakan pernyataan/perintah 2. Jika tidak
memenuhi maka dia akan mengerjakan default.
Contoh :
switch(a){
case 1 : digitalWrite(pin1,HIGH)
break;
case 2 : digitalWrite(pin2,HIGH)
break;
case 3 : digitalWrite(pin3,HIGH)
break;
default : digitalWrite(pin4,LOW)
}
[Link] | JAGOAN ARDUINO 24
2.4 Perulangan
• while
Perulangan ini digunakan untuk membuat perulangan yang
tidak terbatas selama kondisi dalam while benar.
while(kondisi){
//pernyataan/perintah
}
Contoh :
while(a<200){
a++;
}
Perulangan while akan berhenti atau keluar setelah a mencapai
angka 200.
• do … while
Perulangan ini akan melakukan pernyataan /perintah lalu akan
melihat kondisi dalam while. Jika benar maka pernyataan /
perintah akan dieksekusi kembali.
do{
//pernyataan/perintah
}
while(kondisi);
Contoh :
do{
a++;
}
while(a<200);
Perulangan pertambahan a+1 akan dilakukan sampai nilai a=200.
[Link] | JAGOAN ARDUINO 25
• for
Digunakan untuk perulangan yang sifatnya terbatas.
for(inisialisasi;kondisi;step){
//pernyataan/perintah
}
Contoh :
for(a=0;a<=10;a++){
[Link](a);
}
Inisialisasi : nilai awal suatu variable untuk proses
perulangan.
Kondisi : kondisi yang menentukan proses perulangan, jika
benar perulangan dikerjakan.
Step : tahap perulangan bisa dalam bentuk perkalian,
pertambahan, pengurangan dan pembagian.
Progam tersebut akan menampilkan nilai a dari 0 sampai
10.
[Link] | JAGOAN ARDUINO 26
• goto
Perintah ini digunakan untuk melompat/menuju perintah yang
telah diberi label.
goto label;
Contoh :
while(1){
digitalWrite(pin0,HIGH);
delay(1000);
digitalWrite(pin0,LOW);
delay(1000);
if(digitalRead(pin1)==HIGH);
{goto keluar;}
}
keluar:
• return
Digunakan untuk memberikan nilai balik dari sebuah fungsi.
Contoh :
int data(){
if(analogRead(A0)>100){
return 1;
else
return 0;
}
}
[Link] | JAGOAN ARDUINO 27
• continue
untuk melewati perulangan yang tersisa dari struktur looping
(do, for, atau while).
Contoh :
for(a=0;a<=255;a+10){
if(digitalRead(pin0)==HIGH){
continue;
}
digitaWrite(pwm1,a);
delay(100);
}
• break
Perintah ‘keluar’ dari pernyataan perulangan do, for, atau while.
Juga digunakan untuk mengakhiri pernyataan dalam switch –
case.
2.5 Syntax
• ; (semicolon)
Digunakan untuk mengakhiri sebuah pernyataan.
• {} (curly braces)
Bagian utama dari bahasa pemrograman C yang digunakan
dalam beberapa konstruksi yang berbeda dalam beberapa
fungsi.
• #define
Komponen C yang berguna yang memungkinkan programmer
untuk memberi nama untuk nilai konstan sebelum program
dikompilasi.
• #include
Digunakan untuk memasukkan perpustakaan atau library di
luar di sketsa progam.
[Link] | JAGOAN ARDUINO 28
2.6 Operasi Aritmatika
Operator Keterangan
= Pemberian Nilai
+ Penjumlahan
- Pengurangan
* Perkalian
/ Pembagian
% Sisa Bagian
2.7 Operator Perbandingan
Operator Keterangan
Persamaan. Jika kedua nilai yang dibandingkan sama
==
maka hasilnya ‘true’
Pertidaksamaan. Jika kedua nilai yang dibandingkan
!=
tidak sama hasilnya ‘true’
> Lebih Besar
< Lebih Kecil
>= Lebih Besar atau Sama Dengan
<= Lebih Kecil atau Sama Dengan
2.8 Operator Boolean
Operator Keterangan
&& AND
|| OR
! NOT
[Link] | JAGOAN ARDUINO 29
2.9 Operator Bitwise
Bitwise Operator = Digunakan untuk operasi bit per bit pada nilai
integer. Terdiri dari operator NOT, AND, OR, XOR, Shl, Shr. Type : int atau
char
Bitwise operator, dari namanya sudah jelas diketahui pasti
berhubungan dgn bit. Biasanya digunakan utk memanipulasi data
bertipe bit dari tipe data integer atau byte.
Operator Keterangan
<< Geser Kiri
>> Geser Kanan
& AND
| OR
^ XOR
~ NOT
2. 10 Operator Pertambahan dan Pengurangan
Operator Keterangan Contoh Keterangan
Pertambahan 1 /
++ a++ a=a+1
increment
Pengurangan 1 /
-- a-- a=a-1
decrement
2. 11 Variabel
Variabel adalah suatu wadah untuk menyimpan atau
menampung data. Nama variable dibebaskan namun ada peraturan
tersendiri seperti tidak boleh ada spasi, maksimal 32 karakter dan tidak
boleh menggunakan istilah baku dalam bahasa C arduino karena dapat
tercaji progam yang error.
[Link] | JAGOAN ARDUINO 30
Cara emndeklarasikan variable sebelum digunakan sebagai
berikut :
int nilai_1;
atau bisa diisi dengan nilai :
[tipe data][spasi][nama variable][=][nilai]
Contoh :
int nilai_1=17; //variabel bilangan tipe
integer diisi nilai 17
2.12 Tipe Data
Tipe data yang berbeda – beda memiliki kapasitas penyimpanan
yang berbeda – beda pula. Berikut tipe data tersebut :
tipe data Lebar Data Jangkauan
char 1 byte -128 s/d 127
unsigned char 1 byte 0 s/d 255
byte 1 byte 0 s/d 255
word 2 byte 0 s/d 65535
int 2 byte -32768 s/d 32767
unsigned int 2 byte 0 s/d 65535
long 4 byte -2147438648 s/d 2147438647
unsigned long 4 byte 0 s/d 4294967295
-3.4028235E+38 s/d
float 4 Byte
3.4028235E+38
[Link] | JAGOAN ARDUINO 31
2.13 Pin Input dan Output
Pada oaoan Arduino Uno terdapat 20 pin I/O yaitu 14 pin digital
dan 6 pin analog.
2.13.1 Inisialisasi Fungsi Pin I/O
Pada saat ynagn sama, sebuah pin hanya bisa memiliki satu
fungsi saja baik input maupun output. Inisialisasi ini dilakukan pada
fungsi setup(),dengan cara :
pinMode(pin,mode)
▪ Pin : nomor pin yang dikonfigurasi dari papan arduino.
▪ Mode : INPUT, INPUT_PULLUP, OUTPUT.
Sebagai Contohnya jika pin no 3 akan dibuat menjadi Inputan maka :
pinMode(3,INPUT);
Bila pin 3 menjadi Outputan maka :
pinMode(3,OUTPUT);
*penulisan besar dan kecilnya huruf sangat berpengaruh. Perhatikan
dengan seksama saat menulis progam.
2.13.2 Menulis Data Digital di Pin Output
Setelah membuat pin sebagai digital output, selanjutnya untuk
menulis atau mengeluarkan logika data digital dengan perintah sebagai
berikut :
digitalWrite(pin,value);
▪ Pin : nomor pin digital output.
▪ Value : HIGH atau LOW.
[Link] | JAGOAN ARDUINO 32
Sebagai Contoh :
pinMode(3,OUTPUT);
digitalWrite(3,HIGH);
2.13.1 Membaca Data Digital pada Pin Input
Jika sebuah pin dibuat sebagai inputan maka kita harus
menentukan aktif HIGH atau aktif LOW. Jika aktif HIGH maka dibutuhkan
resistor pulldown. Jika memilih aktif LOW, cukup dengan memanggil
resistor internal dengan pullup pada setiap pin arduino.
Sebelum melakukan pembacaan maka perlu disetting untuk Inputanya.
pinMode(pin,mode)
▪ Pin : nomor pin yang dikonfigurasi dari papan arduino.
▪ Mode : INPUT, INPUT_PULLUP.
Setelah itu baru menuliskan ini :
digitalRead(pin);
▪ Pin : nomor pin arduino yang digunakan sebagai inputan.
Contoh : Pin 3 digunakan sebagai inputan pullup.
int baca;
pinMode(3,INPUT_PULLUP);
baca = digitalRead(3);
[Link](baca);
Hasil pembacaan pin 3 maka disimpan pada variabel baca.
[Link] | JAGOAN ARDUINO 33
2.13.3 Menulis Data Analog di Pin Output PWM
Untuk menggunakan analogWrite(), tidak perlu menggunakan
pinMode () untuk mengatur pin sebagai output.
Cara menggunakanya sebagai berikut :
analogWrite(pin,value);
▪ Pin : nomor pin arduino yang digunakan sebagai outputan lihat
table 1.1.
▪ Value : nilai pwm mulai dari 0-255.
Contoh : Pin 5 digunakan sebagai outputan pwm.
analogWrite(5,100);
2.13.4 Membaca Data Analog di Pin Input ADC ( Analog to Digital
Converter )
Untuk menggunakan analogRead(), tidak perlu menggunakan
pinMode () untuk mengatur pin sebagai input.
Cara menggunakanya sebagai berikut :
analogRead(analogPin);
▪ analogPin : nomor pin arduino yang digunakan sebagai inputan
analog (A0, A1, A2, A3, A4, A5).
Contoh : Membaca nilai analog pada analogPin A0 dan ditampilkan pada
Serial.
int val = analogRead(A0);
[Link](val);
[Link] | JAGOAN ARDUINO 34
2.14 Time
2.14.1 millis()
Menghitung dengan satuan miliseconds sejak papan Arduino
mulai menjalankan program hingga 50 hari setelah itu akan kembali ke
nol begitu selanjutnya.
Contoh :
unsigned long time = millis();
[Link](time);
2.14.2 micros()
Menghitung dengan satuan microseconds sejak papan Arduino
mulai menjalankan program hingga 70 menit setelah itu akan kembali ke
nol begitu selanjutnya.
Contoh :
unsigned long time = micros();
[Link](time);
2.14.3 delay()
Jeda program untuk jumlah waktu (dalam milidetik). (Ada 1000
milidetik dalam satu detik.)
Contoh :
digitalWrite (ledPin, TINGGI); // set LED on
delay (1000); // menunggu untuk kedua
digitalWrite (ledPin, LOW); // set LED off
delay (1000); // menunggu untuk kedua
[Link] | JAGOAN ARDUINO 35
2.14.4 delayMicroseconds()
Jeda program untuk jumlah waktu (dalam mikrodetik). Ada
seribu mikrodetik di milidetik, dan satu juta mikrodetik dalam detik.
Contoh :
digitalWrite (ledPin, TINGGI); // set LED on
delayMicroseconds(50); // menunggu
digitalWrite (ledPin, LOW); // set LED off
delayMicroseconds(50); // menunggu
2.15 External Interrupts
2.15.1 attachInterrupt()
Anda harus menggunakan digitalPinToInterrupt (pin) untuk
menerjemahkan pin digital sebenarnya untuk jumlah interrupt tertentu.
Misalnya, jika Anda terhubung ke pin 3, menggunakan
digitalPinToInterrupt (3) sebagai parameter pertama yang
attachInterrupt.
Board Digital Pins Usable For
Interrupts
Uno, Nano, Mini, other 328- 2, 3
based
Mega, Mega2560, MegaADK 2, 3, 18, 19, 20, 21
Micro, Leonardo, other 32u4- 0, 1, 2, 3, 7
based
Zero all digital pins, except 4
MKR1000 Rev.1 0, 1, 4, 5, 6, 7, 8, 9, A1, A2
Due all digital pins
101 all digital pins
[Link] | JAGOAN ARDUINO 36
Sintaknya adalah :
attachInterrupt (digitalPinToInterrupt (pin), (Disarankan)
ISR, mode);
attachInterrupt (interrupt, ISR, mode); (Tidak disarankan)
attachInterrupt (pin, ISR, mode); (Hanya Arduino Due,
Zero, MKR1000,101 saja)
Parameternya :
interupsi: jumlah interrupt (int)
pin: nomor pin (ArduinoZero, MKR1000 saja)
ISR: ISR untuk panggilan ketika
interupsi terjadi; fungsi ini
harus ada parameter dan
kembali apa-apa. Fungsi ini
kadang-kadang disebut
sebagai rutin layanan
interupsi.
modus:
Interrupt harus dipicu. Empat
konstanta yang telah
ditetapkan sebagai nilai-nilai
yang valid:
• LOW untuk memicu interupsi
setiap kali pin rendah,
• CHANGE memicu interupsi
setiap kali pin perubahan
nilai
• RISING untuk memicu ketika
pin ganti dari rendah ke
tinggi,
[Link] | JAGOAN ARDUINO 37
• FALLING ketika pin ganti dari
tinggi ke rendah.
• (ArduinoZero, MKR1000 saja)
The papan Arduino Due
memungkinkan untuk:
• HIGH untuk memicu interupsi
setiap kali pin yang tinggi.
Contoh :
const byte ledPin = 13;
const byte interruptPin = 2;
volatile byte state = LOW;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(interruptPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(interruptP
in), blink, CHANGE);
}
void loop() {
digitalWrite(ledPin, state);
}
void blink() {
state = !state;
}
[Link] | JAGOAN ARDUINO 38
2.15.2 detachInterrupt()
Mematikan interupsi yang diberikan.
Sintak :
detachInterrupt (interrupt)
detachInterrupt (digitalPinToInterrupt (pin));
detachInterrupt (pin) (Arduino Karena,
Nol saja)
2.16 Interrupts
2.16.1 interrupts()
Mengaktifkan kembali interupsi (setelah dinonaktifkan oleh noInterrupts
()). Interupsi memungkinkan melakukan tugas-tugas penting tertentu di
belakang progam utama dan diaktifkan secara default. Beberapa fungsi
tidak akan bekerja saat interupsi dinonaktifkan, dan komunikasi yang
masuk dapat diabaikan.
Contoh :
void setup() {}
void loop(){
noInterrupts();
// critical, time-sensitive code here
interrupts();
// other code here
}
2.16.2 noInterrupts()
Menonaktifkan interupsi (Anda dapat mengaktifkan kembali
mereka dengan interupsi ()). Interupsi Interupsi memungkinkan
melakukan tugas-tugas penting tertentu di belakang progam utama dan
diaktifkan secara default.
[Link] | JAGOAN ARDUINO 39
Contoh :
void setup() {}
void loop(){
noInterrupts();
// critical, time-sensitive code here
interrupts();
// other code here
}
2.17 Communication
2.17.1 Serial
Komunikasi serial merupakan komunikasi dua arah dri
Transmiter dengan Receiver dan sebaliknya. Kita bisa melakukan
komunikasi serial dengan memanfaatkan pin Rx dan Tx pada arduino
maupun pada USB. Cara menggunakan serial sebagai berikut :
Contoh :
void setup() {
[Link](9600);
}
void loop(){
unsigned char a = a++;
[Link](a);
}
[Link] | JAGOAN ARDUINO 40
Bab 3. Project & Study Kasus
3.1 Project Jam Digital Menggunakan LCD 1602
Proyek ini tidak dilengkapi RTC sebagai time keeper, sehingga ketika daya
pada sistem putus, maka waktu yang ditampilkan akan ter-reset seperti
keadaan awal. Selain itu, pada proyek kali ini kita akan menggunakan
Arduino Uno R3 sebagai papan pemrosesnya.
1. Hardware yang dibutuhkan
Berikut Hardware akan diminta untuk melakukan rangkaian ini
adalah
a. Arduino UNO R3 + kabel USB
b. Breadboard
c. Kabel male female
d. LCD 1602
e. Trimpot ukuran 5K ohm 1 buah
f. Pin deret 1 buah
g. Soldit + timah
Untuk mendapatkan semuanya dengan mudah, dan tambahan
project laiinya silahkan kunjungi link berikut ini
[Link]
project-arduino-terlengkap-buku-panduan-proyek
[Link] | JAGOAN ARDUINO 41
2. Skema Rangkaian
Buatlah koneksi berikut dengan Arduino, buat seperti gambar di
bawah ya #temanindobot.
3. Software
Software yang dibutuhkan dalam pembuatan project ini adalah
- Arduino IDE,
- Library time.h,
- File [Link].
4. Library dan File Sketch
Untuk library dan file sketch akan kamilampirkan dalam satu
folder ebook ini.
[Link] | JAGOAN ARDUINO 42
3.2 Kalkulator Sederhana
Kalkulator ini menggunakan keypad sebagai input dan LCD sebagai
output nya. Project ini dapat digunakan untuk operasi matematika biasa,
yaitu penjumlahan, pengurangan, perkalian, dan pembagian.
Dikarenakan pada keypad tidak terdapat tombol operator (seperti +, -, x,
/), maka kami memanfaatkan tombol pada kolom keempat (tombol A, B,
C, D) untuk operator, tombol pagar (#) sebagai sama dengan (=), dan
tombol bintang (*) sebagai tombol clear (C). Langsung saja yuk!
Berikut pengalokasian tombol secara lengkap.
Keypad Fungsi
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
0 0
A +
B -
[Link] | JAGOAN ARDUINO 43
C X
D /
# =
* Clear
5. Hardware yang dibutuhkan
Berikut Hardware akan diminta untuk melakukan rangkaian ini
adalah
h. Arduino UNO
i. Kabel jumper
j. LCD 2x16
k. Keypad 4x4
l. Potensiometer 1 kOhm
Untuk mendapatkan semuanya dengan mudah, dan tambahan
project laiinya silahkan kunjungi link berikut ini
[Link]
project-arduino-terlengkap-buku-panduan-proyek
Dapatkan juga FREE Ongkir dan FREE E-book Terbaru
Indobot (belum pernah di publish).
6. Skema Rangkaian
[Link] | JAGOAN ARDUINO 44
Buatlah koneksi berikut dengan Arduino, buat seperti gambar di
bawah ya #temanindobot.
7. Program
#include <Keypad.h>
#include <Wire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(A0,A1,A2,A3,A4,A5);
long first = 0;
long second = 0;
double total = 0;
char customKey;
const byte ROWS = 4;
const byte COLS = 4;
[Link] | JAGOAN ARDUINO 45
char keys[ROWS][COLS] = {
{‘1’,’2',’3',’+’},
{‘4’,’5',’6',’-’},
{‘7’,’8',’9',’*’},
{‘C’,’0',’=’,’/’}
};
byte rowPins[ROWS] = {9,8,7,6}; //connect to the row
pinouts of the keypad
byte colPins[COLS] = {5,4,3,2}; //connect to the column
pinouts of the keypad
//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(keys),
rowPins, colPins, ROWS, COLS);
void setup()
{
[Link](16,2); // initialize the lcd
}
void loop()
{
customKey = [Link]();
switch(customKey)
{
case ‘0’ … ‘9’: // This keeps collecting the first value until a
operator is pressed “+-*/”
[Link](0,0);
first = first * 10 + (customKey — ‘0’);
[Link](first);
break;
case ‘+’:
first = (total != 0 ? total : first);
[Link] | JAGOAN ARDUINO 46
[Link](0,1);
[Link](“+”);
second = SecondNumber(); // get the collected the second
number
total = first + second;
[Link](0,3);
[Link](total);
first = 0, second = 0; // reset values back to zero for next
use
break;
case ‘-’:
first = (total != 0 ? total : first);
[Link](0,1);
[Link](“-”);
second = SecondNumber();
total = first — second;
[Link](0,3);
[Link](total);
first = 0, second = 0;
break;
case ‘*’:
first = (total != 0 ? total : first);
[Link](0,1);
[Link](“*”);
second = SecondNumber();
total = first * second;
[Link](0,3);
[Link](total);
first = 0, second = 0;
break;
[Link] | JAGOAN ARDUINO 47
case ‘/’:
first = (total != 0 ? total : first);
[Link](0,1);
[Link](“/”);
second = SecondNumber();
[Link](0,3);
second == 0 ? [Link](“Invalid”) : total = (float)first /
(float)second;
[Link]();
[Link](total);
first = 0, second = 0;
break;
case ‘C’:
[Link]();
total = 0;
[Link](“”);
break;
}
}
long SecondNumber()
{
while( 1 )
{
customKey = [Link]();
if(customKey >= ‘0’ && customKey <= ‘9’)
{
second = second * 10 + (customKey — ‘0’);
[Link](0,2);
[Link](second);
}
[Link] | JAGOAN ARDUINO 48
if(customKey == ‘=’) break; //return second;
}
return second;
}
3.2 LCD OLED 12C 0,96’’ 128x64 Loncat Atau Skipping? Ini
Solusinya…
Halo teman IndoBot. Kali ini kami akan berbagi tentang masalah yang
dihadapi pada LCD OLED 1306 atau LCD OLED 0.96”. Beberapa waktu
yang lalu kami mencoba mengakses LCD OLED I2C tersebut. Bukan hal
yang sulit untuk mengakses LCD OLED I2C, banyak library yang sudah
banyak dibagikan di internet, salah satunya library Adafruit SSD1306.
Wiring dari LCD OLED I2C adalah sebagai berikut.
[Link] | JAGOAN ARDUINO 49
Langsung saja pada permasalahannya yaitu adalah terdapat lompatan
piksel pada piksel vertikal atau skipping pixel. Untuk penampakan
skipping pixel LCD OLED 0,96” 128 x 64 sendiri adalah sebagai berikut.
Nah, apakah masalahnya dari programnya?? Kami menggunakan
example dari library Adafruit sendiri seperti ini.
[Link] | JAGOAN ARDUINO 50
Kemudian bagaimana solusinya? Solusinya adalah mengubah list code
pada library Adafruit SSD1306. Caranya:
1. Buka directory library Adafruit SSD1306 folder
“Adafruit_SSD1306-master”.
2. Buka file Adafruit_SSD1306.h dengan menggunakan
wordpad.
Cari text “#define SSD1306_128_64”.
1. Ganti dengan#define SSD1306_128_64
// #define SSD1306_128_32
// #define SSD1306_96_16
[Link] | JAGOAN ARDUINO 51
2. Save wordpad dengan menekan icon save atau CTRL + S.
3. Setelah itu upload ulang example Arduino dan lihat bagaimana
hasilnya?
4.
[Link] | JAGOAN ARDUINO 52
Terimakasih #temanindobot, yang telah mendownload ebook ini.
Selamat belajar dan mempraktikkan. Jika anda ingin bertanya tentang
Arduino dan robotik, anda bisa langsung menghubungi kami melalui
Whatsapp di 085731636407.
Salam,
Zamisyak Oby
Founder Indobot
Kunjungi kami di
[Link]
Oby Zamisyak Indobot
@indobotstore
0857 3163 6408
Plaza UNY Lantai 2
Jalan Affandi No. 5 Depok, Sleman,
Yogyakarta 55281
[Link] | JAGOAN ARDUINO 53
[Link] | JAGOAN ARDUINO 54