Belajar Arduino

Mahir Arduino Sketch dan Elektro secara praktek


Buat yang baru kenal arduino, Arduino itu sebuah board microcontroller yang disertai software pendukung untuk melakukan pemograman. Arduino menganut sistem open hardware, menggunakan Atmel AVR processor dan memiliki I/O onboard. Boleh dibilang, Arduino itu komputer kecil yang dapat kita program untuk memproses input dan output dari komponen eksternal yang kita hubungkan dengan Arduino tersebut.

Contoh sederhana apa yang dapat kita lakukan terhadap Arduino, kita dapat mengatur untuk menyalakan lampu katakanlah 30 detik sesudah kita menekan saklar. Dalam contoh ini berarti kita memiliki board Arduino, sebuah lampu dan saklar yang terhubung dengan arduino. Arduino akan dengan sabar menunggu saklar ditekan, sekali saklar ditekan, arduino akan menunggu 30 detik, kemudian memerintahkan lampu menyala. Anda dapat meningkatkan kemampuan dengan menambahkan sensor, sebagai contoh PIR sensor, yang berfungsi sebagai input untuk menyalakan lampu.

Arduino dapat berdiri sendiri, atau dapat dihubungkan dengan komputer, jaringan atau dihubungkan dengan internet untuk mengambil data atau mengirimkan data.

Arduino dapat dihubungkan dengan LED, dot matrix display, button, switch, motor, berbagai sensor, GPS, modul ethernet dan banyak lagi.


Board Arduino menggunakan Atmel AVR microprocessor dan sebuah crystal untuk mengatur clock agar processor bekerja pada kecepatan yang tepat, 5 volt linear regulator, USB socket untuk menghubungkan board dengan PC (tergantung jenis Board Arduino) dan pin output yang digunakan untuk menghubungkan dengan komponen input ataupun output.



Nah, sebagai pemula, saya memilih board yang paling populer dan cukup murah dan mudah untuk diprogram, yaitu Arduino UNO R3 (revisi 3)

Anda dapat membeli versi clone (harga jauh lebih murah) dan tidak ada masalah kompatibilitas. Karena Arduino ini menganut sistem open hardware, siapa saja dapat membuat board Arduino, termasuk Arduino UNO. Bila Anda kesulitan mendapatkan di kota Anda, bisa dibeli online, silakan cek http://kedai-elektro-robotika.blogspot.com/

Artikel Selanjutnya : Mengenal Arduino Board
Arduino Uno adalah microcontroller board yang menggunakan ATMega328. Memiliki 14 digital input/output pin, 6 analog inputs, 16 MHz ceramic, USB Connection, power jac, ICSP header dan tombol reset. UNO ini cukup lengkap dalam mendukung pengerjaan microcontrolling.

Fitur UNO R3
  • 1.0 pinout: terdapat pin SDA and SCL (dekat AREF pin) dan 2 pin baru lainnya dekat RESET pin, IOREF yang berguna bagi shield untuk mengadaptasi tegangan (votage) yang disediakan dari board. Untuk kedepannya, shield akan compatible dengan board yang menggunakan AVR (5V) dan arduino due yang beroperasi di 3.3 V. Pin yang kedua adalah pin reserved untuk kebutuhan dimasa yang akan datang.
  • RESET circuit yang lebih baik
  • Menggunakan Atmega 16U2 (menggantikan 8U2).

Summary
  • Microcontroller ATmega328
  • Operating Voltage 5V
  • Input Voltage (recommended) 7-12V
  • Input Voltage (limits) 6-20V
  • Digital I/O Pins 14 (of which 6 provide PWM output)
  • Analog Input Pins 6
  • DC Current per I/O Pin 40 mA
  • DC Current for 3.3V Pin 50 mA
  • Flash Memory 32 KB (ATmega328) of which 0.5 KB used by bootloader
  • SRAM 2 KB (ATmega328)
  • EEPROM 1 KB (ATmega328)
  • Clock Speed 16 MHz


Pin Out Arduino Uno R3



Artikel Sebelumnya : Pengenalan Arduino
Artikel Selanjutnya: Menghubungkan Arduino Arduino UNO dengan PC
Setelah kita mengenal Board Arduino, hal lain yang perlu kita ketahui adalah bagaimana kita memasukkan logic kedalam IC atau bagaimana kita melakukan programming. Untuk dapat memprogram Board Arduino, kita perlu software untuk melakukan programming dan menghubungkannya dengan PC.

Dan, kabar gembiranya, Arduino sudah menyediakan IDE yang cukup mudah dipakai. Untuk download IDE silakan kunjungi website resmi Arduino disini.

