Anda di halaman 1dari 15

Laporan Pembelajaran Mandiri

SISITEM KENDALI TERDISTRIBUSI


Pemograman Arduino

Disusun Oleh:
Rangga Masli Putra (131354025)
4C
Dosen Pembimbing :
Rida Hudaya, DUTech., ST., DEA.
Feriyonika, S.T., MSc.Eng.

LABORATORIUM SKT
POLITEKNIK NEGERI BANDUNG
2016

Pemograman Arduino
1. TUJUAN

Mahasiswa

pemograman pada Arduino.


Mahasiswa dapat melakukan akses pin input-output pada

Arduino.
Mahasiswa dapat mengerti dan memahami tentang control

dapat

mengerti

dan

memahami

lingkungan

structure pada Arduino.


2. ALAT & BAHAN

PC atau Laptop
Arduino
Kabel USB A to B

3. HASIL PEMBELAJARAN
1. Lingkungan pemograman Arduino
a. Konfigurasi Arduino

Gambar 1. Konfigurasi arduino UNO

Untuk konfigurasi dapat terlihat pada gambar 1. Pada


pin digital terdapat beberapa tambahan yakni lambang ~

mengindikasikan bahwa arduino dapat menggunakan program


pwm

yang

telah

disediakan

oleh

IDE

arduino

(analogWrite(pin,nilai);), hal hal yang lainnya adalah bahwa


pin digial 0 merupakan RX dan pin digital 1 adalah TX. Kedua
pi tersebut dapat digunakan dalam komunikasi serial.
b. Struktur dasar program pada Arduino
Pada awal membuat new program pada IDE, maka akan
disajikan dua bentuk dasar dalam pemograman arduino
yakni :
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
Borderline kuning yakni tempat dimana program hanya
dijalankan satukali dan biasa ditempatkan untuk inisialisasi.
Sedangkan borderline hijau yakni dimana program dijalankan
terus menerus (never ending loop) biasa digunakan untuk
program utama, sebagai contoh pengecekan sensor, tentu
mesti dilakukan terus menerus atau setidaknya lebih dari satu
kali.
c. Tipe data
Tipe data
Boolean

Ukuran (byte)
1

Char

Unsigned char,
byte, uint8_t
Int, short
Unsigned int,
word, uint16_t
long

1
2
2
4

cakupan
true (1) atau
false(0)
Karakter ASCII atau
antara -128 s.d 127
Karakter ASCII atau
antara 0 s.d 255
-32.768 s.d 32.768
0 s.d 65.535
-2.147.483.648 s.d
2.147.483.647

Unsigned long,
uint32_t
Float, double (di
platform ini
double dan float
dianggap sama)

0 s.d 4.294.967.295

Bilangan berkoma
antara 3.4028235E+38 s.d
3.4028235E

Tabel 1. Tipe data Arduino

d. Operator aritmatika
Operato
r
+

Contoh
+3 -> positif 3
3 + 2 -> 5
-3 -> negatif 3
3 2 -> 1
3 * 2 -> 6
3 / 2 -> 1.5
3 % 2 ->
3-2=1
A=1

*
/
%
=

Tabel 2. Operator aritmatik arduino

Operator + jika ditempatkan satu buah angka maka


menjadi penunjuk nilai sedangkan bila dienpatkan diantara
dua angka menjadi penjumlah. Sedangkan - sama halnya +
hanya saja berperan sebagai pengurang. Operator * pengali,
/ pembagi, % sisa hasil pebagian, dan = merupakan tanda
sama dengan atau operator untuk memasukan nilai ke
variabel.
e. Operator logika
operato
r
==
!=
<
>
<=
>=

keterangan
Membandingkan apakah sama nilainya
Membandingkan apakah tidak sama nilainya
Membandingkan apakah lebih kecil nilainya
Membandingkan apakah lebih besar nilainya
Membandingkan apakah lebih kecil atau sama
dengan nilainya
Membandingkan apakah lebih besaratau sama
dengan nilainya

