Tutorial Singkat Bahasa Pemrograman Arduino

Arduino menggunakan pemrograman dengan bahasa C. Berikut ini adalah sedikit penjelasan yang ditujukan kepada anda yang hanya mempunyai sedikit pengalaman pemrograman dan membutuhkan penjelasan singkat mengenai karakter bahasa C dan software Arduino. Untuk penjelasan yang lebih mendalam, web Arduino.cc adalah sumber yang lengkap.

Struktur

Setiap program Arduino (biasa disebut sketch) mempunyai dua buah fungsi yang harus ada.

  • void setup( ) {   }
    • Semua kode didalam kurung kurawal akan dijalankan hanya satu kali ketika program Arduino dijalankan untuk pertama kalinya.
  • 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.

Syntax

Berikut ini adalah elemen bahasa C yang dibutuhkan untuk format penulisan.

  • //(komentar satu baris)
    • Kadang 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.
  • /*   */(komentar banyak baris)
    • Jika anda punya 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.
  • {   }(kurung kurawal)
    • Digunakan untuk mendefinisikan kapan blok program mulai dan berakhir (digunakan juga pada fungsi dan pengulangan).
  • ;(titk koma)
    • Setiap baris kode harus diakhiri dengan tanda titik koma (jika ada titik koma yang hilang maka program tidak akan bisa dijalankan).

Variabel

Sebuah program secara garis besar dapat didefinisikan sebagai instruksi untuk memindahkan angka dengan cara yang cerdas. Variabel inilah yang digunakan untuk memindahkannya.

  • int (integer)
    • Digunakan untuk menyimpan angka dalam 2 byte (16 bit). Tidak mempunyai angka desimal dan menyimpan nilai dari -32,768 dan 32,767.
  • long (long)
    • 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.
  • boolean (boolean)
    • Variabel sederhana yang digunakan untuk menyimpan nilai TRUE (benar) atau FALSE (salah). Sangat berguna karena hanya menggunakan 1 bit  dari RAM.
  • float (float)
    • Digunakan untuk angka desimal (floating point). Memakai 4 byte (32 bit) dari RAM dan mempunyai rentang dari -3.4028235E+38 dan 3.4028235E+38.
  • char (character)
    • Menyimpan 1 karakter menggunakan kode ASCII (misalnya ‘A’ = 65). Hanya memakai 1 byte (8 bit) dari RAM.

Operator Matematika

Operator yang digunakan untuk memanipulasi angka (bekerja seperti matematika yang sederhana).

  • =
    • Membuat sesuatu menjadi sama dengan nilai yang lain (misalnya: x = 10 * 2, x sekarang sama dengan 20).
  • %
    • Menghasilkan sisa dari hasil pembagian suatu angka dengan angka yang lain (misalnya: 12 % 10, ini akan menghasilkan angka 2).
  • +
    • Penjumlahan
    • Pengurangan
  • *
    • Perkalian
  • /
    • Pembagian

Operator Pembanding

Digunakan untuk membandingkan nilai logika.

  • ==
    • Sama dengan (misalnya: 12 == 10 adalah FALSE (salah) atau 12 == 12 adalah TRUE (benar))
  • !=
    • Tidak sama dengan (misalnya: 12 != 10 adalah TRUE (benar) atau 12 != 12 adalah FALSE (salah))
  • <
    • Lebih kecil dari (misalnya: 12 < 10 adalah FALSE (salah) atau 12 < 12 adalah FALSE (salah) atau 12 < 14 adalah TRUE (benar))
  • >
    • Lebih besar dari (misalnya: 12 > 10 adalah TRUE (benar) atau 12 > 12 adalah FALSE (salah) atau 12 > 14 adalah FALSE (salah))

Struktur Pengaturan

Program sangat tergantung pada pengaturan apa yang akan dijalankan berikutnya, berikut ini adalah elemen dasar pengaturan (banyak lagi yang lain dan bisa dicari di internet).

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–.

Digital

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).

Analog

Arduino adalah mesin digital tetapi mempunyai kemampuan untuk beroperasi di dalam alam analog (menggunakan trik). Berikut ini 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 voltase-nya. Keluarannya berupa angka antara 0 (untuk 0 volts) dan 1024 (untuk 5 volts).

Demikianlah tutorial singkat mengenai bahasa pemrograman pada Arduino. Selamat mencoba!

You may also like...