Setelah selesai mendownload IDE Arduino, lakukan installasi, langkah-langkahnya mudah, jadi saya kira saya gak perlu share disini.

Berikutnya adalah menghubungkan Arduino Uno dengan PC atau Laptop untuk Windows7, Vista, or XP:
  • Hubungkan board Arduino Uno, tunggu windows untuk melakukan driver installation. Biasanya gagal.   
  • Buka control panel windows, lalu buka device manager.
  • Cari Ports (COM & LPT), disana ada port "rduino UNO (COMxx)", click kanan dan pilih "Update Driver Software" option.
    Lalu pilih "Browse my computer for Driver software" option.cari driver file dengan nama "arduino.inf", di folder "Drivers". Folder dapat ditemukan ditempat instal software IDE Arduino.
  • Windows akan menyelesaikan instalasi driver.

Okay.. sekarang Arduino Uno sudah terhubung dengan PC. Anda dapat mencoba 1 program example yang sudah disediakan untuk memastikan semuanya sudah berjalan, yaitu Blink.



Setelah sketch terbuka pada windows software Arduino Anda, pilih tipe board Arduino Anda, dalam hal ini adalah Arduino Uno


Setelah board dipilih, pilih Port yang menghubungkan PC dengan Arduino. Lalu tekan tombol Upload pada menu bar diatas.


Setelah program terupload, terlihat di area notifikasi. Maka LED 13 dari Arduino Board akan berkedip-kedip dengan interval 1 second.

Nah.. sangat mudahkan? Saya sendiri tidak ada background Elektro, background saya adalah web programming dan desain. Dalam hitungan menit sudah bisa melakukan interfacing terhadap microcontroller dan mencoba programmingnya.

Boleh dibilang, Arduino ini sangat membantu kita yang tidak bisa solder menyolder dan atau memudahkan para pakar elektro untuk melakukan prototyping lebih cepat.

Artikel Sebelumnya: Arduino Uno Board 
Artikel Selanjutnya:  Pengenal Sketch 

Sketch adalah sebutan program untuk Arduino, berupa kumpulan code yang diupload dan dijalankan oleh board Arduino

Disini akan dibahas sedikit komponen sketch yang digunakan saat kita membuat program. Dengan acuan sketch contoh adalah Blink Led, sketch example dari Arduino.

/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.

  This example code is in the public domain.
 */


// Pin 13 has an LED connected on most Arduino boards.
int ledPin = 13;