Operator ini biasa digunaka pada control structure di


arduino seperti IF, ELSE, WHILE, FOR, dsb.
f. Operator Boolean
Operator
&& (AND)
|| (OR)
!(NOT)

Keterangan
Membandingkan dua atau lebih kondisi, akan
bernilai benar jika nilai keduanya benar
Membandingkan dua atau lebih kondisi, akan
bernilai benar jika salah satu nilainya benar
Menyatakan kebalikan nilai

2. Akses pin Input Output


a. Setting PIN (pinMode)
Untuk menggunakan pin digital input dan output harus
dilakukan setting terlebih dahulu, apakah pin sebagai input atau
sebagai output.
Sntax yang digunakan yakni
pinMode(pin,mode)
ket :
pin = pin yang digunakan
mode = INPUT, OUTPUT, dan INPUT_PULLUP
contoh penggunaan
int led = 12;
void setup(){
pinMode(led,OUTPUT);
}
.
.
.
b. Digital I/O
Digital output
Pada pin yang telah disetting sebagai output maka kita dapat
memberikan nilai keadaan logika 1 (5V) atau nilai keadaan 0
(0V).
Sntax Yakni
digitalWrite(pin,value);

ket:
pin = pin digital yang diset output
value = HIGH,LOW,1,0
contoh program yang dirangkai seperti gambar

Gambar 2. Rangkaian contoh untuk digital write

int led = 12;


void setup(){
pinMode(led,OUTPUT);
}
Void loop(){
digitalWrite(led,HIGH);
}
Maka outputnya akan nampak bahwa led menyala

Gambar 3. Rangkaian hasil untuk digital write

Digital Input
Pada pin yang telah disetting sebagai input maka kita dapat
membaca nilai keadaan logika 1 (5V) atau nilai keadaan 0 (0V).
Sntax Yakni
digitalWrite(pin);
ket:
pin = pin digital yang diset output
contoh program yang dirangkai seperti gambar

Gambar 4. Rangkaian contoh untuk digital read

int led = 12;


int readled = 8;
boolean a;
void setup(){
pinMode(led,OUTPUT);
}
void loop(){
a = digitalRead(readled);
digitalWrite(led, a);
}
Maka outputnya akan nampak menyala jika switch on

Gambar 5. Rangkaian hasil untuk digital write

c. Analog I/O
Analog Output
Analog output ini memberikan keluaran berupa nilai pwm dari
rentang 0 255 berupa duty cycle.
Sntax
analogWrite(pin,value);
ket:
pin : pin yang berandakan ~
value : 0 255
rumus tegangan yang keluar yakni 200x(5/value)
dirangkai rangkaian sebagai berikut :

Gambar 6. Rangkaian contoh untuk analog Write (pwm)

int pinpwm = 11;


void setup(){
}
void loop(){
analogWrite(pinpwm,125);
}
Hasilnya

Gambar 7. Hasil untuk analog Write (pwm)

Terlihat pada gambar bahwa nilai jarak on dan off sama ini
berarti range pwm yang diset sesuai yakni 125 dengan tampila
osiloskop duty cycle 50%.
Analog Input
Analog Input memberi fasilitas ADC dengan nilai input
tegangan 0 5V kemudian dibaca menjadi nilai digital dari 0 1023.

Sntax
analogRead(pin);
ket :
pin = pin analoh A0 A5
contoh program dirangkai sebagai berikut

Gambar 8. Rangkaian contoh untuk analog read (ADC)

int a;
void setup(){
Serial.begin(9600);
}
void loop(){
a = analogRead(A0);
Serial.println(a);
}
Hasilnya

Gambar 9. hasil untuk analog read (ADC)

Terlihat bahwa nilai yang terbaca yakni 1023 karena pin A0


dihubungkan pada sumber betegangan 5V.

