Arduino
adalah sebuah nama produk design system minimum mikrokontroler yang di
buka secara bebas (open source). Kelebihan dari arduino adalah dia mempunya bahasa
pemroraman sendiri, mirip bahasa C. Arduino dilengkapi dengan boot loader yang
sudah di tanam di chip microcontroller sebelum di jual ke pasaran, si bootloader
ini yang menyembatani antara software compiler arduino dengan microcontroller.
Arduino membuka semua sourcenya mulai dari diagram rangkaian, layout
pcb, software compiler (gratis tinggal bisa download), berikut bootloader di
kasih juga, jadi sebetulnya kita bisa membuat cloningnya sendiri.
Jadikan rahasia umum
Arduino
merupakan system minimum yang sangat modular, dia dapat ditambahkan
dengan board aplikasi arduino lain yang di kehendaki fungsinya, lihat
http://shieldlist.org/ board aplikasi tambahan yang dapat di gabungkan
dengan breadboard arduino. Sudah banyak aplikasi yang telah dibuat
menggunakan arduino, lihat http://www.freeduino.org/.
Link-link di bawah juga sangat membatu loh:
http://www.arduino.cc
http://www.practicalarduino.com
http://www.arduinofun.com
http://blog.makezine.com/blog/archive/arduino
http://www.instructables.com
Install Software arduino di ubuntu
Baiklah
kita sampai juga pada pembahasan inti yaitu memprogram arduino di linux
khususnya yang di bahas di sini di linux ubuntu. Ya ke betulan bacaan
ini merupakan prasyarat naik tingkat dari niebi ke techi di POSS-IGOS
ITB Bandung. Untuk membuat program atau mengcoding tentu saja kita harus
punya dulu compilernya kita bisa download langsung di ubuntu software
center nama compilernya Arduino IDE atau lewat terminal dengan cara
apt-get install arduino. Yang penting kalau sudah install compiler anda
harus cek apakah sudah ada jre,gcc-avr, dan avr-libc.
yah ketentuan lebih lanjut kalau ga bisa terinstall baca di + updatennya juga ada http://www.arduino.cc/playground/Linux/Ubuntu.
Pemrograman arduino
Baiklah
kita akan bahas bahasa pemrogramannya, seperti bahasa pemrograman
tingkat menegah pada umumnya arduino pun sama memiliki alur algoritma
yang mirip yang beda adalah cara penulisan sintaknya.
Struktur pemrograman
structure
Structure dasar dari bahasa pemrograman arduino itu sederhana 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.
setup()
Fungsi
setup() hanya di panggil satu kali ketika program pertama kali di
jalankan. Ini digunakan untuk pendefinisian mode pin atau memulai
komunikasi serial. Fungsi setup() harus di ikut sertakan dalam program
walaupun tidak ada statement yang di jalankan.
void setup()
{
pinMode(13,OUTPUT); // mengset ‘pin’ 13 sebagai output
}
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
}
function
Function
(fungsi) adalah blok pemrograman yang mempunyai nama dan mempunyai
statement yang akan di eksekusi ketika function di panggil. Fungsi void
setup() dan void loop() telah di bahas di atas dan pembuatan fungsi yang
lain akan di bahas selanjutnya.
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 kalau tidak menghendaki adanya nilai balik maka type function
harus void.
{ } 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.
; semicolon
Semicolon
harus di berikan pada setiap statement program yang kita buat ini
merupakan pembatas setiap statement program yang di buat.
/*...*/ blok comment
Semua
statement yang di tulis dalam block comments tidak akan di eksekusi dan
tidak akan di compile sehingga tidak mempengaruhi besar program yang di
buat untuk di masukan dalam board arduino.
// line comment
Sama halnya dengan block comments, line coments pun sama hanya saja yang di jadikan komen adalh perbaris.
Variable
Variable
adalah sebuah penyimpan nilai yang dapat di gunakan dalam program.
Variable dapat di rubah sesuai dengan instruksi yang kita buat. Ketika
mendeklarisikan variable harus di ikut sertakan 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
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 di deklarasikan pada awal program sebelum fungstion setup().
Sebuah variable local di deklarasikan di setiap block function atau di setiap block statement pengulangan dan hanya dapat di gunakan pada block yang bersangkutan saja.
Contoh penggunaan:
int value; // ‘value’ adalah variable global dan dapat di gunakan pada semua block funtion
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
byte
type byte dapat menyimpan 8-bit nilai angka bilangan asli tanapa koma. Byte memiliki range 0 – 255.
Byte biteVariable = 180; // mendeklarasikan ‘biteVariable’ sebagai type byte
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
long
Perluasan ukuran untuk long integer, penyimpanan long integer sebesar 32-bit dengan range 2.147.483.647 sampai -2.147.483.648
Long longVariable = 500000; // mendeklarasikan ‘longVariable’ sebagai type long
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
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
aritmetic
operator 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.
compound assignments
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
comparison
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
Logic operator
operator
logical digunakan untuk membandingkan 2 expresi dan mengembalikan nilai
balik benar atau salah tergantung dari operator yang di gunakan.
Terdapat 3 operator logical AND,OR, dan NOT, yang biasanya di gunakan
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.
true/false
Merupakan konstanta Boolean yang mendifinisikan logic level. False mendifinisikan 0 dan True mendifinisikan 1.
If ( b == TRUE );
{
//doSomething
}
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 );
input/output
Konstanta ini digunakan dengan fungsi pinMode() untuk mendifinisikam mode pin digital, sebagai input atau output.
pinMode( 13, OUTPUT );
Flow control
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;
}
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;
}
for
Operator for digunakan dalam blok pengulangan tertutup.
for ( initialization; condition; expression )
{
//doSomethig;
}
while
Operator
while akan terus mengulang baris perintah yang ada dalam bracket sampai
ekspresi sebagai kondisi pengulangan benilai salah.
While ( someVariable ?? value )
{
//doSomething;
}
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.
pinMode(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
digitalRead(pin)
membaca nilai dari pin yang kita kehendaki dengan hasil HIGH atau LOW.
Value = digitalRead(pin); // mengset ‘value’ sama dengan pin
digitalWrite(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
analogRead(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
analogWrite(pin, value)
mengirimkan nilai analog pada pin analog.
analogWrite(pin, value); // menulis ke pin analog
Time
delay(ms)
Menghentikan program untuk sesaat sesuai dengan yang di kehendaki, satuanya dalam millisecond.
delay(1000); // menunggu selama satu detik
millis()
Mengembalikan nilai dalam millisecond dihitung sejak arduino board menyala. Penapungnya harus long integer.
Value = millis(); // set ‘value’ equal to millis()
Math
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
max(x,y)
Max merupakan kebalikan dari min.
value = max(value, 100); //set ‘value’ sebagai nilai yang paling besar dari kedua nilai
Random
randomSeed(seed)
random(min,max)
Serial
Serial.begin(rate)
Statement ini di gunakan untuk mengaktifkan komunikasi serial dan mengset baudrate.
void setup()
{
Serial.begin(9600); //open serial port and set baudrate 9600 bps
}
Serial.println(data)
Mengirimkan data ke serial port.
Serial.println(100); // mengirimkan 100
Artikel
ini di COPAS dari http://saung.igoscenter.org/Kupas_tuntas_arduino,
saya pernah bergabung dengan IGOS beberapa bulan, dikarenakan kesibukan
akhirnya ga bisa lagi sedot ilmu dari para master yang keren-keren dan
baik-baik, waktu itu belum sempet mempelajari arduino di IGOS, jadi ga
sempet sedot pengetahuan lebih banyak soal arduino disana. Salam buat
Mas Dwi, HP saya rusak jadi nomor dan semua kontak hilang, tambah jauh
ni ketinggalannya saya, hahaha...., kayanya dah cukup komplit deh buat
pemula, kalo untuk window ga terlalu susah tinggal instal driver aja,
driver ada difolder arduino itu sendiri, untuk dapetin IDE arduino
terbaru silahkan download disini..
Khusus buat pengguna ANDROID bisa menggunakan aplikasi gratis secara offline.
Contoh sederhana dari beberapa kode, diagram dan gambar.
https://play.google.com/store/apps/details?id=com.coderzheaven.arduino_examples
Menjelaskan mengenai Library Arduino.
https://play.google.com/store/apps/details?id=com.coderzheaven.arduino_libraries
Buat pemula yang baru mengenal Arduino dan elektronik.
https://play.google.com/store/apps/details?id=air.com.flashgamer.ArduinoCompanion
Panduan sederhana buat membuat project Arduino bagi pemula.
https://play.google.com/store/apps/details?id=com.schogini.ArduinoCookLite
Sampai ketemu di tulisan-tulisan saya selanjutnya.
No comments:
Post a Comment