Arduino adalah kit mikrokontroler yang serba bisa dan sangat mudah
penggunaan nya. Dirancang khusus untuk pemula, tetapi pada kenyataan nya banyak
dipakai oleh professional untuk membuat proyek-proyek elektronika. Saat ini
Arduino sudah sangat populer dan sudah banyak dipakai untuk membuat
proyek-proyek seperti drum digital, pengontrol LED, web server, MP3 player,
pengendali robot, pengendali motor, sensor suhu/kelembaban, pengontrol kamera,
dsb.
Hubungan Arduino Dengan Teknologi Robotika
Dunia elektronika saat ini diramaikan dengan proyek-proyek membuat robot.
Mulai dari robot mainan, sampai pada robot yang serius seperti robot pemadam
api, robot produksi, dsb. Kalau anda adalah seorang penggemar elektronika yang berangkat dari mengoprek
radio dan amplifier, besar kemungkinan akan merasa repot kalau ingin
mengembangkan hobby ke arah robotika atau peralatan elektronika yang dapat
berhubungan dengan komputer misalnya. Ya, karena dunia elektronik sekarang
sudah sangat jarang menggunakan komponen linear seperti dulu, tetapi
sudah menggunakan mikrokontroler.
Mikrokontroler adalah adalah pengendali mikro yang berbentuk chip (atau IC)
yang dapat diprogram menggunakan komputer. Di dalam chip tersebut terdapat
ruang untuk menyimpan program dan ruang menyimpan data (EEPROM). Mikrokontroler
adalah otak elektronik yang dapat mengendalikan perangkat-perangkat
elektronik lain nya. Misalnya mengendalikan relay, menampilkan gambar di LCD,
dsb.
Kesulitan terbesar seorang pemula yang ingin membuat proyek mikrokontroler
adalah dalam membuat program dan menanamkan program itu pada chip
mikrokontroler. Tetapi beruntunglah sekarang ada sebuah kit mikrokontroler yang
bisa membantu kita mempelajari mikrokontroler atau membuat robot. Nama kit
tersebut adalah Arduino.
Cara Mendapatkan Arduino
Arduino adalah proyek open source. Artinya desain hardware maupun software
terbuka untuk umum dan bisa dikembangkan sendiri kalau mau. Walaupun demikian,
bagi seorang pemula mikrokontroler tentu akan repot membuat sendiri Arduino
Board nya, karena untuk membuatnya diperlukan chip programmer (untuk menanamkan
bootloader Arduino pada chip).
Lebih Jauh Tentang Arduino
Kegunaan Arduino tergantung kepada kita yang membuat program. Arduino bisa
digunakan untuk mengontrol LED, bisa juga digunakan untuk mengontrol
helikopter. Contoh yang sudah pernah dibuat adalah MP3 player, pengontrol motor, mesin
CNC, monitor kelembaban tanah, pengukur jarak, penggerak servo,
balon udara, pengontrol suhu, monitor energi, statiun cuaca, pembaca RFID,
drum elektronik, GPS logger, monitoring bensin dan masih banyak lagi. Silahkan
buka Google, Youtube atau lihat di http://www.freeduino.org
- Tidak perlu perangkat chip programmer karena di dalamnya sudah ada bootloader yang akan menangani upload program dari komputer.
- Sudah memiliki sarana komunikasi USB, sehingga pengguna Laptop yang tidak memiliki port serial/RS323 bisa menggunakan nya.
- Bahasa pemrograman relatif mudah karena software Arduino dilengkapi dengan kumpulan library yang cukup lengkap.
- Memiliki modul siap pakai (shield) yang bisa ditancapkan pada board Arduino. Misalnya shield GPS, Ethernet, SD Card, dll.
Bahasa Pemrograman Arduino
Bahasa pemrograman Arduino adalah bahasa C. Tetapi bahasa ini sudah dipermudah
menggunakan fungsi-fungsi yang sederhana sehingga pemula pun bisa
mempelajarinya dengan cukup mudah. Untuk membuat program Arduino dan mengupload ke dalam board Arduino, anda
membutuhkan software Arduino IDE (Integrated Development Enviroment) yang bisa
di download gratis di http://arduino.cc/en/Main/Software. Panduan bahasa pemograman Arduino beserta dengan contoh-contohnya bisa
dibaca di halaman http://arduino.cc/en/Reference/HomePage.
Arduino merupakan sistem mikrokontroler yang relatif mudah dan cepat dalam membuat aplikasi elektronika maupun robotika. Buktinya ada beberapa kursus robotika yang dulunya mengajarkan pemrograman AVR menggunakan bahasa C/C++, kini telah beralih ke pemrograman menggunakan Arduino.
Saking ‘mudah’-nya Arduino, ada golongan orang yang merasa anti dengan Arduino. Golongan ini menganggap Arduino adalah pembodohan karena tidak mengajarkan teknik yang mendalam tentang mikrokontroler dan pemrograman-nya. Pendapat ini tidak benar, karena kalau kita belajar pemrograman Visual Basic pun sebenarnya kita sedang belajar hal yang dipermudah oleh Microsoft – kita tidak belajar interupsi bios untuk membaca keyboard, mendalami memory VGA untuk menuliskan teks, mempelajari direct access harddisk untuk menyimpan database, dsb. Tetapi tidak ada yang menganggap Visual Basic sebagai pembodohan bukan?
Ok, lanjutkan ke topik semula. Di bawah ini ada beberapa kelebihan yang membuat Arduino menarik minat hobbyist dan orang awam yang tertarik dengan elektronika.
Open Source
Hardware maupun software Arduino adalah open source. Artinya kita bisa membuat tiruan atau clone atau board yang kompatibel dengan board Arduino tanpa harus membeli board asli buatan Italy. Kalaupun kita membuat board yang persis dengan desain asli, kita tidak akan dianggap membajak (asalkan tidak menggunakan trade mark ‘Arduino’).
Tidak memerlukan chip programmer
Chip pada Arduino sudah dilengkapi dengan bootloader yang akan menangani proses upload dari komputer. Dengan adanya bootloader ini kita tidak memerlukan chip programmer lagi, kecuali untuk menanamkan bootloader pada chip yang masih blank.
Koneksi USB
Sambungan dari komputer ke board Arduino menggunakan USB, bukan serial atau parallel port. Sehingga akan mudah menghubungkan Arduino ke PC atau laptop yang tidak memiliki serial/parallel port.
Fasilitas chip yang cukup lengkap
Arduino menggunakan chip AVR ATmega 168/328 yang memiliki fasilitas PWM, komunikasi serial, ADC, timer, interupt, SPI dan I2C. Sehingga Arduino bisa digabungkan bersama modul atau alat lain dengan protokol yang berbeda-beda.
Ukuran kecil dan mudah dibawa
Ukuran board Arduino cukup kecil, mudah di bawah kemana-mana bersama laptop atau dimasukan ke dalam saku.
Bahasa pemrograman relatif mudah
Walaupun bahasa pemrograman Arduino adalah bahasa C/C++, tetapi dengan penambahan library dan fungsi-fungsi standar membuat pemrograman Arduino lebih mudah dipelajari dan lebih manusiawi. Contoh, untuk mengirimkan nilai HIGH pada pin 10 pada Arduino, cukup menggunakan fungsi digitalWrite(10, HIGH); Sedangkan kalau menggunakan bahasa C aslinya adalah PORTB |=(1<<2);
Tersedia library gratis
Tersedia library yang sangat banyak untuk menghubungkan Arduino dengan macam-macam sensor, aktuator maupun modul komunikasi. Misalnya library untuk mouse, keyboard, servo, GPS, dsb. Berhubung Arduino adalah open source, maka library-library ini juga open source dan dapat di download gratis di website Arduino.
Pengembangan aplikasi lebih mudah
Dengan bahasa yang lebih mudah dan adanya library dasar yang lengkap, maka mengembangkan aplikasi elektronik relatif lebih mudah. Contoh, kalau kita ingin membuat sensor suhu. Cukup membeli sebuah IC sensor suhu (misalnya LM35) dan menyambungkan ke Arduino. Kalau suhu tersebut ingin ditampilkan pada LCD, tinggal membeli sebuah LCD dan menambahkan library LCD pada program yang sama, dan seterusnya.
Komunitas open source yang saling mendukung
Software Linux, PHP, MySQL atau WordPress perkembangannya begitu pesat karena merupakan software open source dimana ada komunitas yang saling mendukung pengembangan proyek. Demikian juga dengan Arduino, pengembangan hardware dan software Arduino didukung oleh pencinta elektronika dan pemrograman di seluruh dunia. Contoh, interface USB pada Arduino Uno mengambil dari LUFA project. Library dan contoh-contoh program adalah sumbangan dari beberapa programmer mikrokontroler, seperti Tom Igoe, dsb
Overview
EAGLE file: Arduino-uno-referensi-design.zip
Skema: Arduino-uno-schematic.pdf
Catu Daya
Unit Input dan Output
Lihat juga mapping pin Arduino dan port ATmega328.
Komunikasi
Pemrograman
Uno Arduino dapat diprogram dengan menggunakan software Arduino (download). Pilih “Arduino Uno dari menu> Peralatan Board (sesuai dengan mikrokontroler).
Struktur
Operator Matematika
Digital
ANALOG OUTPUT
Perintah yang digunakan untuk output analog adalah analogWrite (pin,value), dimana:
sketchnya adalah:
Sketchnya sebagai berikut:
Kelebihan Arduino
Arduino merupakan sistem mikrokontroler yang relatif mudah dan cepat dalam membuat aplikasi elektronika maupun robotika. Buktinya ada beberapa kursus robotika yang dulunya mengajarkan pemrograman AVR menggunakan bahasa C/C++, kini telah beralih ke pemrograman menggunakan Arduino.
Saking ‘mudah’-nya Arduino, ada golongan orang yang merasa anti dengan Arduino. Golongan ini menganggap Arduino adalah pembodohan karena tidak mengajarkan teknik yang mendalam tentang mikrokontroler dan pemrograman-nya. Pendapat ini tidak benar, karena kalau kita belajar pemrograman Visual Basic pun sebenarnya kita sedang belajar hal yang dipermudah oleh Microsoft – kita tidak belajar interupsi bios untuk membaca keyboard, mendalami memory VGA untuk menuliskan teks, mempelajari direct access harddisk untuk menyimpan database, dsb. Tetapi tidak ada yang menganggap Visual Basic sebagai pembodohan bukan?
Ok, lanjutkan ke topik semula. Di bawah ini ada beberapa kelebihan yang membuat Arduino menarik minat hobbyist dan orang awam yang tertarik dengan elektronika.
Open Source
Hardware maupun software Arduino adalah open source. Artinya kita bisa membuat tiruan atau clone atau board yang kompatibel dengan board Arduino tanpa harus membeli board asli buatan Italy. Kalaupun kita membuat board yang persis dengan desain asli, kita tidak akan dianggap membajak (asalkan tidak menggunakan trade mark ‘Arduino’).
Tidak memerlukan chip programmer
Chip pada Arduino sudah dilengkapi dengan bootloader yang akan menangani proses upload dari komputer. Dengan adanya bootloader ini kita tidak memerlukan chip programmer lagi, kecuali untuk menanamkan bootloader pada chip yang masih blank.
Koneksi USB
Sambungan dari komputer ke board Arduino menggunakan USB, bukan serial atau parallel port. Sehingga akan mudah menghubungkan Arduino ke PC atau laptop yang tidak memiliki serial/parallel port.
Fasilitas chip yang cukup lengkap
Arduino menggunakan chip AVR ATmega 168/328 yang memiliki fasilitas PWM, komunikasi serial, ADC, timer, interupt, SPI dan I2C. Sehingga Arduino bisa digabungkan bersama modul atau alat lain dengan protokol yang berbeda-beda.
Ukuran kecil dan mudah dibawa
Ukuran board Arduino cukup kecil, mudah di bawah kemana-mana bersama laptop atau dimasukan ke dalam saku.
Bahasa pemrograman relatif mudah
Walaupun bahasa pemrograman Arduino adalah bahasa C/C++, tetapi dengan penambahan library dan fungsi-fungsi standar membuat pemrograman Arduino lebih mudah dipelajari dan lebih manusiawi. Contoh, untuk mengirimkan nilai HIGH pada pin 10 pada Arduino, cukup menggunakan fungsi digitalWrite(10, HIGH); Sedangkan kalau menggunakan bahasa C aslinya adalah PORTB |=(1<<2);
Tersedia library gratis
Tersedia library yang sangat banyak untuk menghubungkan Arduino dengan macam-macam sensor, aktuator maupun modul komunikasi. Misalnya library untuk mouse, keyboard, servo, GPS, dsb. Berhubung Arduino adalah open source, maka library-library ini juga open source dan dapat di download gratis di website Arduino.
Pengembangan aplikasi lebih mudah
Dengan bahasa yang lebih mudah dan adanya library dasar yang lengkap, maka mengembangkan aplikasi elektronik relatif lebih mudah. Contoh, kalau kita ingin membuat sensor suhu. Cukup membeli sebuah IC sensor suhu (misalnya LM35) dan menyambungkan ke Arduino. Kalau suhu tersebut ingin ditampilkan pada LCD, tinggal membeli sebuah LCD dan menambahkan library LCD pada program yang sama, dan seterusnya.
Komunitas open source yang saling mendukung
Software Linux, PHP, MySQL atau WordPress perkembangannya begitu pesat karena merupakan software open source dimana ada komunitas yang saling mendukung pengembangan proyek. Demikian juga dengan Arduino, pengembangan hardware dan software Arduino didukung oleh pencinta elektronika dan pemrograman di seluruh dunia. Contoh, interface USB pada Arduino Uno mengambil dari LUFA project. Library dan contoh-contoh program adalah sumbangan dari beberapa programmer mikrokontroler, seperti Tom Igoe, dsb
Preview Arduino UNO
Arduino Uno adalah board mikrokontroler berbasis ATmega328 (datasheet).
Memiliki 14 pin input dari output digital dimana 6 pin input tersebut
dapat digunakan sebagai output PWM dan 6 pin input analog, 16 MHz
osilator kristal, koneksi USB, jack power, ICSP header, dan tombol
reset. Untuk mendukung mikrokontroler agar dapat digunakan, cukup hanya
menghubungkan Board Arduino Uno ke komputer dengan menggunakan kabel USB
atau listrik dengan AC yang-ke adaptor-DC atau baterai untuk
menjalankannya.
Uno berbeda dengan semua board sebelumnya dalam hal koneksi
USB-to-serial yaitu menggunakan fitur Atmega8U2 yang diprogram sebagai
konverter USB-to-serial berbeda dengan board sebelumnya yang menggunakan
chip FTDI driver USB-to-serial.
Nama “Uno” berarti satu dalam bahasa Italia, untuk menandai
peluncuran Arduino 1.0. Uno dan versi 1.0 akan menjadi versi referensi
dari Arduino. Uno adalah yang terbaru dalam serangkaian board USB
Arduino, dan sebagai model referensi untuk platform Arduino, untuk
perbandingan dengan versi sebelumnya, lihat indeks board Arduino.
Summary
Microcontroller ATmega328Skematis & Desain Referensi
Operasi dengan daya 5V Voltage
Input Tegangan (disarankan) 7-12V
Input Tegangan (batas) 6-20V
Digital I / O Pins 14 (dimana 6 memberikan output PWM)
Analog Input Pin 6
DC Lancar per I / O Pin 40 mA
Saat 3.3V Pin 50 mA DC
Flash Memory 32 KB (ATmega328) yang 0,5 KB digunakan oleh bootloader
SRAM 2 KB (ATmega328)
EEPROM 1 KB (ATmega328)
Clock Speed ?16 MHz
EAGLE file: Arduino-uno-referensi-design.zip
Skema: Arduino-uno-schematic.pdf
Catu Daya
Uno Arduino dapat diaktifkan melalui koneksi USB atau dengan catu daya
eksternal (otomatis). Eksternal (non-USB) daya dapat berasal baik dari
AC-ke adaptor-DC
atau baterai. Adaptor ini dapat dihubungkan dengan menancapkan plug
jack pusat-positif ukuran 2.1mm konektor POWER. Ujung kepala dari
baterai dapat dimasukkan kedalam Gnd dan Vin pin header dari konektor
POWER. Kisaran kebutuhan daya yang disarankan untuk board Uno adalah 7
volt sampai
dengan 12 volt, jika diberi daya kurang dari 7 volt kemungkinan pin 5v
Uno dapat beroperasi tetapi tidak stabil kemudian jika diberi daya lebih
dari 12V, regulator tegangan bisa panas dan dapat merusak board Uno.
Pin listrik adalah sebagai berikut:
- VIN. Tegangan masukan kepada board Arduino ketika itu menggunakan sumber daya eksternal (sebagai pengganti dari 5 volt koneksi USB atau sumber daya lainnya).
- 5V. Catu daya digunakan untuk daya mikrokontroler dan komponen lainnya.
- 3v3. Sebuah pasokan 3,3 volt dihasilkan oleh regulator on-board.
- GND. Ground pin.
ATmega328 memiliki 32 KB (dengan 0,5 KB digunakan untuk bootloader),
2 KB dari SRAM dan 1 KB EEPROM (yang dapat dibaca dan ditulis dengan EEPROM liberary).
Masing-masing dari 14 pin digital di Uno dapat digunakan sebagai input atau output, dengan menggunakan fungsi pinMode (), digitalWrite (), dan digitalRead (),
beroperasi dengan daya 5 volt. Setiap pin dapat memberikan atau
menerima maksimum 40 mA dan memiliki internal pull-up resistor (secara
default terputus) dari 20-50 kOhms.
Selain itu, beberapa pin memiliki
fungsi khusus:
- Serial: 0 (RX) dan 1 (TX). Digunakan untuk menerima (RX) dan mengirimkan (TX) TTL data serial. Pin ini dihubungkan ke pin yang berkaitan dengan chip Serial ATmega8U2 USB-to-TTL.
- Eksternal menyela: 2 dan 3. Pin ini dapat dikonfigurasi untuk memicu interrupt pada nilai yang rendah, dengan batasan tepi naik atau turun, atau perubahan nilai. Lihat (attachInterrupt) fungsi untuk rincian lebih lanjut.
- PWM: 3, 5, 6, 9, 10, dan 11. Menyediakan output PWM 8-bit dengan fungsi analogWrite ().
- SPI: 10 (SS), 11 (Mosi), 12 (MISO), 13 (SCK). Pin ini mendukung komunikasi SPI menggunakan SPI library.
- LED: 13. Ada built-in LED terhubung ke pin digital 13. Ketika pin bernilai nilai HIGH, LED on, ketika pin bernilai LOW, LED off.
- Uno memiliki 6 masukan analog, berlabel A0 sampai dengan A5, yang masing-masing menyediakan 10 bit dengan resolusi (yaitu 1024 nilai yang berbeda). Selain itu, beberapa pin memiliki fungsi khusus:
- I2C: A4 (SDA) dan A5 (SCL). Dukungan I2C (TWI) komunikasi menggunakan perpustakaan Wire.
- Aref. Tegangan referensi (0 sampai 5V saja) untuk input analog. Digunakan dengan fungsi analogReference ().
- Reset. Bawa baris ini LOW untuk me-reset mikrokontroler.
Komunikasi
Uno Arduino memiliki sejumlah fasilitas untuk berkomunikasi dengan
komputer, Arduino lain, atau mikrokontroler lainnya. ATmega328
menyediakan UART TTL (5V) untuk komunikasi serial, yang tersedia di pin
digital 0 (RX) dan 1 (TX). Sebuah ATmega8U2 sebagai saluran komunikasi
serial melalui USB dan sebagai port virtual com untuk perangkat lunak
pada komputer. Firmware ’8 U2 menggunakan driver USB standar COM, dan
tidak ada driver eksternal yang diperlukan. Namun, pada Windows
diperlukan, sebuah file inf. Perangkat lunak Arduino terdapat monitor
serial yang memungkinkan digunakan memonitor data tekstual sederhana
yang akan dikirim ke atau dari board Arduino. LED RX dan TX di papan
tulis akan berkedip ketika data sedang dikirim melalui chip
USB-to-serial dengan koneksi USB ke komputer (tetapi tidak untuk
komunikasi serial pada pin 0 dan 1).
Sebuah SoftwareSerial library memungkinkan untuk berkomunikasi secara serial pada salah satu pin digital pada board Uno’s.
ATmega328 juga mendukung I2C (TWI) dan komunikasi SPI. Perangkat
lunak Arduino termasuk perpustakaan Kawat untuk menyederhanakan
penggunaan bus I2C, lihat dokumentasi untuk rincian. Untuk komunikasi SPI, menggunakan perpustakaan SPI.
Uno Arduino dapat diprogram dengan menggunakan software Arduino (download). Pilih “Arduino Uno dari menu> Peralatan Board (sesuai dengan mikrokontroler).
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.
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).
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).
- ( = ) Digunakan untuk membuat sesuatu menjadi sama dengan nilai yang lain (misalnya: x = 10 * 2, x sekarang sama dengan 20).
- ( % ) Digunakan untuk Menghasilkan sisa dari hasil pembagian suatu angka dengan angka yang lain (misalnya: 12 % 10, ini akan menghasilkan angka 2).
- ( + ) Penjumlahan
- ( - ) Pengurangan
- ( *) Perkalian
- ( / ) Pembagian
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
- 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.
- digitalWrite(pin, value) Ketika sebuah pin ditetapkan sebagai OUTPUT, pin tersebut dapat dijadikan HIGH (ditarik menjadi 5 volts) atau LOW (diturunkan menjadi ground).
- 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).
Arduino adalah mesin digital tetapi mempunyai kemampuan untuk
beroperasi di dalam alam analog (menggunakan trik). Berikut ini cara
untuk menghadapi hal yang bukan digital.
- 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).
- 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).
Analog Input dan Output pada Arduino
Pada saat kita menggunakan tombol sebagai sinyal input/masukan pada
pin input Arduino maka sebenarnya kita hanya memberikan dua kemungkinan
kondisi sinyal masukan yaitu tombol tertekan atau tombol tidak tertekan.
Pada saat tombol tertekan kita menghubungkan atau memberikan tegangan 5
volt pada masukan sedangkan sebaliknya pada saat tombol dilepas hanya
memberikan tegangan 0 volt.
Kondisi input yang demikian dikenal
sebagai digital input dengan logika 1 dan 0, dimana 1 untuk tegangan
HIGH atau 5 volt dan 0 untuk tegangan LOW atau 0 volt. Begitu juga
halnya pada sisi output, jika hanya melibatkan dua kondisi keluaran
seperti misalnya saat menghidupkan dan memadamkan led pada suatu saat
tertentu maka kita hanya melibatkan dua kondisi output digital. Output
digital 1 atau HIGH dengan output tegangan 5 volt dan output digital 0
atau LOW dengan output tegangan 0 volt.
Pada beberapa sistim kontrol, pengolahan input dan output secara digital
mungkin sudah memenuhi kinerja yang dibutuhkan. Akan tetapi pada
kondisi tertentu ada kemungkinan dihadapkan pada kondisi input dan
output yang membutuhkan besaran yang berubah-ubah dengan nilai yang
kontinyu dan tidak lagi hanya dengan dua keadaan seperti halnya sinyal
digital. Sinyal semacam ini disebut sebagai sinyal analog,
sebagai contoh saat kita menghubungkan sensor yang tegangan keluarannya
bervariasi dalam kisaran dari 0 volt sampai 5 volt. Maka dalam hal ini
Arduino sebagai kontroler harus mampu mengidentifikasi/mengolah semua
variasi tegangan keluaran dari sensor yang dihubungkan pada pin inputnya
tersebut. Begitu juga halnya saat diperlukan tegangan output yang
membutuhkan nilai tegangan yang bervariasi, seperti misalnya saat kita
menginginkan mengatur tingkat keterangan sebuah led atau berubahnya
kecepatan sebuah motor.
ANALOG INPUT
Arduino khusus menyediakan 6 kanal (8 kanal pada model Mini dan Nano,
dan 16 pada model Mega) untuk difungsikan sebagai analog input. Analog
ke digital converternya menggunakan resolusi 10 bit yang berarti range
nilai analog dari 0 volt sampai 5 volt akan dirubah kenilai integer 0
sampai 1023, atau resolusinya adalah 5 volt/1024=4,9mV per unit dimana
itu berarti nilai digital yang dihasilkan akan berubah setiap perubahan
4,9mV dari tegangan input analognya. Akan tetapi range input analog dan
resolusi tersebut dapat dirubah dengan fungsi analogReference().
Perintah yang digunakan untuk fungsi analog input ini adalah:
- analogRead(pin): berfungsi untuk membaca nilai analog pada input pin yang akan menghasilkan nilai integer antara 0-1023.
- analogReference(parameter): berfungsi untuk menentukan referensi yang digunakan. Parameternya meliputi:
- DEFAULT: default analog reference yaitu 5V (pada board Arduino 5V) atau 3,3 volt (pada board Arduino 3,3 V)
- INTERNAL: built-in referensi internal tergantung pada jenis mikrokontroler yang terpasang pada board Arduino, 1.1 volt pada ATmega168 atau ATmega328 dan 2.56 volt pada ATmega8.
- INTERNAL1V1: a built-in referensi internal 1.1V (khusus Arduino Mega)
- INTERNAL2V56: a built-in referensi internal 2,56V (khusus Arduino Mega)
- EXTERNAL: pilihan referensi yang tergantung pada tegangan yang diberikan pada pin AREF(hanya dengan range tegangan 0 sampai 5V).
Perlu untuk diperhatikan, jangan menggunakan referensi dibawah 0 volt
atau lebih dari 5 volt dan pastikan memilih referensi external sebelum
perintah analogRead() jika menghubungkan pin AREF dengan referensi
eksternal karena jika tidak akan bisa merusak mikrokontrol.
Secara teori suatu analog output akan mengeluarkan output tegangan
bervariasi sesuai dengan nilai yang dikehendaki, maka seharusnya pin
output analog Arduino seharusnya mampu mengeluarkan tegangan output
dengan kisaran tegangan dari 0 V sampai 5V. Akan tetapi tidak demikian
adanya, karena pin-pin Arduino yang difungsikan sebagai output
sebenarnya hanya mampu sebagai digital output yaitu hanya mampu
mengeluarkan tegangan 0V atau 5V. Lalu bagaimana Arduino menangani
Analog Output tersebut? Arduino menggunakan cara Pulsa Wide Modulasi
(PWM) atau modulasi lebar pulsa untuk menghasilkan analog output yang
dikehendaki. Metode PWM ini menggunakan pendekatan perubahan lebar pulsa
untuk menghasilkan nilai tegangan analog yang diinginkan. Pin yang
difungsikan sebagai PWM analog output akan mengeluarkan sinyal pulsa
digital dengan frekwensi 490 Hz dimana nilai tegangan analog diperoleh
dengan merubah Duty Cycle atau perbandingan lamanya pulsa HIGH terhadap
periode (T) dari sinyal digital tersebut. Jika pulsa HIGH muncul selama
setengah dari periode sinyal maka akan menghasilkan duty cycle 5o% yang
berarti sinyal analog yang dihasilkan sebesar setengah dari tegangan
analog maksimal yaitu 1/2 dari 5 V atau sama dengan 2,5 V begitu juga
halnya jika pulsa HIGH hanya seperempat bagian dari periode sinyal maka
tegangan analog identik yang dihasilkan adalah 1/4 dari 5V = 1,25 V dan
seterusnya.
- Pin: nomor pin Arduino yang akan digunakan sebagai analog output
- value: nilai duty cycle yang diinginkan dengan nilai 0-255, yang berarti nilai 0 untuk 0Volt dan 255 untuk tegangan keluaran maksimum atau 5Volt.
Berikutnya mari kita mencoba aplikasi input output analog ini secara
langsung pada Arduino. Untuk yang pertama saya menggunakan potensiometer
yang dihubungkan pada analog pin 0 seperti pada gambar berikut ini:
Pada latihan ini akan menampilkan pada serial monitor nilai
input analog yang dihasilkan dengan merubah posisi potensiometer.
Sketchnya sebagai berikut:
int analogPin = 0; int val = 0; void setup() { Serial.begin(9600); } void loop() { val = analogRead(analogPin); Serial.println(val,DEC); //tampilkan pada serial monitor dalam desimal Serial.println(val,BIN); //tampilkan pada serial monitor dalam biner delay(1000); //merefresh tampilan setiap 1 detik }
Dan berhasil…posisi potensio mentok minimal akan menghasilkan nilai 0
dan posisi potensio mentok maksimal menghasilkan nilai 1023 atau
1111111111(biner).
Lanjut berikutnya mencoba analog output dengan mengeluarkan sinyal
analog ke pin 9 yang dihubungkan dengan rangkaian seri resistor dan led
seperti rangkaian berikut:
int kecerahan = 0; int levelperubah = 5;//step perubahan kecerahan void setup() { Serial.begin(9600); } void loop() { analogWrite(9, kecerahan); Serial.println(kecerahan);//tampilkan kecerahan di serial monitor kecerahan = kecerahan + levelperubah;//perbaharui nilai kecerahan if (kecerahan == 0 || kecerahan == 255) {//jika mencapai nilai batas levelperubah = -levelperubah ; //berubah kenilai sebaliknya } delay(500); }
Hasilnya kecerahan led akan berubah setiap 1/2 detik dengan step
perubahan 5 digit, setelah mencapai kecerahan maksimum (tampilan pada
serial monitor 255) akan meredup kembali sampai led padam (tampilan pada
serial monitor 0) dan akan terus berulang kembali begitu seterusnya.
Terakhir mengkombinasikan analog input dari potensiometer untuk
mengatur analog output mengatur kecerahan dari led, berikut gambar:
const int analogInPin = 0; // analog input pada pin analog 0 const int analogOutPin = 9; // analog output pada pin 9/terpasang led int sensorValue = 0; // variable input analog int outputValue = 0; // variable output analog void setup() { // inisialisasi komunikasi serial pada 9600 bps: Serial.begin(9600); } void loop() { // membaca nilai analog in: sensorValue = analogRead(analogInPin); // memetakan kedalam kisaran output analog: outputValue = map(sensorValue, 0, 1023, 0, 255); // merubah nilai analog output: analogWrite(analogOutPin, outputValue); // mencetak pada serial monitor: Serial.print("sensor = " ); Serial.print(sensorValue); Serial.print(" output = "); Serial.println(outputValue); // tunggu 20 milidetik sebelum lanjut ke pembacaan berikutnya delay(20); }
Pada sketch diatas digunakan function “map()” untuk memetakan input
analog yang resolusinya 1024 ke output analog yang resolusinya hanya
256.
Tidak ada komentar:
Posting Komentar