• Home
  • About Me
  • Katalog
  • Video
  • Daftar Isi

Selasa, 08 Desember 2015

Pemrograman Mikrokontroler Arduino

          Untuk melakukan pemrograman mikrokontroler ARDUINO kita harus memahami terlebih dahulu istilah-istilah dalam pemrograman tersebut. Istilah-istilah tersebut antara lain adalah :

A. Struktur
          Struktur adalah susunan rutin setiap program Arduino (biasa disebut sketch) yang harus mempunyai dua buah fungsi yaitu :
1. Void Setup ( ) { }
          Semua kode didalam kurung kurawal akan dijalankan hanya satu kali ketika program Arduino dijalankan untuk pertama kalinya.

2. Void Loop ( ) { }
          Fungsi ini akan dijalankan setelah setup (fungsi void setup) selesai. Setelah dijalankan satu kali fungsi ini akan dijalankan lagi, dan lagi secara terus menerus sampai catu daya (power) dilepaskan.

B. Syntax
          Syntax adalah simbol atau kode bahasa C yang harus dituliskan sebagai program Arduino. Berikut ini adalah elemen bahasa C yang dibutuhkan untuk format penulisan.
1. // (komentar satu baris)
          Terkadang simbol ini diperlukan untuk memberi catatan pada diri sendiri apa arti dari kode-kode yang dituliskan. Cukup menuliskan dua buah garis miring dan apapun yang kita ketikkan dibelakangnya akan diabaikan oleh program.

2. /* */ (komentar banyak baris)
          Jika sobat blogger mempunyai banyak catatan, maka hal itu dapat dituliskan pada beberapa baris sebagai komentar. Semua hal yang terletak di antara dua simbol tersebut akan diabaikan oleh program.

3. { } (kurung kurawal)
          Simbol ini digunakan untuk mendefinisikan kapan dimulai dan berakhirnya blok program (digunakan juga pada fungsi dan pengulangan).

4. ; (titik koma)
          Setiap baris kode harus diakhiri dengan tanda titik koma (jika ada titik koma yang hilang maka program tidak akan bisa dijalankan).

C. Variabel
          Variabel adalah faktor intruksi yang harus dituliskan agar menjadi sebuah program, dimana sebuah program secara garis besar dapat didefinisikan sebagai instruksi untuk memindahkan bilangan-bilangan dengan cara yang cerdas. Variabel-variabel yang digunakan untuk memindahkan bilangan tersebut adalah sebagai berikut:
1. int (integer)
         Variabel yang digunakan untuk menyimpan angka dalam 2 byte (16 bit). Tidak mempunyai angka desimal dan menyimpan nilai dari -32,768 dan 32,767.

2. long (long)
          Variabel yang digunakan ketika integer tidak mencukupi lagi. Memakai 4 byte (32 bit) dari memori (RAM) dan mempunyai rentang dari -2,147,483,648 dan 2,147,483,647.

3. boolean (boolean)
          Variabel sederhana yang digunakan untuk menyimpan nilai TRUE (benar) atau FALSE (salah). Sangat berguna karena hanya menggunakan 1 bit dari RAM.

4. float (float)
          Variabel yang digunakan untuk angka desimal (floating point). Memakai 4 byte (32 bit) dari RAM dan mempunyai rentang dari -3.4028235E+38 dan 3.4028235E+38.

5. char (character)
          Variabel yang digunakan untuk menyimpan 1 karakter menggunakan kode ASCII (misalnya ‘A’ = 65). Hanya memakai 1 byte (8 bit) dari RAM.

D. Operator Matematika
          Operator matematika adalah operator yang digunakan untuk memanipulasi bilangan (bekerja seperti matematika yang sederhana). Operator tersebut seperti berikut ini.
1. = (assignment)
          Membuat sesuatu menjadi sama dengan nilai yang lain (misalnya: x = 10 * 2, x sekarang sama dengan 20).

2. % (modulo)
          Menghasilkan sisa dari hasil pembagian suatu angka dengan angka yang lain (misalnya: 12 % 10, akan menghasilkan angka 2).

3. + (penjumlahan)
4. - (pengurangan)
5. * (perkalian)
6. / (pembagian)

E. Operator Pembanding
          Operator pembanding adalah operator yang digunakan untuk membandingkan nilai logika. Operator tersebut seperti berikut ini.
