Belajar Pemograman Arduino

Tampilan awal software arduino



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.

structure 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

Biasanya tipe data ini di gunakan untuk komunikasi wireless

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  

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.prinln(data)

Mengirimkan data ke serial port. 

Serial.println(100); // mengirimkan 100

Author

Written by Admin

Aliquam molestie ligula vitae nunc lobortis dictum varius tellus porttitor. Suspendisse vehicula diam a ligula malesuada a pellentesque turpis facilisis. Vestibulum a urna elit. Nulla bibendum dolor suscipit tortor euismod eu laoreet odio facilisis.

37 komentar:

  1. mas saya mau tanya... jika ingin menampilkan 3 angka atau lebih di blakang koma pada arduino bagaimana ya?...
    Trimakasih

    BalasHapus
    Balasan
    1. pada command Serial.println(value,DEC);
      masukan "DEC" atau sama dengan decimal

      Hapus
  2. cara ngapus program gimana ya mas

    BalasHapus
  3. sbelumnya saya sudah program,,trus mau say aganti program baru

    BalasHapus
    Balasan
    1. Kalo program di arduino itu sementara. Maksudnya kalo misal ente timpa sama program baru, otomatis program yg lama ke delete. CMIIW

      Hapus
    2. Kalo program di arduino itu sementara. Maksudnya kalo misal ente timpa sama program baru, otomatis program yg lama ke delete. CMIIW

      Hapus
  4. mau nanya mas, gmna cara memberi perintah dgn nilai pada serial monitor untuk mengaktifkan komponen eletonika yang lain.
    mohon di bantu ya mas..
    terimakasih...

    BalasHapus
  5. Komentar ini telah dihapus oleh pengarang.

    BalasHapus
  6. Terima Kasih atas ilmunya, sangat membantu :)

    BalasHapus
  7. bisa kasih contoh script kalau mengukur perpindahan sebuah benda jika menggunakan sensor HCSR 04 sebagai pengukur posisi atau jaraknya? mohon bimbingannya.

    BalasHapus
  8. bisa kasih contoh script kalau mengukur perpindahan sebuah benda jika menggunakan sensor HCSR 04 sebagai pengukur posisi atau jaraknya? mohon bimbingannya.

    BalasHapus
  9. Mas kalo penulisan coding untuk 2 perintah yg di ulang itu gmna ya. Misalnya saya ingin ada 2 void loop di dalam 1 program. Apakah bisa? Trims.

    BalasHapus
  10. Mas kalo penulisan coding untuk 2 perintah yg di ulang itu gmna ya. Misalnya saya ingin ada 2 void loop di dalam 1 program. Apakah bisa? Trims.

    BalasHapus
  11. terimakasih mas, ini sangat membantu saya

    BalasHapus
  12. mas mau tanya, gmna caranya mengeset interval data misalnya dari - 5000 sampai dengan 5000. jadi data adc terkecil itu nantinya bernilai - 5000 dan data adc maksimal 5000..

    BalasHapus
  13. mas mau tanya gimana ya cara nya menambahkan instruksi setelah while ?

    BalasHapus
  14. Mas mau tanya..untuk fungsi acos pada arduino kok hasilnya beda dengan excel
    Padahal rumusnya sama
    Makasih

    BalasHapus
  15. Mas mau tanya..untuk fungsi acos pada arduino kok hasilnya beda dengan excel
    Padahal rumusnya sama
    Makasih

    BalasHapus
  16. Mas mau tanya..untuk fungsi acos pada arduino kok hasilnya beda dengan excel
    Padahal rumusnya sama
    Makasih

    BalasHapus
  17. cara menggabungkan perintah control dengan komunikasi serial supaya tidak error

    BalasHapus
  18. mas mau tanya, cara membuat coding perhitungan nilai IMT(Indeks Massa Tubuh) dengan rumus IMT=BB/ (TB/100)^ supaya bisa ketemu hasil IMT nya mas. terimakasih

    BalasHapus
  19. Min, saya mau tanya. Saya sudah upload dan ketika compiling muncul tulisan, Not used : C:\Program Files\Arduino\libraries\Servo
    Mksdny apa ya minnn mohon bantuannya. Thnk you

    BalasHapus
  20. Makasih artikelnya sangat membantu sekali.

    Dapatkan buku Arduino baru berdiskon hanya di :

    http://www.honbookstore.com/search/label/Teknik

    BalasHapus
  21. Mas mau tanya fungsi tipe data "map" apa mas??

    BalasHapus
  22. mas mau tanya kalau mempause program sementara gimana ya saya buat tirai otomatis ldr dan sms gateway nah kalu ldrnya ga bermasalah, yang bermasalah ketika terima sms ldrnya masih aktif. yang saya tanyakan gimana cara mepause program ldr ketika perintah dari sms gatewaynya muncul

    BalasHapus
  23. Mas saya ada project ditempat kerja saya ttg arduino. Boleh minta contaknya mas ato kirim ke email saya di trinoviyantoo@gmail.com

    BalasHapus
  24. Mas saya ada project ditempat kerja saya ttg arduino. Boleh minta contaknya mas ato kirim ke email saya di trinoviyantoo@gmail.com

    BalasHapus
  25. Mas Saya Mau nanya Klo Membuat nilai dari 0 - 100 di arduino bagaimana mas..?

    BalasHapus
  26. Mas saya mau nanya. Kalau menghentikan fungsi void loop sementara gimana ya ..? Stlah void setup & void loop berjalan trs kita mau stop fungsi void loop sewaktu waktu

    BalasHapus
  27. Mas saya mau nanya. Kalau menghentikan fungsi void loop sementara gimana ya ..? Stlah void setup & void loop berjalan trs kita mau stop fungsi void loop sewaktu waktu

    BalasHapus
  28. halo bang husen, untuk berhenti sementara, bisa menggunakan millis, buat kategori nya, detik keberapa nyala ini, dan selanjut nya
    bisa kunjungi web kita di https://mikroavr.com/program-arduino/

    BalasHapus
  29. Misi bang saya mau nanya, masih newbie banget, si arduino uno itu pake algoritma apa ya ka? Misalnya algoritma greedy gitu Atau dia ada tersendiri ?

    BalasHapus
  30. Artikelnya membantu mas. Ditunggu update terbaru tentang arduino

    BalasHapus
    Balasan
    1. untuk artikel belajar arduino bisa lihat ke blog saya mas www.masahen.com

      Hapus
  31. mas saya mau bertanya mas apa bisa 1 pin dibuat jadi dua fungsi, misalnya pin digital 2 dibuat jadi input+output sekali gus? kalau bisa seklian sama contoh programnya mas.
    TErima kasih banyak mas.

    BalasHapus
  32. Mau tanya bang , kalo menampilkan suhu 2 dibelakang koma

    BalasHapus