BASIC #1
www.bogor-instrument.id | 0812-3107-8488 | Cluster Griya Cakrawala Block C8 Pondok Rajeg Cibinong Bogor JABAR
Arduino Basic #1 2018
1. Pengenalan Arduino
Arduino adalah platform prototype opensource atau terbuka yang mengedepankan penggunaan yang
mudah dan simple dari sisi hardware maupun software di bidang mikrokontroller. Arduino sendiri terdiri
atas dua bagian, development board Arduino dan Arduino Software IDE (Integrated Development
Environment) yaitu development tools yang digunakan untuk menulis kode program dan
menguploadnya ke board Arduino dengan mudah. Berikut adalah salah satu penampakan dari apa yang
dimaksud dengan arduino itu sendiri.
Untuk kedepannya, buku ini akan memfokuskan pembaca untuk mengenal lebih jauh board arduino
type UNO saja, karena untuk entry level, board ini sudah cukup mumpuni dengan jumlah fiture dasar
yang melimpah pada suatu mikronkotroler. Dan jika pembaca sudah memahami betul board type Uno
ini, maka secara otomatis, pembaca bisa dengan mudah memahami karakteristik board mikronkontroler
type yang lainnya.
Arduino awal kali diciptakan di Italy, hanya saja, kita bisa menciptakan atau mereduplikasi board arduino
type apa saja sesuai kebutuhan kita karena semua rangkaian, semua wiring sekmatik serta komponen
listnya sudah masuk dalam kategori OPEN SOURCE. Hanya saja pesan penulis, daripada bikin sendiri,
rempong, mending beli di lapak penulis saja ni online shopnya www.bogor-instrument.id
Berikut adalah perbedaan mendasar board arduino yang beredar dipasaran khususnya Indonesia.
Digital
Analog Clock
Boards MCU I/O SRAM EEPROM
Input Pins Speed
pins
Arduino Uno R3 16Mhz
Arduino Promini Atmega328 14 6 2Kb 1Kb 8Mhz/16Mhz
Arduino Nano 8Mhz/16Mhz
Arduino Leonardo ATmega32U4 20 12 2.5Kb 1Kb 16Mhz
Arduino Mega260 Atmega2560 54 16 8Kb 4Kb 16Mhz
Dan masih banyak lagi tipe dan jenis board arduino yang beredar dipasaran yang disesuaikan dengan
kebutuhan seperti Arduino Yun yang digunakan khusus untuk project Internet Of Things, Lilypad yang
digunakan untuk wearable device dan lain lain yang nanti dibahas pada buku selanjutnya.. :)
Berikut adalah penjelasan masing masing blok pin out dari arduino UNO R3 :
Jika ingin mengakses pin digital pada board arduino, maka diperlukan setting terlebih dahulu
untuk menset mode pin tersebut apakah akan digunakan sebagai INPUT ataukah OUTPUT.
Untuk melakukannya cukup dengan menambahkan perintah syntax sebagai berikut:
Berikut adalah salah satu contoh untuk setting mode pada pin digital 13 sebagai OUTPUT dan
pin digital 5 sebagai INPUT
void setup() {
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT);
// initialize digital pin 13 as an output.
pinMode(5, INPUT);
}
Syntax untuk membaca status logika pada pin digital (HIGH/LOW) adalah dengan perintah
sebagai berikut:
digitalRead(pin digital);
Sebagai contoh jika kita ingin membaca status logik (HIGH/LOW) pada pin 5 tadi, maka berikut
adalah syntaxnya:
void loop() {
Serial.println(digitalRead(5)); //hasil logika akan ditampilkan pada serial
terminal
}
Untuk menset atau menulis output suatu digital pin ke logik HIGH atau LOW, maka berikut
adalah format perintahnya:
digitalWrite(pin digital,HIGH/LOW);
Contoh, jika kita ingin menset output dari pin 13 dengan logik HIGH, maka berikut adalah
perintahnya:
void loop() {
//menset output pin 13 ke HIGH
digitalWrite(13,HIGH);
//menset output pin 13 ke LOW
digitalWrite(13,LOW);
}
Pada board arduino uno ada 6 pin analog yang bisa digunakan, yaitu mulai pin A0 - A5.
Semuanya bisa diakses dengan syntax perintah sebagai berikut:
analogRead(sensorPin);
Syntax perintah analogRead() sendiri akan memberikan hasil pembacaan analog to digital
converter (ADC) sampai dengan range decimal 1023, sehingga jika kita ingin mengubahnya ke
bentuk tegangan, maka diperlukan konversi ke nilai tegangan, dengan contoh syntax
perintahnya sebagai berikut:
Sedangkan supply output pin disini adalah pin yang outputnya bisa digunakan sebagai input
supply ke module atau perangkat yang lain diluar rangkaian board arduino. Pada board arduino
type uno, terdapat 2 jenis supply output pin yaitu yang nilai tegangannya 3.3 volt dan 5 volt.
Serial.begin(nilai baudrate);
Sebagai contoh, jika kita ingin menginisialisasi port serial dengan nilai baudrate 9600, maka
berikut adalah syntax perintahnya.
void setup() {
//menset output pin 13 ke HIGH
digitalWrite(13,HIGH);
//menset output pin 13 ke LOW
digitalWrite(13,LOW);
}
Semakin besar nilai baudrate, maka semakin cepat pula data akan ditransmit, namun semakin
pendek pula jarak komunikasi yang bisa ditempuh. Jika diperlukan komunikasi serial dengan
jarak yang lumayan jauh, kita bisa menset nilai baudrate ke yang paling rendah, namun hal
tersebut disesuaikan pula dengan kemampuan perangkat device yang lain.
dimana untuk mencari nilai range yang sesuai dengan duty cycle bisa menggunakan rumus
berikut:
Sebagai contoh jika kita ingin menset output pwm dengan duty cycle sebesar 75% maka dengan
menggunakan rumus diatas, nilai range yang harus dimasukan ke kode adalah 191.
Untuk mengeset pin digital 2 maupun pin digital 3 sebagai input Interrupt, maka kita perlu
menulis sintak perintah sebagai berikut:
dimana
pin adalah digital pin yang ingin digunakann, dalam hal ini board UNO adalah 2 atau 3
ISR adalah interrupt function handler, yaitu fungsi yang akan dieksekusi jika muncul
interrupt
mode, adalah mode pendeteksian trigger interrupt, dalam hal ini ada beberapa mode
yang diperbolehkan:
LOW : deteksi trigger interrupt ketika input pin pada kondisi LOW
CHANGE : deteksi trigger interrupt ketika input pin kondisinya berubah LOW ke
HIGH ataupun HIGH ke LOW
RISING : deteksi trigger interrupt ketika input pin kondisinya berubah dari LOW
ke HIGH
FALLING : deteksi trigger interrupt ketika input pin kondisinya berubah dari
HIGH ke LOW
HIGH : deteksi trigger interrupt ketika input pin pada kondisi HIGH
Berikut adalah contoh kode untuk menset pin digital 2 sebagai interrupt dengan memanggil
fungsi interrupt handler void blink().
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(interruptPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(interruptPin), blink, CHANGE);
}
void loop() {
digitalWrite(ledPin, state);
}
void blink() {
state = !state;
}
Langkah awal sebelum menulis koding adalah dengan menginstall terlebih dahulu software Arduino IDE.
Silahkan download Arduino IDE terbaru di link berikut: Download Page. Disini penulis memilih untuk
mendownload type file instalasi Windows Installer, dimana dengan memilih type installer ini, semua file
yang terasosiasikan dengan arduino ide, semisal file dengan ekstensi *.ino, *.h dan lain lain bisa
langsung dibuka dengan sekali klik tanpa memilih lagi progam ataupun aplikasi mana yang sesuai
dengan type extensi file tersebut.
4. Klik install driver serial port untuk beberapa vendor arduino seperti adafruit dll. Dan klik
Close jika sudah selesai.
5. Ketika sudah sukses terinstall, maka kita bisa langsung running software Arduino IDE
Klik Start -> Arduino
Serial Terminal
Compile / Verify
Upload Sketch
Sketch Name
Editor Window
Comment Line
Notification Bar
Console Window
Cursor Line
Board Status
Berikut adalah keterangan untuk masing - masing fiture dari Arduino IDE software:
Compile/Verify : adalah fiture yang digunakan untuk kompilasi serta pengecekan kode yang
ditulis terkait ada salah penulisan syntax perintah ataupun warning pada algoritma
pemrogramannya. Jika terdapat error waktu kompilasi atau verify, hasilnya akan
ditampilkan pada konsol window dan notification bar.
Upload : adalah fiture yang digunakan untuk mengupload hasil penulisan code yang sudah
diverify atau dicompile tanpa error ke board controller arduino.
Console Window : adalah jendela yang digunakan untuk melihat hasil kompilasi maupun
hasil upload apakah sukses atau masih terdapat kesalahan atau error didalamnya.
Serial Terminal: adalah fiture yang digunakan untuk menampilkan jendela dialog serial
terminal, dimana dengan mengaktifkan fiture ini kita melihat data serial yang masuk atau
yang terbaca pada board arduino, dan fiture ini bisa juga digunakan untuk debugging
manual dengan cara menambahkan fungsi serial print pada code program.
Command Field
Data Logg
Baudrate Selector
Board status, adalah bar informasi status untuk board arduino, di port COM berapa board
tersebut terhubung ke PC atau laptop.
Notification Bar, adalah bar notifikasi hasil kompile maupun hasil upload sketch program ke
board arduino. Jika terdapat error atau kesalahan pada saat kompilasi maupun upload sketch,
maka akan ditmapilkan jenis dan type kesalahannya disini.
Contoh
void loop() {
digitalWrite(ledPin, state);
}
void blink() {
state = !state; // ini adalah komentar disamping kode.
}
Sketch , adalah istilah nama file kode arduino, dan biasanya berkestensi *.ino.
1. Colok kabel USB type B ke port USB pada board Arduino dan Type A ke port USB pada
laptop.
2. Secara otomatis Power LED pada board arduino akan menyala karena sudah diberi power
supply tegangan 5V dari port USB laptop. Ini berarti arduino board sudah siap digunakan
karena sudah mendapat supply tegangan dari port USB laptop.
3. Pada laptop, buka device manager, check apakah driver board Arduino sudah terintall atau
belum, jika sudah terinstall, maka pada device manager bagian Ports (COM & LPT) akan
tampak nama board Arduino Uno yang terhubung dengan COM port tertentu, pada gambar
dibawah, terhubung di port COM4. Jika tidak ada nama board arduino, maka perlu instalasi
driver.
5. Maka akan muncul kotak dialog baru. Pilih Browse my computer for driver software
6. Pada kotak dialog berikutnya, klik Browse dan pilih folder 'drivers' yang terdapat pada folder
installer arduino. Dan pilih OK
8. Jika muncul kotak dialog Windows Security, maka klik install untuk melanjutkan proses
instalasi.
9. Setelah proses instalasi driver arduino selesai, maka klik close, dan pastikan pada device
manager bagian Ports(COM&LPT) board arduino sudah dikenali.
Platform Arduino menggunakan bahasa pemrograman C/C++ yang sudah dimodifikasi dengan tujuan
agar lebih memudahkan orang awam untuk belajar alur pemrograman dari suatu microcontroller.
Struktur program dari platform arduino sendiri terbagi atas 2 fungsi utama yaitu fungsi Setup () dan
fungsi Loop() serta fungsi tambahan yang kita buat sendiri.
Berikut adalah contoh dari fungsi Setup() yang bertujuan untuk menset pin digital 13 sebagai
output.
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(13, OUTPUT);
}
Berikut adalah salah satu contoh algoritma utama suatu program yang bertujuan untuk
memberikan output digital HIGH pada pin 13 setiap 1 detik dan akan menset LOW setiap 1 detik
terus menerus.
1.4.3 Function
Selain kedua fungsi utama diatas, kita bisa menambahkan atau membuat fungsi sendiri.
Berikut adalah contohnya:
Fungsi InitPinMode() akan dipanggil di fungsi void Setup() yang berfungsi untuk
mensetting pin 13 sebagai OUTPUT.
Fungsi BlinkLampu () akan dipanggil di fungsi void Loop() yang berfungsi untuk menset
output digital pin 13 HIGH selama 1 detik dan LOW selama 1 detik kemudian begitu
seterusnya.
void setup(){
InitPinMode();
}
void loop(){
BlinkLampu();
}
//created new function called InitPinMode()
void InitPinMode(){
pinMode(13,OUTPUT);
}
//created new function called BlinkLampu()
void BlinkLampu(){
digitalWrite(13,HIGH); delay(1000);
digitalWrite(13,LOW); delay(1000);
}
nilai suatu variable bisa dinamis, namun bisa juga suatu variable sifatnya statis. Untuk membuat
suatu variable sifatnya statis, maka diperlukan syntax perintah static sebelum type data.
Berikut adalah contohnya:
Pada deklarasi variable diatas, nilai pinLampu selalu 13, tidak akan berubah karena sudah kita
deklarasikan variable tersebut sifatnya statis.
Pada pemrograman arduino, terdapat dua tipe variable, yaitu variable global dan variable local.
Variable global adalah variable yang deklarasinya diluar suatu fungsi, dan nilainya bisa diakses
pada fungsi manapun. Berbeda dengan variable local, variable local hanya dideklarasikan pada
suatu fungsi saja, dan hanya bisa diakses dan digunakan pada fungsi itu sendiri. Berikut adalah
salah satu contoh deklarsi variable global dan variable local.
void setup(){
InitPinMode();
}
void loop(){
BlinkLampu();
}
Pada bagian ini, kita akan belajar mengenal beberapa tipe data yang biasa digunakan pada
pemrograman arduino. Tentu saja tipe data yang akan diulas terlebih dahulu adalah tipe data
sederhana, dimana dengan memahami karakteristik beberapa tipe data yang biasa digunakan,
diharapkan pembaca akan lebih mudah memahami dan memecahkan permasalahan yang timbul pada
saat kompilasi program yang diakibatkan oleh ketidakcocokan tipe data, salah deklarasi tipe data atau
bisa juga salah memperhitungkan jangkauan atau lebar range data yang kurang lebar.
1.5.1 integer
Tipe data integer adalah tipe data yang memiliki angka yang mana nilainya bisa negatif maupun
positif tetapi tidak memiliki nilai decimal alias angka bulat. Contoh, 0, -5, dan 10. Jangkauan nilai
yang untuk tipe data integer adalah -32768 sampai dengan 32767 pada board arduino 16 bit
seperti arduino tipe UNO. Sedangkan untuk tipe arduino tipe lain semisal arduino DUE maupun
SAMD yang notebene adalah 32bit controller, jangkauan range untuk tipe data integer bisa
dimulai pada angka -2147483648 sampai dengan 2147483647, karena pada board tipe tersebut
tipe data integer mampu menyimpan data sebanyak 4 byte.
Untuk mendeklarasikan suatu variable dengan tipe data integer adalah dengan menambah
fungsi int pada awal deklarasi, berikut adalah contoh format syntax perintahnya.
contoh:
1.5.2 float
Variable dengan tipe data float adalah variable yang memiliki nilai cacah dibelakang koma.
Jangkauan range nilainya diantara -3.4028235E+38 sampai dengan 3.4028235E+38. Variable
dengan tipe float ini sangat cocok digunakan untuk pembacaan data analog seperti arus ataupun
tegangan yang membutuhkan presisi lebih bagus daripada bilangan bulat atau integer.
Berikut adalah format perintah untuk mendeklarasikan variable dengan tipe data float:
contoh:
Berikut adalah tabel ASCII yang biasa digunakan pada saat pemrograman arduino.
Untuk mendeklarasikan variable dengan tipe data char adalah dengan mengikuti syntax perintah
sebagai berikut:
char variable_name = decimal_value; atau bisa juga dengan syntax seperti ini,
char variable_name ='karakter';
Contoh,
String nama_variable="teks";
Contoh,
Semakin panjang jumlah karakter yang ditampung pada suatu variable dengan tipe data string,
maka semakin besar pula resource memory yang dibutuhkan. Hal ini mempengaruhi
perfomansi SRAM (Static Random Access Memory) pada board arduino, dimana semakin sedikit
kapasitas SRAM yang tersisa, maka besar kemungkinan mikrokontroller kita akan mengalami
HANG atau bekerja tidak sesuai harapan algoritma pemrograman yang telah kita buat.
1.5.5 byte
Tipe data byte adalah tipe data yang digunakan untuk menyimpan angka bulat dari 0 sampai
dengan 255. Dimana dalam 1 byte terdiri atas 8 bit data yang diwakilkan bilangan binner '1'
atau '0'.
Bit adalah satuan unit data terkecil dalam komputasi digital yang pada dasarnya terdiri dari satu
digit biner (bisa berupa nilai 0 ataupun 1). Bit sebenarnya merupakan singkatan dari Binary Digit
(Digit Biner). Biner merupakan sistem bilangan yang berbasis dua yaitu hanya terdiri dari angka
0 dan 1 saja. 0 (nol) menandakan kondisi “OFF” atau tidak ada aliran arus listrik pada rangkaian
elektronik sedangkan 1 (satu) adalah kondisi “ON” atau adanya aliran arus listrik pada rangkaian
elektronik. Kondisi Bit ini juga dapat mewakilkan nilai logika seperti “TRUE” atau “FALSE” dan
“YES” atau “NO”. Bit biasanya dilambangkan dengan “b” (huruf b kecil). Satuan kecepatan
transfer data pada umumnya menggunakan bit per second (bit per detik) atau disingkat dengan
“bps”.
Cara perhitungan untuk mengkonversikan bilangan biner ke bilangan desimal adalah sebagai
berikut :
000010102 = (0 x 27 ) + (0 x 26 ) + (0 x 25 ) + (0 x 24 ) + (1 x 23 ) + (0 x 22 ) + (1 x 21 ) + (0 x 20)
000010102 = 0 +0 +0 +0 +8 + 0 + 2 + 0
000010102 = 1010
Berikut adalah contoh format perintah untuk mendeklarasikan variable dengan tipe data byte
byte nama_variable=angka_0_sampai_255;
Contoh,
Berikut akan dijelaskan sedikit tentang beberapa operator dasar pada arduino, operator ini meliputi
operator aritmatika (operator yang digunakan pada proses perhitungan matematik) dan operator
pembandingan. Diharapkan dengan mengetahui dasar - dasar operator diatas, pembaca bisa memahami
dan membuat flow atau alur pemrograman dengan baik dan benar.
Tanda
Jenis Operator Deskripsi Contoh
Operator
A = 20;
Men set suatu variable
Set Operator = Men set variable A
dengan nilai tertentu
dengan nilai 20
A=B+10;
Menambah suatu
Menambah variable B
variable dengan suatu
Penambahan + dengan nilai 10 dan
nilai atau variable yang
menyetor hasilnya ke
lain
variable A
C=A-B;
Mengurangi suatu
Mengurangi variable A
variable dengan suatu
Pengurangan - dengan variable B dan
nilai atau variable yang
menyetor nilainya ke
lain
variable C
Mengkalikan suatu C=A*B;
variable dengan Mengkalikan variable A
Pengkalian *
variable yang lain atau dengan B dan menyetor
dengan nilai tertentu hasilnya ke variable C
C=A/B;
Membagi suatu
Membagi variable A
variable dengan
Pembagian / dengan variable B dan
variable yang lain atau
menyetor hasilnya ke
dengan nilai tertentu
variable C
Operator yang C = 20%10;
menghasilkan sisa hasil nilai variable C
Modulus % pembagian dari suatu adalah 0, karena 20 habis
bilangan terhadap dibagi dengan 10 tiada
bilangan lainnya sisa
A!=B;
Membandingkan dua variable
hasilnya adalah
Tidak sama apakah memiliki nilai yang
!= TRUE karena nilai A
dengan berbeda, jika benar, maka output
tidak sama dengan
dari perbandingan adalah TRUE
B
Membandingkan variable sebelah
A<B;
kiri operator apakah memiliki nilai
Hasilnya adalah
Kurang dari < yang lebih kecil dari variable
TRUE karena nilai A
disebelah kanan operator. Jika iya,
kurang dari B
maka outputnya adalah TRUE
Membandingkan variable sebelah
A>B;
kiri operator apakah memiliki nilai
Hasilnya FALSE
Lebih besar dari > yang lebih besar dari variable
karena nilai A
disebelah kanan operator. Jika iya,
kurang dari nilai B
maka outputnya adalah TRUE
Membandingkan variable sebelah
kiri operator, apakah memiliki nilai A<=B;
Kurang dari yang lebih kecil atau sama dengan Hasilnya adalah
<=
sama dengan variable disebelah kanan operator. TRUE, karena nilai
Jika iya, maka outputnya adalah A lebih kecil dari B
TRUE
Lebih besar dari Membandingkan variable sebelah A>=B;
>=
sama dengan kiri operator, apakah memiliki nilai Hasilnya adalah
if(a<=b)//outputnya c=false
c=true;
else
c=false;
if(a>=b)//outputnya c=true
c=true;
else
c=false;
}
Didalam setiap pemrograman pasti diperlukan metode pengambilan keputusan dengan cara mengecek
suatu variable dengan suatu kondisi atau expression yang kita harapkan. Pada arduino, control
statement yang paling sering digunakan adalah pengkondisian IF, IF..ELSE dan SWITCH Case Statement.
Berikut akan dibahas satu per satu fungsi dan perbedaan antar tiap control statement.
1.7.1 IF Statement
IF statement adalah metode pengecekan suatu variable dengan suatu nilai atau variable yang
lain. Jika nilainya benar, maka sekuense atau block statement dibawahnya dikerjakan, jika tidak,
maka block statement dibawahnya tidak dikerjakan atau dilewati. Dengan kata lain, hasil jika
pengecekan tidak benar, maka tidak ada opsi sekuense yang dijalankan kecuali melewatinya.
Berikut adalah flowchart dari IF Statement.
FALSE
Pengecekan
Jika
TRUE
if(ekspresi pengecekan){
Block statement yang akan dieksekusi jika benar (TRUE)
}
contoh:
void setup(){
Serial.begin(9600); //mulai serial communication
int A = 10; //deklarasi variable A dengan nilai awal 10
int B = 8; //deklarasi variable B dengan nilai awal 8
}
void loop(){
if(A>B){ //cek jika A lebih besar B
Serial.println("Nilai A Lebih besar B); //akan diekseusi
}
FALSE
Pengecekan
Jika
if(ekspresi pengecekan){
Block statement yang akan dieksekusi jika benar (TRUE)
}else{
Block statement yang akan dieksekusi jika salah (FALSE)
}
Contoh:
void setup(){
Serial.begin(9600); //mulai serial communication
int A = 10; //deklarasi variable A dengan nilai awal 10
int B = 8; //deklarasi variable B dengan nilai awal 8
}
void loop(){
if(A<B){ //cek jika A kurang dari B
Serial.println("Nilai A Lebih kecil B); //tidak akan diekseusi
}else{
Serial.println("Nilai A Lebih besar B); //akan diekseusi
}
}
TRUE
Case 1 Blok Statement TRUE
FALSE
TRUE
Case 2 Blok Statement TRUE
FALSE
TRUE
Case 3 Blok Statement TRUE
FALSE
TRUE
Case n Blok Statement TRUE
FALSE
default Statement
switch (variable){
case label1:
//run something if variable is equal to label1
break;
case label2:
//run something if variable is equal to label2
break;
case label-n:
//run something if variable is equal to label-n
break;
default:
//run something if none of case label are equal with variable
break;
}
Semisal kita mempunyai suatu variable name "Lampu" dengan nilai range 1,2 dan 3, dimana
masing masing nilai mewakili jalur lampu mana yang akan dinyalakan, maka berikut adalah
contoh pengunaan switch case statement pada kasus diatas.
switch (Lampu){
case 1:
NyalaLampu_1(); //fungsi untuk menyalakan lampu jalur 1
break;
case 2:
NyalaLampu_2(); //fungsi untuk menyalakan lampu jalur 2
break;
case 3:
NyalaLampu_3(); //fungsi untuk menyalakan lampu jalur 3
break;
default:
//jika range tidak valid, maka kasih tau user
Serial.println("Input range tidak valid!!");
break;
}
Perulangan Loops Statement memungkinkan kita untuk mengeksekusi suatu kode atau program
beberapa kali atau bahkan terus menerus, dan berikut adalah bentuk umum dari sebuah pernyataan
loop di sebagian besar pemrograman Arduino:
FALSE
memenuhi
syarat??
Exit Loop
Loop Here TRUE
Untuk format penulisan syntax while loop statement adalah sebagai berikut
while(syarat_loop){
Berikut adalah contoh program pengulangan penambahan variable 'i' dengan angka 1 per tiap
iterasinya sampai nilai variable 'i' mencapai 100, maka exit dari while loop.
while(i<=100){
i++;
Serial.println("Nilai i sekarang"); Serial.println(i);
}
counter=0
FALSE
counter
<=9
Exit Loop
Loop Here TRUE
counter++
Untuk syntax format penulisan metode For Loop Statement adalah sebagai berikut:
for(initial; iterasi_limit;pengurangan atau penambahan ){
//kode program yang ingin dieksekusi berulang
}
Berikut adalah contoh penulisan angka urut dari 0 sampai dengan 20 dan menampilkannya ke
serial port PC, dengan menggunakan metode for loop statement
int angka_urut=0;
void setup(){
Serial.begin(9600);
}
void loop(){
for(angka_urut=0;angka_urut<=20;angka_urut++){
Serial.println(angka_urut);
}
}
Array merupakan sebuah variabel yang menyimpan lebih dari 1 buah data yang memiliki tipe data yang
sama. Jadi dapat dikatakan bahwa array merupakan kumpulan dari data-data tunggal yang dijadikan
dalam 1 variabel array yang alamat memorinya berbeda yang selanjutnya disebut elemen-elemen array
yang bisa kita akses berdasarkan indeks.
Berikut adalah contoh bagaimana mendeklarasikan suatu variable array dengan tipe data integer yang
memiliki elemen - elemen array 1,2,3,4 dan 5 serta cara mengakses tiap elemen arraynya pada arduino.
int var[5]={1,2,3,4,5};
void setup(){
Serial.begin(9600);
}
void loop(){
for(int x=0;x<5;x++){
Serial.println(var[x]); //tulis nilai element array pada sesuai indeks
}
}
Bagian 2 Praktikum
Berikut adalah bagian praktikum dimana dengan melakukan praktikum yang terstruktur,
diharapkan pembaca bisa mengerti dan memahami cara kerja dan arsitektur suatu
mikrokontroler khususnya arduino. Untuk praktek dan kedepannya, kita akan menggunakan
kabel jumper dan project board untuk menyambung kaki - kaki komponen elektronik seperti
resistor, led ataupun module - module arduino lainnya. Dengan menggunakan project board,
kita tidak perlu menyolder, cukup plug and connect kabel jumper saja. Berikut adalah
penampakan kabel jumper dan project board yang dimaksud.
Gambar Rangkain:
Code
/*
Project : 2.1.1 Blinking Lampu LED
Tujuan : Menyalakan LED dan Mematikan Led
Author :Bogor Instrument /Masqush
Date : 2 Jan 2018
*/
void setup() {
// put your setup code here, to run once:
pinMode(12,OUTPUT); //set pin digital 12 sebagai output LED1
pinMode(11,OUTPUT); //set pin digital 11 sebagai output LED2
pinMode(10,OUTPUT); //set pin digital 10 sebagai output LED3
}
4. Klik Upload, dan lampu led akan nyala selama 1 detik dan matik selama 1
detik.
Start Start
Yes
millis>=3sec Process 1
System Delay c
No
Code
/*
Project : 2.1.2 Blinking Lampu LED Without Delay
Tujuan : Menyalakan LED dan Mematikan Led
Author :Bogor Instrument /Masqush
Date : 2 Jan 2018
*/
void setup() {
// set the digital pin as output:
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
}
void loop()
{
//declare milis
unsigned long currentMillis = millis();
Gambar Rangkain:
Code
/*
Project : 2.1.3 Set ON/OFF Relay Module
Tujuan : Bisa mentrigger relay ON atau OFF
Author :Bogor Instrument /Masqush
Date : 2 Jan 2018
*/
void setup() {
// put your setup code here, to run once:
pinMode(8,OUTPUT); //set pin digital 12 sebagai output trigger relay
digitalWrite(8,HIGH); //set high terlebih dahulu karena modulenya
aktif LOW
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(8,LOW); //set pin digtal 8 dengan logik HIGH / 5V
delay(3000); //kasih jeda set ON selama 1 detik 3000 ms -> 3 detik
Gambar Rangkain:
Code:
/*
Project : 2.2.1 Menyala dan mematikan LED dengan Push Button
Tujuan : Bisa memahami cara membaca input digital pada arduino
Author : Bogor Instrument /Masqush
Date : 2 Jan 2018
*/
#define pushButton 8
#define LED 7
void setup() {
//set pin digital 8 sebagai input untuk membaca push button
pinMode(pushButton,INPUT);
//set pin digital 7 sebagai output untuk menyalakan led
pinMode(LED,OUTPUT);
//matikan led terlbeih dahulu
digitalWrite(LED,LOW);
Gambar Rangkain:
Code
/*
Project : 2.2.2
Tujuan : Bisa memahami cara PWM bekerja pada arduino
Author : Bogor Instrument /Masqush
Date : 2 Jan 2018
*/
#define pushButton 8
#define LED 6
int brightness = 0; // how bright the LED is
void setup() {
//set pin digital 8 sebagai input untuk membaca push button
pinMode(pushButton,INPUT);
//set pin digital 7 sebagai output untuk menyalakan led
pinMode(LED,OUTPUT);
//matikan led terlbeih dahulu
analogWrite(LED, 0);
}
void loop() {
if((digitalRead(pushButton)) == LOW ){ //tambah tingkat kecerahan
brightness = brightness + 2;
if(brightness>=150){ //maksimal 255
brightness=0;
}
}
analogWrite(LED, brightness);
delay(30);
}
Gambar Rangkain:
Code
/*
Project : 2.2.3
Tujuan : Bisa memahami apa itu interrupt handler
Author : Bogor Instrument /Masqush
Date : 2 Jan 2018
*/
#define LED 6
volatile int state=LOW; //variable volatile state lampu
void setup() {
//deklarasi interrupt INT0 akan memanggil fungsiBrighntess
attachInterrupt(0,fungsiLED,RISING);
void loop() {
digitalWrite(LED,state);
}
Gambar Rangkain:
Code
/*
Project : 2.3.1
Tujuan : Bisa memanfaatkan fungsi analog khususnya membaca nilai
tegangan
Author : Bogor Instrument /Masqush
Date : 2 Jan 2018
*/
int sensorPin = A0; // select the input pin for the potentiometer
int sensorValue = 0; // variable to store the value coming from the
sensor
float voltage =0.0; //variable untuk simpan tegangan
void setup() {
Serial.begin(9600); //aktifkan serial terminal
}
void loop() {
sensorValue = analogRead(sensorPin);
voltage= sensorValue*(5/1023.0);
Serial.println(voltage);
delay(100);
}
Gambar Rangkain:
untuk aplikasi android yang akan dipakai
silahkan download di google playstore :
https://play.google.com/store/apps/detai
ls?id=project.bluetoothterminal
Code
/*
Project : 2.4.1
Tujuan : Bisa memanfaatkan software serial untuk
serial komunikasi dengan bluetooth
Author : Bogor Instrument /Masqush
Date : 2 Jan 2018
*/
#define LED 7
String dataBT="";
void loop() {
// baca data bluetooth
while(BT_Serial.available()>0){
dataBT+=(String)(char)BT_Serial.read();
}
//reset dataBT
dataBT="";
}
delay(1000);
}
Code:
/*
Project : 2.5.1
Tujuan : Bisa memahami cara membaca dan menulis data
pada internal memory EEPROM Arduino
- Arduino Uno: 1kb EEPROM storage.
- Arduino Mega: 4kb EEPROM storage.
Author : Bogor Instrument /Masqush
Date : 2 Jan 2018
*/
#include <EEPROM.h>
int address = 0;
byte value;
void setup(){
Serial.begin(9600);
Serial.println("Set all address to 5, please wait..");
//Tulis semua alamat EEPROM dengan data 5
for(address=0;address<EEPROM.length();address++){
EEPROM.write(address,5);
}
address=0;
Serial.println("Reading address..");
Serial.print("Address");
Serial.print("\t");
Serial.println("Data");
}
void loop(){
// read a byte from the current address of the EEPROM
value = EEPROM.read(address);
Serial.print(address);
Serial.print("\t");
Serial.print(value, DEC);
Serial.println();
address = address + 1;
if(address == EEPROM.length()){
address = 0;
}
delay(200);
}
Gambar Rangkaian:
Code:
/*
Project : 2.6.1
Tujuan : Bisa memahami cara membaca dan menset data RTC
Author : Bogor Instrument /Masqush
Date : 2 Jan 2018
void loop(){
// Tulis Day-of-Week
Serial.print(rtc.getDOWStr());
Serial.print(" ");
// Tulis date
Serial.print(rtc.getDateStr());
Serial.print(" -- ");
// Tulis time
Serial.println(rtc.getTimeStr());
Gambar Rangkaian:
Code:
/*
Project : 2.7.1
Tujuan : Bisa memahami cara kerja LCD 1602 dan
komponen apa saja yang dibutuhkan
Author : Bogor Instrument /Masqush
Date : 2 Jan 2018
* LCD RS pin to digital pin 12
* LCD Enable pin to digital pin 11
* LCD D4 pin to digital pin 5
* LCD D5 pin to digital pin 4
* LCD D6 pin to digital pin 3
* LCD D7 pin to digital pin 2
* LCD R/W pin to ground
* LCD VSS pin to ground
* LCD VCC pin to 5V
* 10K resistor:
* ends to +5V and ground
* wiper to LCD VO pin (pin 3)
*/
void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(millis() / 1000);
}
Gambar Rangkaian:
Code:
/*
Project : 2.8.1
Tujuan : Bisa memahami cara kerja motor servo
Author : Bogor Instrument /Masqush
Date : 2 Jan 2018
#include <Servo.h>
Servo myservo;
int pos = 0; //derajat posisi (0-90')
void setup(){
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop()
{
for(pos = 0; pos <= 180; pos += 1) // goes from 0 degrees to 180
degrees
{ // in steps of 1 degree
myservo.write(pos); // tell servo to go to position in
variable 'pos'
delay(15); // waits 15ms for the servo to
reach the position
}
for(pos = 180; pos>=0; pos-=1) // goes from 180 degrees to 0
degrees
{
myservo.write(pos); // tell servo to go to position in
variable 'pos'
delay(15); // waits 15ms for the servo to
reach the position
}
}
Gambar Rangkaian:
Code:
/*
Project : 2.9.1
Tujuan : Bisa memahami cara kerja motor servo
Author : Bogor Instrument /Masqush
Date : 2 Jan 2018
*/
void setup() {
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
Serial.begin(9600); // Starts the serial communication
}
void loop() {
// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
Gambar Rangkaian:
Code:
/*
Project : 2.10.1
Tujuan : Bisa menggunakan sensor detection motion
Author : Bogor Instrument /Masqush
Date : 2 Jan 2018
*/
void setup() {
pinMode(ledPin, OUTPUT); // declare LED as output
pinMode(inputPin, INPUT); // declare sensor as input
Serial.begin(9600);
}
END