PELAJARAN 3
DASAR PEMROGRAMAN ARDUINO
TUJUAN
• Memahami struktur penulisan pemrograman pada arduino
• Mengenal tipe data pada arduino
• Memahami Penggunaan operator
STRUKTUR PEMROGRAMAN ARDUINO
Program arduino dapat dibagi menjadi tiga bagian utama yaitu :
• Struktur
• Value (variabel dan kontanta)
• Fungsi
STRUKTUR
Struktur terbagi menjadi dua fungsi utama :
• Fungsi Setup( )
Fungsi setup( ) hanya dipanggil satu kali saja saat program mulai
berjalan. Fungsi setup() berfungsi untuk melakukan inisialisasi mode
pin atau untuk memulai komunikasi serial. Fungsi setup() ini harus ada
meskipun tidak ada program yang akan dieksekusi.
• Fungsi Loop( )
Setelah menyiapkan inisialisasi pada setup(), berikutnya membuat
fungsi loop(). Seusai dengan namanya, fungsi akan mengulang program
secara terus menerus, sehingga program akan berubah dan merespon
sesuai input yang diberikan. Fungsi loop() ini akan secara aktif
mengontrol board Arduino.
Gambar 3.1 menunjukkan contoh dari program minimum dari arduino.
Setiap pembuatan program minimum harus ada fungsi setup() dan fungsi loop().
16
Gambar 3.1. Struktur program minimum Arduino
TIPE DATA
Berikut ini ditunjukkan tipe data yang dapat digunakan dalam program
arduino.
void Boolean char Unsigned byte int Unsigned word
char int
long Unsigned short float double array String-char String-
log array object
Beberapa tipe data yang perlu diketahui, ditunjukkan dalam tabel 3.1
Tabel 3.1. Tipe Data
Ukuran
Tipe Data Jangkauan Nilai
(bit)
boalean 1 0, 1 (tipe data bit hanya digunakan untuk variabel global)
char 8 -128 to 127
unsigned char 8 0 to 255
byte 8 0 to 255
int 16 -32768 to 32767
unsigned int 16 0 to 65535
word 16 0 to 65535
long 32 -2147483648 to 2147483647
unsigned long 32 0 to 4294967295
short 16 -32768 to 32767
float 32 ± 1,175e-38 to ± 3,402e38
double 32 ± 1,175e-38 to ± 3,402e38
17
VARIABEL DAN KONSTANTA
Variabel berfungsi untuk menampung nilai angka dan memberikan nama
sesuai dengan kebutuhan membuat program. Dengan menggunakan variabel,
maka nilai yang ada dapat dirubah. Hal ini berbeda dengan konstanta, dimana
nilainya tidak bisa berubah. Pemberian nama untuk variabel seharusnya sesuai
dengan deskripsinya, sehingga program yang dibuat mudah dibaca.
Sebuah variabel perlu dideklarasikan terlebih dahulu, dan bisa digunakan
sebagai penampung input yang akan disimpan atau diberi nilai awal.
Int InputVariabel = 0; // mendeklarasikan nilai variabel dengan nilai 0
InputVariabel = analog(2); // set variabel ke nilai dari pin 2 analog
Keterangan contoh program diatas, InputVariabel adalah variabel itu
sendiri. Baris pertama mendeklarasikan nilai yang menggunakan tipe integer.
Baris kedua merupakan input variabel sebagai penampung nilai hasil pembacaan
pin 2 analog. Hal ini memberikan keuntungan bahwa nilai analog pin 2 bisa
diakses dari manapun di dalam program.
Selain variabel ada juga konstanta yang digunakan untuk mempermudah
dalam membaca program. Integer contant adalah angka yang secara langsung
dapat dituliskan di sketch, misalnya 12300. Secara default, angka ini
diperlakukan sebagai int, namun kita juga bisa mengubahnya dengan U dan L.
Secara norma, konstanta integer diperlakukan sebagai bilangan basis 10
(desimal) integer, tetapi notasi khusus bisa digunakan untuk menyatakan bilangan
basis yang berbeda, hal ini bisa dilihat pada tabel 3.2.
Tabel 3.2. Format Bilangan Berbasis
Base Contoh Format Komentar
10 (decimal) 12345 - -
2 (binary) B110011 Capital ‘B’ Hanya valid jika 8 bit,
karakter yang ada 1
dan 0
8 (octal) 0234 Diawali dengan 0 Karakter yang valid 0
sampai 7
16 (hexadecimal) 0xB8 Diawali dengan 0x Karakter yang valid 0
sampai 9, A-F, a-f
18
Secara default, sebuah konstanta integer mempunyai keterbatasan dalam
hal range jangkauan nilainya. Untuk melakukan spesifikasi pada konstanta
integer dengan data tipe yang lain, maka perlu dilakukan seperti berikut ini :
• ‘u’ atau ‘U’ untuk mengubah default konstanta ke bentuk unsigned data
format. Contoh : 33u
• ‘l’ atau ‘L’ untuk mengubah default kontanta ke bentuk long data
format. Contoh : 100000L
• ‘ul’ atau ‘UL’ untuk mengubah default kontanta ke bentuk unsigned
long constant. Contoh : 32423533UL
Selain konstanta integer ada juga floating constant yang digunakan untuk
membuat kode lebih mudah dibaca. Floating point constant dilakukan saat
proses meng-compile terjadi.
Contoh :
n = .006;
FUNGSI
Fungsi adalah sekumpulan program yang diberi nama khusus, yang dapat
dieksekusi dengan cara memanggil fungsi tersebut. Setup() dan loop() dalam hal
ini juga termasuk fungsi.
Sebuah fungsi bisa dibuat sesuai dengan kebutuhannya untuk melakukan
suatu pekerjaan yang berulang ataupun bisa membuat program jadi lebih
sederhanan.
Langkah-langkah dalam membuat suatu fungsi :
➢ Deklarasikan terlebih dahulu tipe suatu fungsi.
➢ Tipe tersebut akan mendapatkan suatu nilai parameter dari fungsi tadi.
Misalnya ‘int’ untuk tipe fungsi integer. Jika tidak ada nilai yang
dikembalikan maka tipe fungsi tersebut akan kembali ke void.
➢ Setelah tipe maka diberikan nama fungsinya, dan dalam kurungnya
masukkan parameter yang akan diberikan ke dalam fungsi.
➢ Strukturnya sebagai berikut :
19
tipe functionName(parameter)
{
Pernyataan;
}
Contoh fungsi 1 : (fungsi delay Val() )
int delay Val( ) {
int v; // membuat variable lokal
v = analogRead(pot); // membaca nilai potensiometer
v /=4; // mengkonversi 0 – 1023 ke 0 – 255
return v;
}
Contoh fungsi 2 : (menghitung nilai dari k)
/* program utama */
void loop {
int i = 2;
int j = 3;
int k;
k = myMultiplyFunction(i, j); // k sekarang berisi 6
}
/* program function-nya beserta parameter x dan y, lalu dikembalikan
ke program utama */
int myMultiplyFunction(int x, int y) {
int result;
result = x * y;
return result;
}
Contoh Fungsi 3 : ( Fungsi pembacaan sensor)
int ReadSens_andCondition()
{
int I;
int sval;
for (i = 0; i < 5; i++)
{
sval = sval + analogRead(0); // sensor on analog pin 0
}
sval = sval / 5; // average (rata-rata)
sval = sval / 4; // scale to 8 bits (0 – 255)
sval = 255 – sval; // invert output
return sval;
}
20
OPERATOR
Tabel 3.3 Operator Aritmatika
Operator Aritmatika Keterangan
+ operasi penjumlahan
- operasi pengurangan
* operasi perkalian
/ operasi pembagian
% operasi sisa pembagian (modulus)
Operator *, / dan % memiliki prioritas yang lebih tinggi dibandingkan dengan
operator + dan -.
Contoh : 3 + 4 * 8 = 35 ➔ mengandung arti sama dengan 3 + (4 * 8) = 35
Tabel 3.4. Operator Pembanding
Operator
Contoh Keterangan
Kondisi
== x == y bernilai benar bila kedua data sama dan bernilai
salah bila sebaliknya
!= x != y tidak sama dengan
> x>y lebih besar dari
< x<y lebih kecil dari
>= x >= y lebih besar atau sama dengan
<= x <= y lebih kecil atau sama dengan
Operator pembanding digunakan untuk membandingkan dua buah data.
Tabel 3.5. Operator Logika
Operator Logika Keterangan
&& Operator untuk logika AND
|| Operator untuk logika OR
! Operator untuk logika NOT
Operasi logika digunakan untuk membentuk suatu logika atas dua buah kondisi
atau lebih.
21
Tabel 3.6. Operator Bitwise
Operator Bitwise Keterangan
& Operator untuk operasi AND level bit (biner)
| Operator untuk operasi OR level bit (biner)
^ Operator untuk operasi XOR level bit (biner)
~ Operator untuk operasi NOT level bit (biner)
<< Operator untuk operasi geser kiri
>> Operator untuk operasi geser kanan
Operasi bitwise hanya bekerja pada operasi logika 0 dan 1 saja.
Contoh :
x = 0x52;
y = 0x49;
Pertanyaan : x&y ➔x = 0101 0010
y = 0100 1001
x & y = 0100 0000
Sehingga x & y = 0x40
Pertanyaan : (x & y)<<1 ➔ x & y = 0100 000 bila digeser 1 kali ke kiri maka
nilai x&y akan menjadi
➔ 1000 0000
Sehingga (x & y)<<1 = 0x80
Tabel 3.7. Operator Tambahan
Asumsi variabel a =10 dan b =20
22
FLOW CONTROL
Bagian ini membicarakan tentang bagaimana menggunakan syntax yang
sering digunakan untuk melakukan pemilihan atau pengambilan keputusan.
Terdapat beberapa flow control yang akan dibahas, yaitu if, if … else, for, while,
dan do … while.
PERNYATAAN if
Pernyataan if melakukan pengetesan kondisi jika kondisi tersebut telah
terpenuhi, seperti input analog yang diterima telah berada pada kondisi tertentu.
Maka akan mengeksekusi semua statement yang berada dalam kurung jika
statement tersebut true , dan akan mengeksekusi semua perintah yang berada
dalam kurung { … }. Namun jika tidak terpenuhi akan melewati statement
tersebut.
Pernyataan if – execution sequence
False
Condition
True
Statements inside
if
23
Perbedaan bentuk dari syntax if:
Bentuk 1
If (expression)
Statement;
Bentuk 2
If (expression)
{
Block of statements;
}
Contoh program :
/* global variable definition */
Int A = 5;
Int B = 9;
void setup()
{
}
void loop()
If (expression)
{
If(A>B) /*if condition is true then execute the following statement*/
A++;
}
If ((A>B) && (B!=0)) /* if condition is true then execute the following
statement*/
{
A+=B;
B--;
}
PERNYATAAN if … else
Pernyataan if … else memberikan kejelasaan dalam menangani lebih dari
satu statement. Misalnya jika input yang terbaca adalah High maka lakukan
action A, namun jika Low lakukan action B.
24
Pernyataan if – execution sequence
False
Condition
True
Statements inside Statements inside
if else
Bentuk syntax if .. else
Contoh program :
25
PERNYATAAN IF BERSARANG
Pernyataan if bersarang adalah pernyataan if maupun if..else dimana di
dalam blok pernyataan yang akan dikerjakan terdapat pernyataan if atau if..else
lagi.
Pernyataan if … else bersarang – execution sequence
True False
Condition 1
True False
Condition 2
Body of If
True
Condition 3
Body of else if
False
Body of else
Default Statement
Rest of code
26
Bentuk syntax if ... else Bersarang
If (expression_1)
{
Block of statements;
}
else If (expression_2)
{
Block of statements;
}
.
.
.
else
{
Block of statements;
}
Contoh code :
/* global variable definition */
Int A = 5;
Int B = 9;
Int C = 15;
void setup()
{
}
void loop()
{
If(A>B) /*if condition is true then execute the following statement*/
{
A++;
}
else if (( A==B) || (B < C)) /*if condition is true then execute the following
statement */
{
C = B*A;
}
else
C++;
}
27
PERNYATAAN SWITCH
Pernyatan if..else dapat diganti dengan pernyataan switch. Pernyataan
switch digunakan untuk melakukan pengambilan keputusan terhadap banyak
kemungkinan.
Pernyataan Switch – execution sequence
Switch
( Conditional expiration)
True
Case 1 Block of
TextExpiration Statements
False
Case 2 True Block of
TextExpiration Statements
False
True
Case 3 Block of
TextExpiration Statements
False
Default
Block Statements
Bentuk Syntax Pernyataan Switch
28
Contoh code:
Catatan :
• Switch hanya dapat memeriksa variabel yang memiliki sebuah konstanta,
sedangkan if dapat memeriksa persyaratan perbandingan (lebih besar,
lebih kecil dan sebagainya).
• Tidak ada konstanta yang sama di dalam sebuah switch.
• Perintah switch jika dimanfaatkan dengan tepat akan memberikan hasil
yang lebih baik bila dibandingkan dengan perintah if..else.
LOOPS
Dalam bahasa pemogramman C yang termasuk dalam loop adalah sebagai
berikut :
➢ For
➢ While
➢ Do .. while
➢ Nested
For
Pernyataan for digunakan untuk melakukan perulangan yang terdapat pada
statement di dalam {}. Untuk bisa melakukan perulangan maka terdapat sebuah
counter yang akan menaikkan hitungan secara satu per satu, dan memberikan
tanda kapan perulangan akan berakhir. Pernyataan for sangat berguna untuk
operasi yang memerlukan perulangan dan sering digunakan bersama dengan
29
sekelompok array, yang biasanya digunakan untuk menyimpan koleksi data atau
pin.
Pernyataan for – execution sequence
Counter = 2
True
false
Exit for loop Counter >= 9
True
Counter = counter + 1
Body of for loop
Bentuk syntax for
Contoh code :
WHILE
Perulangn menggunakan while akan terus berlangsung terus menerus
sampai ekspresi dalam kurung tutup () bernilai false. Agar perulangan bisa
berhenti maka harus ada sesuatu yang bisa mengubah variable, atau perulangan
while tidak akan pernah berhenti. Sesuatu yang dimaksud bisa berasa dalam kode
pemrograman, seperti variable counter menambah satu nilai variable, atau
masukan dari luar seperti sensor.
30
Pernyataan loop execution sequence
false
Exit while loop Test expiration
True
Body of if
Bentuk syntax while
Contoh code :
Var = 0;
While (var < 200) {
// do something repetitive 200 times
Var++;
}
Do … While
Perulangan do mempunyai cara kerja yang sama dengan perulangan while,
dengan catatan pada perulangan do melakukan test kondisi pada bagian terakhir.
Karena model pengecekan pada saat terakhir maka perulangan do akan selalu
melakukan eksekusi program, setidaknya sekali.
Betuk syntax pernyataan do … while
Contoh code :
31
do
{
delay(50);
x = readSensors(); // check the sensors
}
while (x < 100); // loops if is less than 100
NESTED LOOP
Pemograman bahasa C memyediakan kepada kita untuk dapat
menggunakan sebuah loop didalam loop lainnya.
Bentuk syntaxnya :
Contoh code :
32