3. Control Structure Arduino


a. If
Digunakan untuk menguji kondisi tertentu apakah sudah
terpenuhi apa belum. Jika telah terpenuhi maka program didalam
{} akan dieksekusi. Jika tidak maka akan dilanjut saja ke bawah.
Syntax
If (comparison operator){
. . . .isi instruksi jika kondisi terpenuhi
}
Contoh penerapannya
int LEDpin = 13;
int x;
void setup(){
Serial.begin(9600);
}

void loop(){
x = 121;
akan menyala

// jika diisi lebih dari 120 maka led

digitalWrite(LEDpin, LOW);
if (x > 120){
digitalWrite(LEDpin, HIGH);
}
}
b. If-Else
Memungkinkan pengendalian program yang jauh lebih
rumit dari if dengan menguji dua kondisi sekaligus.
Syntax
If (comparison operator){

. . . .isi intruksi jika kondisi 1 terpenuhi


Else{
. . . . Isi instruksi jika kondisi selain kondisi 1
}
Contohnya

int LEDpin = 13;


int x;
void setup(){
Serial.begin(9600);
}

void loop(){
x = 121;
if (x > 120){
digitalWrite(LEDpin, HIGH);
}else{
digitalWrite(LEDpin, LOW);
}
}

Maka jika nilai x yang diberikan bukan lebih dari 120


maka akan bernilai LOW.
c. If-Else If Else
Memungkinkan pengujian yang lebih spesifik dari if
dan if-else dengan menguji lebih dari dua kondisi sekaligus.
Syntax
If (comparison operator){
. . . .isi instruksi jika kondisi 1 terpenuhi
}Else if (comparison2 operator){
. . . .isi instruksi jika kondisi 2 terpenuhi

}Else{
. . . .isi instruksi jika kondisi selain 1 & 2
}
Contohnya
int LEDpin = 13;
int x;
void setup(){
Serial.begin(9600);
}

void loop(){
x = 121;
if (x > 123){
digitalWrite(LEDpin, LOW);
}else if(x == 121){
digitalWrite(LEDpin, HIGH);
}else{
digitalWrite(LEDpin, LOW);
}
}

d. While
Instruksi didalam {} akan dieksekusi sampai ekspresinya
bernilai salah.
Syntax
While(expression){
// statement(s)
}

Contohnya
int LEDpin = 13;
int x;

void setup(){
Serial.begin(9600);
}

void loop(){
x = 121;
while( x > 120){
digitalWrite(LEDpin, HIGH)
delay(1000);
digitalWrite(LEDpin, LOW)
delay(1000);
}
digitalWrite(LEDpin, LOW)
}
e. For
Digunakan untuk

melakukan

pengulangan

eksekusi

instruksi dalam satu blok. Sama halnya dengan while hanya


setiap kondisi dinyatakan secara tersurat.
Syntax
For (nilai awal; batas nilai; besar kenaikan){
. . . . isi intruksi
}
Contohnya

int LEDpin = 13;


int x;
void setup(){
Serial.begin(9600);

}
void loop(){
for(x = 0; x > 120; x++){
digitalWrite(LEDpin, HIGH)
delay(1000);
digitalWrite(LEDpin, LOW)
delay(1000);
}
digitalWrite(LEDpin, LOW)
}
Pada contoh tersebut terlihat bahwa kedipan led akan
terjadi selama 120 kali kemudian mati selama 10 detik dan
mengulangi kembali loop.
4. HAL HAL YANG PERLU DIPERHATIKAN
a.
b.

Selalu dicek apakah COM, Board yang terhubung sesuai


untuk menetukan tipe data sebaiknya diperhatikan terlebih

c.

dahulu kebutuhan range angkanya


pada pengaturan comparison operator

untuk

for

selalu

diperhatikan bahwa pemisah nilai awal, batas akhir dan


kenaikan yakni ; atau disebut semicolon.