Pemrograman Mikrokontroller Arduino
Structuer Pemrograman
1. Structure
Structure dasar dari bahasa pemrograman arduino adalah sederhana yang
hanya terdiri dari dua bagian.
void setup( )
{
// Statement;
}
void loop( )
{
// Statement;
}
Dimana setup () bagian untuk inisialisasi yang hanya dijalankan sekali di
awal program, sedangkan loop () untuk mengeksekusi bagian program yang akan
dijalankan berulang-ulang untuk selamanya.
2. Setup ( )
Fungsi setup() hanya dipanggil satu kali ketika program pertama kali di
jalankan. Ini digunakan untuk pendefinisian mode pin atau memulai komunikasi
serial. Fungsi setup() harus diikutsertakan dalam program walaupun tidak ada
statement yang di jalankan.
void setup()
{
pinMode(13,OUTPUT); // mengset ‘pin’ 13 sebagai output
}
3. Loop
Setelah melakukan fungsi setup() maka secara langsung akan melakukan
fungsi loop() secara berurutan dan melakukan instruksi-instruksi yang ada dalam
fungsi loop().
void loop()
{
digitalWrite(13, HIGH); // nyalakan ‘pin’ 13
delay(1000); // pause selama 1 detik
digitalWrite(13, LOW); // matikan ‘pin’ 13
delay(1000); /// pause selama 1 detik
4. Function
Function (fungsi) adalah blok pemrograman yang mempunyai nama dan
mempunyai statement yang akan dieksekusi ketika function di panggil.
Cara pendeklarasian function
type functionName(parameters)
{
// Statement;
}
Contoh:
int delayVal()
{
int v; // membuat variable ‘v’ bertipe integer
v = analogRead(pot); // baca harga potentiometer
v /= 4; // konversi 0-1023 ke 0-255
return v; // return nilai v
Pada contoh di atas fungsi tersebut memiliki nilai balik int (integer),
karena jika tidak menghendaki adanya nilai balik maka type function harus void.
5. { } Curly Braces
Curly brace mendefinisikan awal dan akhir dari sebuah blok fungsi.
Apabila ketika memprogram dan progremer lupa memberi curly brace tutup maka
ketika di-compile akan terdapat laporan error.
6. ; Semicolon
Semicolon harus di berikan pada setiap statement program yang kita buat
ini merupakan pembatas setiap statement program yang di buat.
7. /*…*/ blok comment
Semua statement yang ditulis dalam block comments tidak akan
dieksekusi dan tidak akan di compile sehingga tidak mempengaruhi besar
program yang dibuat untuk di masukkan dalam board arduino.
8. // Line Comment
Sama halnya dengan block comments, line comments pun sama hanya saja
yang dijadikan komentar adalah perbaris.
Variable
1. Variable
Variable adalah sebuah penyimpan nilai yang dapat di gunakan dalam
program. Variable dapat diubah sesuai dengan instruksi yang dibuat. Ketika
mendeklarisikan variable harus diikutsertakan type variable serta nilai awal
variable.
Type variableName = 0;
Contoh ;
Int inputVariable = 0; // mendefinisikan sebuah variable bernama
inputVariable dengan nilai awal 0
inputVariable = analogRead(2); // menyimpan nilai yang ada di analog
pin 2 ke inputVariable.
2. Variable Scope
Sebuah variable dapat di deklarasikan pada awal program sebelum void
setup (), secara local di dalam sebuah function, dan terkadang di dalam sebuah
block statement pengulangan. Sebuah variable global hanya satu dan dapat di
gunakan pada semua block function dan statement di dalam program. Variable
global dideklarasikan pada awal program sebelum fungstion setup (). Sebuah
variable local dideklarasikan di setiap block function atau di setiap block
statement pengulangan dan hanya dapat di gunakan pada block yang bersangkutan
saja.
Contoh ;
void setup()
{
// no setup needed
}
void loop()
{
for (int i=0; i<20;) // 'i' hanya dapat di gunakan dalam pengulangan saja
{
i++;
}
float f; // 'f' sebagai variable local
}
Data Type
1. Byte
Tipe byte dapat menyimpan 8-bit nilai angka bilangan asli tanpa koma.
Byte memiliki range 0 – 255.
Byte biteVariable = 180; // mendeklarasikan ‘biteVariable’
sebagai type byte
2. Integer
Integer adalah tipe data yang utama untuk menyimpan nilai bilangan bulat
tanpa koma. Penyimpanan integer sebesar 16-bit dengan range 32.767 sampai -
32.768.
Int integerVariable = 1600; // mendeklarasikan ‘integerVariable’ sebagai
type integer
3. Long
Perluasan ukuran untuk long integer, penyimpanan long integer sebesar
32-bit dengan range [Link] sampai -[Link].
Long longVariable = 500000; // mendeklarasikan ‘longVariable’ sebagai
type long.
4. Float
Float adalah tipe data yang dapat menampung nilai decimal, float
merupakan penyimpan yang lebih besar dari integer dan dapat menyimpan sebesar
32-bit dengan range 3.4028235E+38 sampai -3.4028235E+38
Float floatVariable = 3.14; // mendeklarasikan ‘floatVariable’ sebagai
type float.
5. Array
Array adalah kumpulan nilai yang dapat di akses dengan index number,
nilai yang terdapat dalam array dapat di panggil dengan cara menuliskan nama
array dan index number. Array dengan index 0 merupakan nilai pertama dari
array. Array perlu di deklarasikan dan kalau perlu di beri nilai sebelum di
gunakan.
Int arraysName[] = {nilai0, nilai1, nilai2 . . . }
Contoh penggunaan array:
Int arraySaya[] = {2,4,6,8,10}
x = arraySaya[5]; // x sekarang sama dengan 10
Operator Aritmetic
1. Aritmetic
perator aritmatik terdiri dari penjumlahan, pengurangan, pengkalian, dan
pembagian.
y = y + 3;
x = x - 8;
i = i * 5;
r = r / 9;
dalam menggunakan operan aritmatik harus hati-hati dalam menentukan
tipe data yang digunakan jangan sampai terjadi overflow range data.
2. Compound Ansignments
Compound assignments merupakan kombinasi dari aritmatic dengan
sebuah variable. Ini biasanya dipakai pada pengulangan.
x ++; // sama seperti x = x + 1 atau menaikan nilai x sebesar 1
x --; // sama seperti x = x - 1 atau mengurangi nilai x sebesar 1
x += y; // sama seperti x = x + y
x -= y; // sama seperti x = x – y
x *= y; // sama seperti x = x * y
x /= y; // sama seperti x = x / y
3. Comparason
Statement ini membadingkan dua variable dan apabila terpenuhi akan
bernilai 1 atau true. Statement ini banyak digunakan dalam operator bersyarat.
x == y; // x sama dengan y
x != y; // x tidak sama dengan y
x < y; // x leboh kecil dari y
x > y; // x lebih besar dari y
x <= y; // x lebih kecil dari sama dengan y
x >= y; // x lebih besar dari sama dengan y
4. Logic Operator
Operator logical digunakan untuk membandingkan 2 expresi dan
mengembalikan nilai balik benar atau salah tergantung dari operator yang
digunakan. Terdapat 3 operator logical AND, OR, dan NOT, yang biasanya
digunakan pada if statement.
Contoh penggunaan:
Logical AND
If ( x > 0 && x < 5) // bernilai benar apabila kedua operator pembanding
terpenuhi
Logical OR
If ( x > 0 || y > 0) // bernilai benar apabila salah satu dari operator
pembanding terpenuhi
Logical NOT
If ( !x > 0 ) // benilai benar apabila ekspresi operator salah
Konstanta
Arduino mempunyai beberapa variable yang sudah di kenal yang kita
sebut konstanta. Ini membuat memprogram lebih mudah untuk di baca. Konstanta
di kelasifikasi berdasarkan group.
1. True/False
Merupakan konstanta Boolean yang mendifinisikan logic level. False
mendifinisikan 0 dan True mendifinisikan 1.
If ( b == TRUE );
{
//doSomething
}
2. High/Low
Konstanta ini mendifinisikan aktifitas pin HIGH atau LOW dan di
gunakan ketika membaca dan menulis ke digital pin. HIGH di definisikan sebagai
1 sedangkan LOW sebagai 0.
digitalWrite( 13, HIGH );
3. Input/Output
Konstanta ini digunakan dengan fungsi pinMode() untuk mendifinisikam
mode pin digital, sebagai input atau output
pinMode( 13, OUTPUT );
Flow Control
1. If
If Operator, if mengtest sebuah kondisi seperti nilai analog sudah berada di
bawah nilai yang kita kehendaki atau belum, apabila terpenuhi maka akan
mengeksekusi baris program yang ada dalam brackets kalau tidak terpenuhi maka
akan mengabaikan baris program yang ada dalam brackets.
If ( someVariable ?? value )
{
//DoSomething;
}
2. If...else
Operator if…else mengtest sebuah kondisi apabila tidak sesuai dengan
kondisi yang pertama maka akan mengeksekusi baris program yang ada di else.
If ( inputPin == HIGH )
{
//Laksanakan rencana A;
}
Else
{
//Laksanakan rencana B;
}
3. For
Operator for digunakan dalam blok pengulangan tertutup.
For ( initialization; condition; expression )
{
//doSomethig;
}
4. While
Operator while akan terus mengulang baris perintah yang ada dalam
bracket sampai ekspresi sebagai kondisi pengulangan benilai salah
While ( someVariable ?? value )
{
//doSomething;
}
5. Do….while
Sama halnya dengan while() hanya saja pada operator Do…while tidak
melakukan pengecekan pada awal tapi di akhir, sehingga otomatis akan
melakukan satu kali baris perintah walaupun pada awalnya sudah terpenuhi.
Do
{
//doSomething;
}
While ( someVariable ?? value );
Digital I/O
Input / Output Digital pada breadboard arduino ada 14, pengalamatnya 0 -
13, ada saat tertentu I/O 0 dan 1 tidak bisa di gunakan karena di pakai untuk
komunikasi serial, sehingga harus hati-hati dalam pengalokasian I/O.
1. Pin Mode (Pin, Mode)
Digunakan dalam void setup() untuk mengkonfigurasi pin apakah sebagai
Input atau Output. Arduino digital pins secara default di konfigurasi sebagai input
sehingga untuk merubahnya harus menggunakan operator pinMode(pin, mode).
pinMode (pin, OUTPUT); // mengset pin sebagai output
digitalWrite(pin, HIGH); // pin sebagai source voltage
2. Digital Read (pin)
membaca nilai dari pin yang kita kehendaki dengan hasil HIGH atau
LOW.
Value = digitalRead(pin); // mengset ‘value’ sama dengan pin
3. Digital Write (pin, Value)
Digunakan untuk mengset pin digital. Pin digital arduino mempunyai 14 (
0 – 13 ).
digitalWrite ( pin, HIGH ); // set pin to HIGH
Analog I/O
Input / Ouput analog pada breadboard arduino ada 6 pengalamatnya 0 – 5
1. Analog Read (pin)
Membaca nilai pin analog yang memiliki resolusi 10-bit. Fungsi ini hanya
dapat bekerja pada analog pin (0-5). Hasil dari pembacaan berupa nilai integer
dengan range 0 sampai 1023.
Value = analogRead(pin); // mengset ‘value’ sama dengan nilai analog
pin
2. Analog Write (pin, value)
Mengirimkan nilai analog pada pin analog.
analogWrite(pin, value); // menulis ke pin analog
Time
1. Delay (ms)
Menghentikan program untuk sesaat sesuai dengan yang di kehendaki,
satuanya dalam millisecond.
Delay(1000); // menunggu selama satu detik.
2. Millis ()
Mengembalikan nilai dalam millisecond dihitung sejak arduino board
menyala. Penapungnya harus long integer.
Value = millis(); // set ‘value’ equal to millis()
Math
1. Min (x,y)
Membadingkan 2 variable dan akan mengembalikan nilai yang paling
kecil.
value = min(value, 100); // set ‘value’ sebagai nilai yang paling kecil
dari kedua nilai
2. Max (x,y)
Max merupakan kebalikan dari min.
value = max(value, 100); //set ‘value’ sebagai nilai yang paling besar
dari kedua nilai
Serial
1. [Link] (rate)
Statement ini di gunakan untuk mengaktifkan komunikasi serial dan
mengset baudrate.
void setup()
{
[Link](9600); //open serial port and set baudrate 9600 bps
2. Serial Printing (data)
Mengirimkan data ke serial port.
[Link](100); // mengirimkan 100