28 Responses

  1. Terima kasih pak atas tuttorialnya, , maju terus famosa studio pak

  2. Thanks gan.., 🙂 Jangan Berhenti Berbagi. 😀

  3. terimakasih pak infonya

  4. ivan says:

    thanks gan, semangat berbagi . .

  5. tolong bantu donk pak..
    funsi syntax dibawah ini saya bingung;

    -unsigned long last = millis();
    -if (millis() – last > 250)
    -last = millis();

    Terimakasih pak

    • Zerfani Yulias says:

      Silahkan gunakan link reference yang ada di website Arduino untuk mengetahui arti syntax tersebut.
      Seperti link tentang millis yang ada di sini.
      Silahkan gunakan fasilitas search yang ada di sana untuk mengetahui arti syntax yang lain.

      Kemudian gunakan contoh yang ada di link tersebut untuk bereksperimen, sehingga anda bisa mengetahui lebih tepat bagaimana cara penggunaannya.
      Mesti harus dengan banyak mencoba untuk dapat menguasai Arduino dan pemrogramannya ini.

  6. zizoo says:

    hallo pak,
    kalo saya mau membuat program yang tidak mengulang-ngulang harus pake kode apa di void setelah setup?
    klo pake loop kan akan mengulang terus menerus

    • Zerfani Yulias says:

      Betul, kalau mau programnya hanya dijalankan 1 kali, pasang kode programnya di bagian void setup, jangan di void loop.

  7. ahmad ainun najib says:

    trimakasih infonya pak. izin copas

    • Zerfani Yulias says:

      Silahkan saja, asal dicantumkan link tutorial yang ini ditempat anda.

    • mohamad syaifudin says:

      pak,apakah bisa saya beli sebuah program misalnya utk menggerakan relay board 16 channel dari board arduino 2560,nanti saya yang minta relay pertama berapa lama hidup dan matinya ,dilanjutkan relay ke dua begitu seterusnya nanti bapak yang buat bahasanya dan dikirim ke e mail saya,pak nanti saya yang merobah setting timenya relay hidup mati tp bahasa programram sudah dari bapak,bisa bapak?

      • Zerfani Yulias says:

        Tidak perlu beli, karena anda bisa membuatnya sendiri. Pemrograman untuk relay itu cukup mudah.
        Lihat contoh program Blink yang ada di Arduino IDE (menu File>Examples>Basics>Blink).
        Di situ ada baris program ini:
        digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
        delay(1000); // wait for a second
        digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
        delay(1000); // wait for a second

        Nah tinggal mengganti variabel led dengan variabel lain yang sudah didefinisikan untuk pin yang mengendalikan relay-nya.
        Di baris delay(1000) bisa diganti dengan delay yang sesuai kebutuhan. Dari yang sederhana ini tinggal dikembangkan lebih lanjut sesuai kebutuhan anda.

        Selamat mencoba!

  8. Jae says:

    pak klo misalnya untuk membuat perangkat alarm banjir atau detektor kebakaran, arduino versi apa yg plg bagus untuk dipakai??

    • Zerfani Yulias says:

      Arduino apa saja bisa digunakan, tinggal disesuaikan saja dengan kebutuhan pin IO-nya.

      • indriyanus manalor says:

        Malam Pak Zerfani Yulias,
        saya mengalami masalah untuk pembuatan program stair light controller, saya menggunakan 2 buah PIR untuk sensorya dan 8 buah LED.

        const int LED1 = 4;
        const int LED2 = 5;
        const int LED3 = 6;
        const int LED4 = 7;
        const int LED5 = 8;
        const int LED6 = 9;
        const int LED7 = 10;
        const int LED8 = 11;
        const int PIR1 = 12;
        const int PIR2 = 13;
        int pirs1 = 0;
        int pirs2 = 0;

        void setup() {
        // put your setup code here, to run once:
        pinMode(LED1, OUTPUT);
        pinMode(LED2, OUTPUT);
        pinMode(LED3, OUTPUT);
        pinMode(LED4, OUTPUT);
        pinMode(LED5, OUTPUT);
        pinMode(LED6, OUTPUT);
        pinMode(LED7, OUTPUT);
        pinMode(LED8, OUTPUT);
        pinMode(PIR1, INPUT);
        pinMode(PIR2, INPUT);
        }

        void naik(){
        digitalWrite(LED1, HIGH);
        delay(200);
        digitalWrite(LED2, HIGH);
        delay(200);
        digitalWrite(LED3, HIGH);
        delay(200);
        digitalWrite(LED4, HIGH);
        delay(200);
        digitalWrite(LED5, HIGH);
        delay(200);
        digitalWrite(LED6, HIGH);
        delay(200);
        digitalWrite(LED7, HIGH);
        delay(200);
        digitalWrite(LED8, HIGH);
        delay(200);
        }

        void naikmati(){
        digitalWrite(LED1, LOW);
        delay(200);
        digitalWrite(LED2, LOW);
        delay(200);
        digitalWrite(LED3, LOW);
        delay(200);
        digitalWrite(LED4, LOW);
        delay(200);
        digitalWrite(LED5, LOW);
        delay(200);
        digitalWrite(LED6, LOW);
        delay(200);
        digitalWrite(LED7, LOW);
        delay(200);
        digitalWrite(LED8, LOW);
        delay(200);
        }
        void turun(){
        digitalWrite(LED8, HIGH);
        delay(200);
        digitalWrite(LED7, HIGH);
        delay(200);
        digitalWrite(LED6, HIGH);
        delay(200);
        digitalWrite(LED5, HIGH);
        delay(200);
        digitalWrite(LED4, HIGH);
        delay(200);
        digitalWrite(LED3, HIGH);
        delay(200);
        digitalWrite(LED2, HIGH);
        delay(200);
        digitalWrite(LED1, HIGH);
        delay(200);
        }

        void turunmati(){
        digitalWrite(LED8, LOW);
        delay(200);
        digitalWrite(LED7, LOW);
        delay(200);
        digitalWrite(LED6, LOW);
        delay(200);
        digitalWrite(LED5, LOW);
        delay(200);
        digitalWrite(LED4, LOW);
        delay(200);
        digitalWrite(LED3, LOW);
        delay(200);
        digitalWrite(LED2, LOW);
        delay(200);
        digitalWrite(LED1, LOW);
        delay(200);
        }

        void mati(){
        digitalWrite(LED8, LOW);
        digitalWrite(LED7, LOW);
        digitalWrite(LED6, LOW);
        digitalWrite(LED5, LOW);
        digitalWrite(LED4, LOW);
        digitalWrite(LED3, LOW);
        digitalWrite(LED2, LOW);
        digitalWrite(LED1, LOW);

        }
        void loop() {
        // put your main code here, to run repeatedly:
        pirs1 = digitalRead(PIR1);
        pirs2 = digitalRead(PIR2);
        if (( pirs1 == HIGH)&&(pirs2 == LOW))
        {
        naik();
        }
        if (( pirs1 == LOW)&&(pirs2 == HIGH))
        {
        naikmati();
        }
        if (( pirs2 == HIGH)&&(pirs1 == LOW))
        {
        turun();
        }
        if (( pirs2 == LOW)&&(pirs1 == HIGH))
        {
        turunmati();}
        }

        tapi untuk yang naik atasya lampu tidak menyala karna bentrok dengan program yang ke turunmati..

        mohon solusiya pak trims.

  9. heri says:

    terimakasi infonya pak…. sukses selalu

  10. Kalo misalkan #include itu apa ya? apakah harus dimasukkan di dalam code?

  11. ashari says:

    trimakasih pa, informasinya sangat mmbantu….dan saya mau tanya ada tidak ebook/buku kumpulan2 program untuk para pemula,…jika ada dimana harus membelinya,

  12. malam pak
    saya ingin abertany cara membuat programing untuk mengukur volume dengan arduino r3 + pelampung motor bolehkah bapk memberikan langkah”nya?

  13. dayat says:

    terimakasih pak atas info ? mohon bantuannya cz saya baru di bidang arduino ini

  14. andri says:

    pak mau nanya,biar key bisa konek ke pengaturan timer apa kodenya?

  15. fikri says:

    ada ndak program alat pendeteksi banjir berbasis arduino

  16. dion says:

    Bang minta program dht11 arduino uno dong, error mulu pas di dht DHT(DHTTYPE DHTPIN)
    Makasi bang

  17. Adeng Subagia says:

    pak. saya pendatang baru, mau tanya kalau sketch lampu on/off 4 buah itu hanya pakai void setup aja apa pakai void loop?

  18. david simanjuntak says:

    pak bisa bantu saya gak??

  19. adam says:

    kalo untuk menampilkan dibelakang koma cuma dua angka dari pembacaan sensor itu gimana pak? misalnya 20,34 C. terimakasih

  20. winanda says:

    mohon maaf pak, ijin copas ……..

  21. zaid says:

    pak mau nanya pak, kalau program arduino untuk menggerakkan motor dc biar bs cw/ccw dan bisa diatur pwmnya, dengan menekan button maka motornya berputar 90 derajat trus button satu lg klu ditekan maka motornya berputar lg pak. mohon bantuanya teomakasih pak. motor dc ini saya gabungkan dengan driver mosfet pak

Leave a Reply to winanda Cancel reply

Your email address will not be published. Required fields are marked *

Facebook