// the setup routine runs once when you press reset:
void setup() {
  // initialize the digital pin as an output.
  pinMode(
ledPin, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(
ledPin, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);               // wait for a second
  digitalWrite(
ledPin, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
}



Comments
Ini adalah elemen sketch yang berfungsi untuk memberikan baris komentar pada program, komentar tidak akan dicompile, namun berguna sebagai dokumentasi agar program dapat dibaca dan dimengerti.

Contoh Comments

/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.

  This example code is in the public domain.
 */


semua yang terletak didalam area /* dan */ adalah komentar dan akan diabaikan oleh compiler.

Bila anda memerlukan comments dalam bentuk baris, dapat menggunakan tanda //, contohnya:

// Pin 13 has an LED connected on most Arduino boards.

kalimat  "LED connected to digital pin 13"  adalah sebuah comment

Variables
Adalah tempat kita menaruh data, variable memiliki nama, tipe dan nilai. Sebagai contoh pada baris code diatas: int ledPin = 13.

Nama variable: ledPin
Type variable: int
Initial Value : 13.

Variable ini akan digunakan dalam seluruh sketch, setiap ledPin dipanggil, maka nilai terakhir yang terdapat didalamnya akan digunakan oleh program.

Anda dapat saja menuliskan angka 13  disetiap perintah yang membutuhkan nilai ini, namun bila Anda menggunakan variable, saat Anda akan mengganti menjadi 12, cukup mengganti 1 kali, yaitu di baris inisialisasi variable ini.

Functions
Function atau dikenal juga dengan procedure atau sub-routine, adalah sebuah kode yang dapat digunakan diseluruh sketch. Contoh function setup() pada sketch Blink Led


void setup() {
  // initialize the digital pin as an output.
  pinMode(
ledPin, OUTPUT);
}


baris pertama menunjukkan informasi nama dari function, yaitu setup, code program yang akan dilakukan fungsi tersebut disimpan dalam { dan }.

Function yang lebih komplek memeliki parameter input. Beberapa contoh function dasar yang sudah disediakan oleh Arduino sendiri: pinMode(), digitalWrite() dan delay().

Function pinMode() adalah fungsi yang bertugas mengatur suatu pin sebagai input atau output. Cara menggunakannya cukup memberikan parameter no pin dan mode pin dengan memberikan constant INPUT atau OUTPUT. (lihat contoh fungsi diatas, mengkonfigurasi pin 13(ledPin) sebagai output).

Berikutnya adalah fungsi digitalWrite(), adalah fungsi untuk memberikan value HIGH atau LOW pada pin yang diinginkan. digitalWrite memiliki parameter pin dan constant HIGH atau LOW. Dari contoh program dapat kita lihat, dalam hal ini, fungsi digitalWrite akan membuat led menyala.

digitalWrite(ledPin, HIGH);   // turn the LED on (HIGH is the 


Lalu fungsi delay(), berguna untuk memberikan interval waktu yang kita inginkan dalam satuan milisecond. Dalam contoh sketch Blink Red, terdapat perintah seperti dibawah, yang berarti arduino akan diperintahkan untuk menunggu selama 1 detik (1000 milisecond = 1detik).


delay(1000);               // wait for a second


Terakhir namun sangat penting diperhatikan, setiap sketch arduino memiliki strutktur fungsi utama yaitu setup() dan loop(). Fungsi setup() akan dipanggil 1 kali ketika sketch pertama kali jalan. fungsi setup() ini sering digunakan untuk initialisasi libraries atau setting pin.

Fungsi loop() dipanggil berulang-ulang terus menerus selama arduino dialiri listrik. Ini merupakan inti dari sketch arduino. Anda harus memasukkan kedua fungsi ini dalam sketch.

Artikel Sebelumnya Cara menghubungkan Arduino dengan PC
Artikel Selanjutnya  Proyek 1 - Led Blinker
Nah sebagai pemula, saya perlu memilih proyek yang sederhana namun cukup membuka pengertian akan akses pin pada Arduino Uno Board.

Led Blink, program akan mengakses pin 10 dan memerintahkan arduino untuk mengulang blink led. Dengan mengerjakan proyek ini, kita akan mempelajari beberapa dasar-dasar elektronik dan sketch programming Arduino.


Hal yang diperlukan

Skema



Note Karena saya mempelajari arduino dari nol, jadi saya share juga yang  hal-hal yang mungkin terlihat remeh bagi para expert. Warna kabel jumper tidak harus sesuai gambar, namun untuk kebiasaan yang baik, usahakn untuk positif gunakan warna merah, untuk ground gunakan hitam. Lubang pada breadboard pun tidak masalah, kita bisa memasang di lubang yang mana saja. Yang harus betul-betul diperhatikan adalah hubungan antar komponen dan pin pada arduino, harus sesuai gambar.

Sketch

// Project 1 - LED Flasher
int ledPin = 10;


void setup() {
  pinMode(ledPin, OUTPUT);
}
 

void loop() {
  digitalWrite(ledPin, HIGH);
  delay(1000);
  digitalWrite(ledPin, LOW);
  delay(1000);
}


setelah sketch diketik, tekan tombol verivy, bila tidak ada error, tekan tombol upload. (silakan lihat cara upload dan konek arduino uno dengan komputer).

Pembahasan Sketch

// Project 1 - LED Flasher
Ini adalah komentar baris yang berguna untuk dokumentasi program, kompiler akan mengabaikan bagian ini. Baris komentar berguna bagi programmer agar bisa mengerti maksud program.

int ledPin = 10;
Inisialisasi variable, dalam hal ini inisialisasi variable bernama ledPin dengan type data integer dan nilai 10.

void setup() {
  pinMode(ledPin, OUTPUT);
}

Setiap sketch arduino wajib memiliki fungsi setup() dan loop().  Fungsi setup() dipanggil hanya sekali saat pertama kali program berjalan. Fungsi setup() biasanya tempat untuk men-setup hal-hal umum agar program Anda siap dijalankan, seperti setup pin modes, setting serial baud rates, dan lainnya.

Pada sketch Led Blink, fungsi setup hanya memiliki 1 baris perintah yaitu

pinMode(ledPin, OUTPUT);

pinMode fungsi yang berguna untuk memberitahu arduino bahwa pin pada board akan digunakan sebagai input atau output.Dalam baris program diatas,  kita memberitahu arduino untuk menset pin 10 (nilai ledPin adalah 10) sebagai OUTPUT.

void loop() {
  digitalWrite(ledPin, HIGH);
  delay(1000);
  digitalWrite(ledPin, LOW);
  delay(1000);
}


Fungsi loop() function adalah program utama yang dipanggil secara continue selama arduino menyala (dialiri power). Setiap perintah dalam fungsi loop() akan dipanggil satu persatu sampai perintah terakhir dalam blok loop dicapai, lalu Arduino akan kembali ke awal perintah di blok fungsi loop(), sampai Arduino dimatikan atau tombol reset ditekan.

Jadi dalam proyek ini Arduino akan menyalakan led, menunggu selama 1 detik, lalu mematikan led, lalu menunggu 1 detik. Urutan perintah ini akan diulang terus menerus sampai arduino dimatikan atau direset.


Related Article

Artikel Sebelumnya Pengenalan Sketch
Artikel Selanjutnya Proyek Led Blinker Advanced
Dari rangkaian proyek LED Blinker sebelumnya, kita dapat membuat lebih advanced dengan kreatifitas dalam programming. Salah satu contohnya adalah S.O.S  kode morse dengan LED. LED akan menyala lebih lama untuk menunjukkan kode garis, dan menyala lebih sebentar untuk kode titik. (Morse merupakan code dengan garis dan titik, sekiranya saya tidak perlu menjelaskan morse terlalu mendetail, karena saya tidak lulus dari pramuka siaga...hehehe..just kidding)


Sketch S.O.S Morse

// LED connected to digital pin 10
int ledPin = 10;
 

// run once, when the sketch starts
void setup()
{
  // sets the digital pin as output
  pinMode(ledPin, OUTPUT);
}


// run over and over again
void loop()
{
  // 3 dits (3 titik atau huruf S)
  for (int x=0; x<3; x++) {
    digitalWrite(ledPin, HIGH); // sets the LED on
    delay(150); // waits for 150ms
    digitalWrite(ledPin, LOW); // sets the LED off
    delay(100); // waits for 100ms
  }


  // 100ms delay to cause slight gap between letters
  delay(100);


  // 3 dahs (3 garis atau huruf O)
  for (int x=0; x<3; x++) {
    digitalWrite(ledPin, HIGH); // sets the LED on
    delay(400); // waits for 400ms
    digitalWrite(ledPin, LOW); // sets the LED off
    delay(100); // waits for 100ms
  }

  // 100ms delay to cause slight gap between letters
  delay(100);
 

  // 3 dits again (3 titik atau huruf S)
  for (int x=0; x<3; x++) {
    digitalWrite(ledPin, HIGH); // sets the LED on
    delay(150); // waits for 150ms
    digitalWrite(ledPin, LOW); // sets the LED off
    delay(100); // waits for 100ms
  }


  // wait 5 seconds before repeating the SOS signal
  delay(5000);

}



Pembahasan Kode
Untuk fungsi setup, kita hanya mengidentifikasikan pinout dari LED, masih seperti sketch sebelumnya (proyek Led Blinker).

Perubahan cukup banyak, dilakukan pada fungsi loop(). Secara umum, fungsi loop() memiliki logika menyalakan LED dengan kode morse S.O.S secara terus menerus, diantara sinyal SOS diberikan jeda selama 5 detik.

Hal yang baru disini adalah fungsi for(), ini adalah fungsi perulangan. memiliki parameter nilai awal, nilai akhir dan nilai penambahan. Nilai awal untuk menentukan awal loop, nilai akhir untuk mengecek apakah nilai saat ini sudah mencapai nilai akhir, bila belum maka nilai sekarang akan ditambahkan sesuai nilai increment, dan blok kode didalam loop akan dijalankan.

Pada sketch diatas loop akan dilakukan sebanyak 3 kali

for (int x=0; x<3; x++) {
  //blok kode loop
}

For I : x=0, lalu akan dibandingkan, 0 < 3, bila betul maka, nilai x akan ditambah 1, menjadi 1, lalu blok kode didalam for akan dilakukan.

For II : x=1, lalu dibandingkan 1<3, kondisi betul, nilai x ditambah menjadi 2, lalu blok kode didalam for akan dijalankan.

For III : x=2,  lalu dibandingkan 2<3, kondisi betul, nilai x ditambah menjadi 3, lalu blok kode didalam for akan dijalankan.

For III : x=3,  lalu dibandingkan 3<3, kondisi salah, maka program akan melanjutkan kebaris perintah berikutnya, blok for akan dilewati.

Jadi blok for ke-1 akan membuat huruf S, blok for ke-2 membuat huruf O, blok for ke-3 membuat huruf S, lalu delay 5 detik. Mudahkan? Dengan kreatifitas programming, Rangkaian yang sederhana sudah bisa dibuat menjadi sesuatu yang bermanfaat.

Artikel Sebelumnya: Proyek Led Blinker
Artikel Selanjutnya: Proyek Lampu Lalu Lintas