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 PROGRAM -> COMPILE PROGRAM -> UPLOAD PROGRAM
Program Arduino dapat dibagi dalam tiga bagian utama: struktur, nilai-nilai (variabel dan konstanta), dan fungsi.
• 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(){
// ...
}
|
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 ()
{
Serial.begin(9600); pinMode(buttonPin, INPUT);
}
loop()
{
if (digitalRead (buttonPin) == HIGH)
Serial.write ( 'H');
else
Serial.write ( '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.
• //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*/
|
Adapun sintaks lain yang ada di dalam arduino seperti
• ; (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.
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
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
|
float
|
4 Byte
|
-3.4028235E+38 s/d3.4028235E+38
|
2.1.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. Cara memndeklarasikan 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
operator yang ada di arduino sama saja dengan operator yang ada di pemograman yang lainnya seperti operator aritmatika, operator perbandingan, operator boolean, operator bitwise dan operator penambahan dan pengurangan.
Operator
|
Keterangan
|
=
|
Pemberian Nilai
|
+
|
Penjumlahan
|
-
|
Pengurangan
|
*
|
Perkalian
|
/
|
Pembagian
|
%
|
Sisa Bagian
|
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
|
|
Operator
|
Keterangan
|
&&
|
and
|
||
|
Or
|
!
|
Not
|
2.5.1. 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.5.2. Operator Pertambahan dan Pengurangan
Operator
|
Keterangan
|
Contoh
|
Keterangan
|
++
|
Pertambahan 1/increment
|
a++
|
A=a+1
|
--
|
Pengurangan 1/ decrement
|
a--
|
A=a-1
|
2.2.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 – 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
}
|
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;
}
|
• 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)
}
|
2.3.Perulangan
• while
Perulangan ini digunakan untuk membuat perulangan yang tidak terbatas selama kondisi dalam while benar.
while(kondisi){
//pernyataan/perintah
}
|
Contoh :
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 :
Perulangan pertambahan a+1 akan dilakukan sampai nilai a=200.
• for
Digunakan untuk perulangan yang sifatnya terbatas.
for(inisialisasi;kondisi;step){
//pernyataan/perintah
}
|
Contoh :
for(a=0;a<=10;a++){
Serial.println(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.
• 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;
}
}
|
• 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.