Panduan Mikrokontroler Arduino Uno
Panduan Mikrokontroler Arduino Uno
Disusun oleh :
Anisa Eka Pujianti
3.34.18.0.04
IK-3A
I. TUJUAN
1. Mahasiswa mampu memahami board mikrokontroler Arduino
2. Mahasiswa mampu memprogram mikrokontroler Arduino
3. Mahasiswa mampu membuat aplikasi dengan mikrokontroler Arduino
II. PERALATAN
1. Sebuah komputer
2. Software Proteus 8
3. Software Arduino IDE
4. Microsoft Word
Physical computing
Untuk memahami Arduino, terlebih dahulu kita harus memahami terlebih dahulu apa yang
dimaksud dengan physical computing. Physical computing adalah membuat sebuah sistem
atau perangkat fisik dengan menggunakan software dan hardware yang sifatnya interaktif yaitu
dapat menerima rangsangan dari lingkungan dan merespon balik. Physical computing adalah
sebuah konsep untuk memahami hubungan yang manusiawi antara lingkungan yang sifat
alaminya adalah analog dengan dunia digital. Pada prakteknya konsep ini diaplikasikan dalam
desaindesain alat atau projek- projek yang menggunakan sensor dan microcontroller untuk
menerjemahkan input analog ke dalam sistem software untuk mengontrol gerakan alat-alat
elektro-mekanik seperti lampu, motor dan sebagainya.
Prototype
Pembuatan prototype merupakan kegiatan yang sangat penting di dalam proses physical
computing karena pada tahap inilah seorang perancang melakukan eksperimen dan uji coba
dari berbagai jenis komponen, ukuran, parameter, program komputer dan sebagainya berulang-
ulang kali sampai diperoleh kombinasi yang paling tepat. Dalam hal ini perhitungan angka-
angka dan rumus yang akurat bukanlah satu-satunya faktor yang menjadi kunci sukses di dalam
mendesain sebuah alat karena ada banyak faktor eksternal yang turut berperan, sehingga proses
mencoba dan menemukan/mengoreksi kesalahan perlu melibatkan hal-hal yang sifatnya non-
eksakta.
Pada masa lalu (dan masih terjadi hingga hari ini) bekerja dengan hardware berarti membuat
rangkaian setiap komponen elektronika(resistor, kapasitor, etc) disambungkan secara fisik
dengan kabel atau jalur tembaga yang disebut dengan istilah “hard wired” sehingga untuk
merubah rangkaian maka sambungan-sambungan itu harus diputuskan dan disambung kembali.
Dengan hadirnya teknologi digital dan microprocessor fungsi yang sebelumnya dilakukan
dengan hard wired digantikan dengan software. Dengan software prototype lebih mudah diubah
dibandingkan hardware, dengan beberapa penekanan tombol kita dapat merubah logika alat
secara radikal dan mencoba versi kedua, ke-tiga dan seterusnya dengan cepat tanpa harus
mengubah pengkabelan dari rangkaian.
Arduino
Arduino dikatakan sebagai sebuah platform dari physical computing yang bersifat open source.
Pertama-tama perlu dipahami bahwa kata “platform” di sini adalah sebuah pilihan kata yang
tepat. Arduino tidak hanya sekedar sebuah alat pengembangan, tetapi ia adalah kombinasi dari
hardware, bahasa pemrograman dan Integrated Development Environment (IDE) yang
canggih. IDE adalah sebuah software yang sangat berperan untuk menulis program, meng-
compile menjadi kode biner dan meng- upload ke dalam memory microcontroller. IDE adalah
sebuah software yang sangat berperan untuk menulis program, meng- compile menjadi kode
biner dan meng- upload ke dalam memory microcontroller.
Arduino berevolusi menjadi sebuah platform karena ia menjadi pilihan dan acuan bagi banyak
praktisi karena bisa menyelesaikan pekerjaan dalam cara yang mudah baik secara display dan
konfigurasi. Salah satu yang membuat Arduino memikat hati banyak orang adalah karena
sifatnya yang open source, baik untuk hardware maupun software-nya. Diagram rangkaian
elektronik Arduino digratiskan kepada semua orang. Setiap bagian dari arduino bisa bebas
men-download seperti gambarnya, membeli komponenkomponennya, membuat PCB-nya dan
merangkainya sendiri tanpa harus membayar kepada para pembuat Arduino. Sama halnya
dengan IDE Arduino yang bisa di-download dan diinstal pada komputer secara gratis.
Gambar 1.4. IDE Arduino
1. Software, dari IDE untuk menulis program, driver untuk koneksi dengan komputer, contoh
program dan library untuk pengembangan program.
2. Hardware, papan input/output (I/O).
Spesifikasi :
Bagian Arduino Detail Info
Chip mikrokontroller ATmega328P
Tegangan operasi 5V
Tegangan input (yang direkomendasikan,
7V - 12V
via jack DC)
Tegangan input (limit, via jack DC) 6V - 20V
14 buah, 6 diantaranya
Digital I/O pin menyediakan
PWM
Analog Input pin 6 buah
Arus DC per pin I/O 20 mA
Arus DC pin 3.3V 50 mA
Memori Flash 32 KB, 0.5 KB telah digunakan
untuk
bootloader
SRAM 2 KB
EEPROM 1 KB
Clock speed 16 Mhz
Dimensi 68.6 mm x 53.4 mm
Berat 25 g
Proteksi
Development board Arduino Uno R3 telah dilengkapi dengan polyfuse yang dapat direset
untuk melindungi port USB komputer/laptop anda dari korsleting atau arus berlebih.
Meskipun kebanyakan komputer telah memiliki perlindungan port tersebut didalamnya
namun sikring pelindung pada Arduino Uno memberikan lapisan perlindungan tambahan
yang membuat anda bisa dengan tenang menghubungkan Arduino ke komputer anda. Jika
lebih dari 500mA ditarik pada port USB tersebut, sirkuit proteksi akan secara otomatis
memutuskan hubungan, dan akan menyambung kembali ketika batasan aman telah
kembali.
Power Supply
Board Arduino Uno dapat ditenagai dengan power yang diperoleh dari koneksi kabel USB,
atau via power supply eksternal. Pilihan power yang digunakan akan dilakukan secara
otomatis
External power supply dapat diperoleh dari adaptor AC-DC atau bahkan baterai, melalui
jack DC yang tersedia, atau menghubungkan langsung GND dan pin Vin yang ada di
board. Board dapat beroperasi dengan power dari external power supply yang memiliki
tegangan antara 6V hingga 20V. Namun ada beberapa hal yang harus anda perhatikan
dalam rentang tegangan ini. Jika diberi tegangan kurang dari 7V, pin 5V tidak akan
memberikan nilai murni 5V, yang mungkin akan membuat rangkaian bekerja dengan tidak
sempurna. Jika diberi tegangan lebih dari 12V, regulator tegangan bisa over heat yang
pada akhirnya bisa merusak pcb. Dengan demikian, tegangan yang di rekomendasikan
adalah 7V hingga 12V Beberapa pin power pada Arduino Uno :
• GND. Ini adalah ground atau negatif.
• Vin. Ini adalah pin yang digunakan jika anda ingin memberikan power langsung ke
board Arduino dengan rentang tegangan yang disarankan 7V - 12V
• Pin 5V. Ini adalah pin output dimana pada pin tersebut mengalir tegangan 5V yang
telah melalui regulator
• 3V3. Ini adalah pin output dimana pada pin tersebut disediakan tegangan 3.3V yang
telah melalui regulator
• IOREF. Ini adalah pin yang menyediakan referensi tegangan mikrokontroller.
Biasanya digunakan pada board shield untuk memperoleh tegangan yang sesuai,
apakah 5V atau 3.3V
Memori
Chip ATmega328 pada Arduino Uno R3 memiliki memori 32 KB, dengan 0.5 KB dari
memori tersebut telah digunakan untuk bootloader. Jumlah SRAM 2 KB, dan EEPROM 1
KB, yang dapat di baca-tulis dengan menggunakan EEPROM library saat melakukan
pemrograman.
Input dan Output (I/O)
Seperti yang telah disebutkan sebelumnya, Arduino Uno memiliki 14 buah digital pin yang
dapat digunakan sebagai input atau output, sengan menggunakan fungsi pinMode(),
digitalWrite(), dan digital(Read). Pin-pin tersebut bekerja pada tegangan 5V, dan setiap
pin dapat menyediakan atau menerima arus 20mA, dan memiliki tahanan pull-up sekitar
20-50k ohm (secara default dalam posisi disconnect). Nilai maximum adalah 40mA, yang
sebisa mungkin dihindari untuk menghindari kerusakan chip mikrokontroller Beberapa pin
memiliki fungsi khusus :
• Serial, terdiri dari 2 pin : pin 0 (RX) dan pin 1 (TX) yang digunakan untuk menerima
(RX) dan mengirim (TX) data serial.
• External Interrups, yaitu pin 2 dan pin 3. Kedua pin tersebut dapat digunakan untuk
mengaktifkan interrups. Gunakan fungsi attachInterrupt()
• PWM: Pin 3, 5, 6, 9, 10, dan 11 menyediakan output PWM 8-bit dengan menggunakan
fungsi analogWrite()
• SPI : Pin 10 (SS), 11 (MOSI), 12 (MISO), dan 13 (SCK) mendukung komunikasi SPI
dengan menggunakan SPI Library
• LED : Pin 13. Pada pin 13 terhubung built-in led yang dikendalikan oleh digital pin no
13.
• TWI : Pin A4 (SDA) dan pin A5 (SCL) yang mendukung komunikasi TWI dengan
menggunakan Wire Library
Arduino Uno memiliki 6 buah input analog, yang diberi tanda dengan A0, A1, A2, A3,
A4, A5. Masing-masing pin analog tersebut memiliki resolusi 10 bits (jadi bisa memiliki
1024 nilai). Secara default, pin-pin tersebut diukur dari ground ke 5V, namun bisa juga
menggunakan pin AREF dengan menggunakan fungsi analogReference(). Beberapa in
lainnya pada board ini adalah :
• AREF. Sebagai referensi tegangan untuk input analog.
• Reset. Hubungkan ke LOW untuk melakukan reset terhadap mikrokontroller. Sama
dengan penggunaan tombol reset yang tersedia.
Komunikasi
Fungsi setup() hanya di panggil satu kali ketika program pertama kali di jalankan. Ini
digunakan untuk pendefinisian mode pin atau memulai komunikasi serial. Fungsi setup()
harus di ikut sertakan dalam program walaupun tidak ada statement yang di jalankan.
void setup()
{ pinMode(13,OUTPUT);// mengset ‘pin’ 13 sebagai
output }
Loop ()
Setelah melakukan fungsi setup() maka secara langsung akan melakukan fungsi loop()
secara berurutan dan melakukan instruksi-instruksi yang ada dalam fungsi loop().
void loop()
{
digitalWrite(13, HIGH);
delay(1000); digitalWrite(13, LOW);
delay(1000); }
Function
Function (fungsi) adalah blok pemrograman yang mempunyai nama dan mempunyai
statement yang akan di eksekusi ketika function di panggil. Fungsi void setup() dan void
loop() telah di bahas di atas dan pembuatan fungsi yang lain akan di bahas selanjutnya.
Cara pendeklarasian function
type functionName(parameters)
{
// Statement;
}
Contoh:
int delayVal()
{
int v; //Mendefinisikan variabel
v =analogRead(pot); //konversi 0-1023 ke 0-255 v/=4;
//Menjalankan fungsi aritmetik
return v; //return nilai v
}
{ } curly braces
Curly brace mendefinisikan awal dan akhir dari sebuah blok fungsi. Apabila ketika
memprogram dan progremer lupa memberi curly brace tutup maka ketika di compile akan
terdapat laporan error.
; Semicolon
Semicolon harus di berikan pada setiap statement program yang kita buat ini merupakan
pembatas setiap statement program yang di buat.
/*...*/ blok comment
Semua statement yang di tulis dalam block comments tidak akan di eksekusi dan tidak
akan di compile sehingga tidak mempengaruhi besar program yang di buat untuk di
masukan dalam board arduino.
// Line Comments
Sama halnya dengan block comments, line coments pun sama hanya saja yang di jadikan
komen adalh perbaris.
Variable
Variable adalah sebuah penyimpan nilai yang dapat di gunakan dalam program.Variable
dapat di rubah sesuai dengan instruksi yang kita buat.Ketika mendeklarisikan variable
harus di ikut sertakan type variable serta nilai awal variable.
Type variableName = 0;
Contoh
Int inputVariable = 0;
//mendefinisikan sebuah variable bernama inputVariable
dengan nilai awal 0
inputVariable = analogRead(2); // menyimpan nilai yang ada
di analog pin 2 ke inputVariable
Variable scope
Sebuah variable dapat di deklarasikan pada awal program sebelum void setup(), secara
local di dalam sebuah function, dan terkadang di dalam sebuah block statement
pengulangan. Sebuah variable global hanya satu dan dapat di gunakan pada semua block
function dan statement di dalam program. Variable global di deklarasikan pada awal
program sebelum function setup(). Sebuah variable local di deklarasikan di setiap block
function atau di setiap block statement pengulangan dan hanya dapat di gunakan pada
block yang bersangkutan saja.
Contoh penggunaan:
int value; //‘value’adalah variable global dan dapat di
gunakan pada semua block function
void setup()
{
// no setup needed
}
void loop()
{ for (int i=0; i<20;)
// 'i' hanya dapat di gunakan dalam pengulangan saja
{ i++;
}
float f; // 'f' sebagai variable local
}
Tipe Data
Byte type byte dapat menyimpan 8-bit nilai angka bilangan asli tanapa koma. Byte
memiliki range 0 – 255.
Integer
Integer adalah tipe data yang utama untuk menyimpan nilai bilangan bulat tanpa
koma.Penyimpanan integer sebesar 16- bit dengan range 32.767 sampai -32.768.
Perluasan ukuran untuk long integer, penyimpanan long integer sebesar 32-bit dengan
range 2.147.483.647 sampai - 2.147.483.648 Long longVariable = 500000; //
mendeklarasikan ‘longVariable’ sebagai type long .
Float
Float adalah tipe data yang dapat menampung nilai decimal, float merupakan penyimpan
yang lebih besar dari integer dan dapat menyimpan sebesar 32-bit dengan range
3.4028235E+38 sampai -3.4028235E+38
Array adalah kumpulan nilai yang dapat di akses dengan index number, nilai yang terdapat
dalam array dapat di panggil
dengan cara menuliskan nama array dan index number. Array dengan index 0 merupakan
nilai pertama dari array.Array perlu di deklarasikan dan kalau perlu di beri nilai sebelum di
gunakan.
a = a + b b = c – d e = f * x g = p / v
dalam menggunakan operan aritmatik harus hati-hati dalam menentukan tipe data yang
digunakan jangan sampai terjadi overflow range data.
Compound Assignments
Statement ini membadingkan dua variable dan apabila terpenuhi akan bernilai 1 atau true.
a. Logical AND
Arduino mempunyai beberapa variable yang sudah di kenal yang kita sebut konstanta.Ini
membuat memprogram lebih mudah untuk di baca.Konstanta di kelasifikasi berdasarkan
group.
True/False
If ( b == TRUE )
{
//doSomething
}
HIGH / LOW
Konstanta ini mendifinisikan aktifitas pin HIGH atau LOW dan di gunakan ketika
membaca dan menulis ke digital pin. HIGH di definisikan sebagai 1 sedangkan LOW
sebagai 0.
digitalWrite( 13, HIGH );
Input/Output
Konstanta ini digunakan dengan fungsi pinMode() untuk mendifinisikam mode pin digital,
sebagai input atau output
pinMode( 13, OUTPUT );
Flow Control
a. If
If Operator if menguji sebuah kondisi seperti nilai analog sudah berada di bawah nilai
yang kita kehendaki atau belum, apabila terpenuhi maka akan mengeksekusi baris program
yang ada dalam brackets kalau tidak terpenuhi maka akan mengabaikan baris program
yang ada dalam brackets.
If ( someVariable ?? value )
{
//DoSomething; }
b. If...Else
Operator if...else mengtest sebuah kondisi apabila tidak sesuai dengan kondisi yang
pertama maka akan mengeksekusi baris program yang ada di else.
If ( inputPin == HIGH )
{
//Laksanakan rencana A;
}
Else
{
//Laksanakan rencana B;
}
For
Operator for digunakan dalam blok pengulangan tertutup.
For ( initialization; condition; expression )
{
//doSomethig;
}
While
Operator while akan terus mengulang baris perintah yang ada dalam bracket sampai
ekspresi sebagai kondisi pengulangan benilai salah.
While ( someVariable ?? value )
{
//doSomething;
}
Do...While
Sama halnya dengan while() hanya saja pada operator Do...while tidak melakukan
pengecekan pada awal tapi di akhir, sehingga otomatis akan melakukan satu kali baris
perintah walaupun pada awalnya sudah terpenuhi.
Do
{
//doSomething;
Digital I/O
Input / Output Digital pada breadboard arduino ada 14, pengalamatnya 0 - 13, ada saat
tertentu I/O 0 dan 1 tidak bisa di gunakan karena di pakai untuk komunikasi serial,
sehingga harus hati-hati dalam pengalokasian I/O.
PinMode(pin,Mode)
Digunakan dalam void setup() untuk mengkonfigurasi pin apakah sebagai Input atau
Output. Arduino digital pins secara default di konfigurasi sebagai input sehingga untuk
merubahnya harus menggunakan operator pinMode(pin, mode).
pinMode (pin, OUTPUT); // mengset pin sebagai output
digitalWrite(pin, HIGH); // pin sebagai source voltage
digitalRead(pin) membaca nilai dari pin yang kita kehendaki dengan hasil HIGH atau
LOW .
Value = digitalRead(pin);// mengset ‘value’ sama dengan pin
digitalWrite(pin, value) digunakan untuk mengset pin digital. Pin digital arduino
mempunyai 14 ( 0 – 13 ).
digitalWrite ( pin, HIGH ); // set pin to HIGH
Analog I/O
Input / Ouput analog pada breadboard arduino ada 6 pengalamatnya 0 – 5 analogRead(pin)
Membaca nilai pin analog yang memiliki resolusi 10-bit. Fungsi ini hanya dapat bekerja
pada analog pin (0-5). Hasil dari pembacaan berupa nilai integer dengan range 0 sampai
1023.
Value = analogRead(pin); // mengset ‘value’ sama
Time
a. delay(ms)
Menghentikan program untuk sesaat sesuai dengan yang di kehendaki, satuanya dalam
millisecond.
Delay(1000);// menunggu selama satu detik b. millis()
Math
a. Min(x,y)
Membadingkan 2 variable dan akan mengembalikan nilai yang paling kecil.
value = min(value, 100);// set ‘value’ sebagai nilai yang
paling kecil dari kedua nilai
b. max(x,y)
Max merupakan kebalikan dari min.
value = max(value, 100);//set ‘value’ sebagai nilai yang
paling besar dari kedua nilai
Serial.begin(rate)
Statement ini di gunakan untuk mengaktifkan komunikasi serial dan mengset baudrate.
void setup()
{
Serial.begin(9600);//open serial port and set baudrate 9600
bps
}
Serial.prinln(data)
Mengirimkan data ke serial port
Serial.println(100); // mengirimkan 100