1. = = (equal to)
         Sama dengan (misalnya: 12 = = 10 adalah FALSE (salah) atau 12 = = 12 adalah TRUE (benar).

2. ! = (not equal to)
          Tidak sama dengan (misalnya: 12 ! = 10 adalah TRUE (benar) atau 12 ! = 12 adalah FALSE (salah).

3. < (less than)
          Lebih kecil dari (misalnya: 12 < 10 adalah FALSE (salah) atau 12 < 12 adalah FALSE (salah) atau 12 < 14 adalah TRUE (benar).

4. > (greater than)
          Lebih besar dari (misalnya: 12 > 10 adalah TRUE (benar) atau 12 > 12 adalah FALSE (salah) atau 12 > 14 adalah FALSE (salah).

F. Struktur Kontrol
          Struktur kontrol adalah susunan program yang diatur, karena suatu program sangat tergantung pada pengaturan apa yang akan dijalankan berikutnya, berikut ini adalah sebagian elemen dasar pengaturan (dan masih banyak lagi yang lainnya).
1. if....else, dengan format seperti berikut ini :
if (kondisi) { }
else if (kondisi) { }
else { }
          Dengan struktur seperti diatas program akan menjalankan kode yang ada di dalam kurung kurawal jika kondisinya TRUE, dan jika tidak (FALSE) maka akan diperiksa apakah kondisi pada else if dan jika kondisinya FALSE maka kode pada else yang akan dijalankan.

2. for, dengan format seperti berikut ini :
for (int i = 0; i < # pengulangan; i + +) { }
          Digunakan bila anda ingin melakukan pengulangan kode di dalam kurung kurawal beberapa kali, ganti # pengulangan dengan jumlah pengulangan yang diinginkan. Melakukan penghitungan ke atas dengan i++ atau ke bawah dengan i--, atau gunakan sembarang variabel.

G. Digital
          Bilangan digital yang digunakan untuk membuat program Arduino, yaitu sebagai berikut:
1. pinMode (pin, mode)
          Digunakan untuk menetapkan mode dari suatu pin, pin adalah nomor pin yang akan digunakan dari 0-19 (pin analog 0-5 adalah 14-19). Mode yang bisa digunakan adalah INPUT atau OUTPUT.

2. digitalWrite (pin, value)
          Ketika sebuah pin ditetapkan sebagai OUTPUT, pin tersebut dapat dijadikan HIGH (ditarik menjadi 5 volts) atau LOW (diturunkan menjadi ground).

3. digitalRead (pin)
          Ketika sebuah pin ditetapkan sebagai INPUT maka anda dapat menggunakan kode ini untuk mendapatkan nilai pin tersebut apakah HIGH (ditarik menjadi 5 volts) atau LOW (diturunkan menjadi ground).

H. Analog
          Arduino adalah perangkat digital tetapi mempunyai kemampuan untuk beroperasi dalam bidang analog (tentunya menggunakan cara). Berikut ini merupakan cara untuk menghadapi hal yang bukan digital.
1. analogWrite (pin, value)
          Beberapa pin pada Arduino mendukung PWM (pulse width modulation) yaitu pin 3, 5, 6, 9, 10, 11. Ini dapat merubah pin hidup (on) atau mati (off) dengan sangat cepat, sehingga membuatnya dapat berfungsi layaknya keluaran analog. Value (nilai) pada format kode tersebut adalah angka antara 0 (0% duty cycle ~ 0V) dan 255 (100% duty cycle ~ 5V).

2. analogRead (pin)
          Ketika pin analog ditetapkan sebagai INPUT anda dapat membaca keluaran voltasenya. Keluarannya berupa angka antara 0 (untuk 0 volts) dan 1024 (untuk 5 volts).

I. Aplikasi Program
1. Project LED Blink (Flip-Flop)
void setup( ) {
// inisialisasi pin 13 digital sebagai output
pinMode(13, OUTPUT);
}
// looping
void loop( ) {
digitalWrite(13, HIGH); // led HIDUP
delay(1000); // waktu tunda 1000 ms
digitalWrite(13, LOW); // led MATI
delay(1000); // waktu tunda 1000 ms
}

2.   Project LCD Hello Word


// header untuk lcd
#include <LiquidCrystal.h>
// inisialisasi pin yang digunakan
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup( ) {
// jenis lcd yang digunakan
lcd.begin(16, 2);
// karakter yang akan ditampilkan
lcd.print("hello, world!");
}
void loop( ) {
// setting lokasi karakter (kolom,baris)
lcd.setCursor(0, 1);
// tampil angka ++ selama 1 detik.
lcd.print(millis( )/1000);
}
Sekarang coba ganti void loop( ) diatas dengan syntax dibawah ini, amati perubahan yang terjadi.
void loop( ) {
lcd.noBlink( );
delay(3000);
lcd.blink( );
delay(3000);
}
Atau
void loop() {
lcd.noCursor( );
delay(500);
lcd.cursor( );
delay(500);
}
Atau
void loop( ) {
lcd.noDisplay();
delay(500);
lcd.display( );
delay(500);
}

3.  Project Ultrasonic


#include <LiquidCrystal.h>
#define echo1 6 //Coding Sensor 1
#define triger1 7
#define echo2 9 //Coding Sensor 2
#define triger2 8
//variabel
unsigned long pulseTime1 = 0;
unsigned long jarak1 = 0;
unsigned long pulseTime2 = 0;
unsigned long jarak2 = 0;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup( ) {
lcd.begin(16, 2);
pinMode(triger1, OUTPUT);
pinMode(echo1, INPUT);
pinMode(triger2, OUTPUT);
pinMode(echo2, INPUT);
}
void loop( ) {
digitalWrite(triger1, HIGH); //Coding Sensor 1
delayMicroseconds(10);
digitalWrite(triger1, LOW);
pulseTime1 = pulseIn(echo1, HIGH);
jarak1 = (pulseTime1 / 58);
digitalWrite(triger2, HIGH); //Coding Sensor 2
delayMicroseconds(10);
digitalWrite(triger2, LOW);
pulseTime2 = pulseIn(echo2, HIGH);
jarak2 = (pulseTime2 / 58);
//Tampil Sensor
lcd.setCursor(0,0);
lcd.print("S1:");
lcd.print(jarak1);
lcd.print(" | S2:");
lcd.print(jarak2);
delay(100);
lcd.clear( );}

Tidak ada komentar:

Poskan Komentar