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







 









