NIM :C010321005
PRODI : Teknik Listrik
PRAKTIKUM 2
PENGENALAN ARDUINO DAN
MENULISKAN OUTPUT PADA PORT
I. Tujuan
Pengenalan Arduino
Jenis-jenis Arduino
7
NAMA: Hotlan Sampe Tua Sianturi
NIM :C010321005
PRODI : Teknik Listrik
Pada gambar 1.1 dapat dilihat berbagai nama jenis arduino berdasarkan level para
penggunanya dan tingkat kerumitan sistemnya.
Pada buku ini hanya akan menggunakan Arduino jenis Uno, Nano dan ProMini. Ketiga
jenis Arduino ini menggunakan mikrokontroller AVR yang sama yaitu AT Mega 328p.
Perbedaannya terletak pada ada tidaknya rangkaian penyearah dan chip CH-340 sebagai
pengubah serial ke USB
Berdasarkan tabel di atas dapat disimpulkan dari ketiga jenis arduino tersebut maka
Arduino Uno mempunyai sepesifikasi tertinggi sehingga harganya pun yang termahal.
8
NAMA: Hotlan Sampe Tua Sianturi
NIM :C010321005
PRODI : Teknik Listrik
9
NAMA: Hotlan Sampe Tua Sianturi
NIM :C010321005
PRODI : Teknik Listrik
- Mudah digunakan. Disertai dengan program IDE Arduino yang dapat di download di internet
dengan gratis. Banyak IDE untuk mikrokontroller AVR, tapi untuk versi full harus bayar
- Langsung bisa dapat diprogram hanya dengan menggunakan kabel USB biasa.
- Tidak memerlukan power yang besar, bahkan hanya dengan menggunakan power dari port
USB komputer sistem arduino sudah dapat diprogram dan run.
Sistem arduino memberikan nama alias untuk penamaan kaki AVR. Nama alias ini hanya
dikenali pada IDE arduino, sehingga jika diterapkan apada editor program AVR yang lain
maka akan menghasilkan sintax error. Gambar berikit meperlihatkan peta dan penamaan
pin arduino untuk nano yang juga sama dengan penamaan Uno.
Untuk PORTC.4 dan PORTC.5 jika dijadikan sebagai input maka nilai logikanya terkunci pada
kondisi LOW. Sedangkan untuk PORTB.5 terkunci pada mode OUTPUT, karena pin 13 untuk
ardiuno terhubung dengan indicator led.
Port input output pada Arduino dapat dialamati sebagai bit maupun sebagai byte. Untk
pengalamatan secara bit dapat menggunakan perintah Arduino dengan perintah
digitalWrite, digitalRead dan pinMode. Sedangkan untuk pengalamatan byte dapat
menggunakan instruksi assignment Bahasa C. Dengan mengirim output secara byte pada
10
NAMA: Hotlan Sampe Tua Sianturi
NIM :C010321005
PRODI : Teknik Listrik
register PORTx dan DDRx, atau membaca register PINx. Contoh DDRD=0xff, PORTD=0xB4,
inData=PIND.
pinMode
pinMode adalah perintah untuk mensetting pin Arduio sebagai Input atau Output.
Penentuan pin Arduino pada software sebagai input/output dapat dilihat pin tersebut
secara hardware terhubung ke peralatan apa. Di set sebagai input jika terhubung ke
peralatan input seperti berbagai jenis saklar (push button, limit switch, swtch toggle, dll) ,
sensor, keypad dll. Sebaliknya diset sebagai output jika pin tersebut terhubung ke peralatan
output seperti led, relay, LCD, motor dll.
Contoh:
pinMode (LED_BUILTIN, OUTPUT) ; // menjadikan pin 13 sebagai output
pinMode (13, 1);
pinMode (A1, INPUT); // menjadikan pin A1 atau pin 14 menjadi input
11
NAMA: Hotlan Sampe Tua Sianturi
NIM :C010321005
PRODI : Teknik Listrik
pinMode (14, 0);
pinMode (0, INPUT_PULLUP) // menjadikan pin A1 atau pin 0 menjadi input pull up.
digitalWrite
digitalWrite adalah perintah untuk mengirimkan data digital ke pin output.
Contoh :
digitalWrite (1,HIGH); // mengirimkan data logika HIGH(1) ke pin no 1
digitalWrite (1,1);
digitalWrite (2,LOW); // mengirimkan data logika LOW(0) ke pin no 2
digitalWrite (2,0);
delay( int )
delay adalah perintah tundaan selama milidetik.
Contoh
delay(1000) // berarti melakukan tundaan selama 1000ms atau 1 detik
Perintah native C
Perintah native C adalah perintah dengan menggunakan sintaks asli C untuk AVR.
DDRx
DDRx adalah perintah untuk mensetting pin apakah sebagai input output. Perintah ini
adalah perintah 1 byte (8 bit), jadi seklai menjalankan perintah maka 8 bit akan diset.
Setting bisa sebagai input atau output secara simultan. Untuk menjadikan pin tersebut
sebagai input maka harus diberi nilai 0, sedangakan output diberi nilai 1. Perintah ini
berfungsi sama seperti pinMode. Bedanya pinMode adalah perintah 1bit.
Contoh
DDRD= 0b11110000 // berarti PIND0, PIND1,PIND2,PIND3 (pin 0-3)menjadi input, sedangkan
// PIND4,PIND5,PIND6 dan PIND7 (pin 4-7) menjadi output.
PORTx
PORTx adalah perintah adalah perintah untuk mengirimkan nilai digital ke PORT. Perintah ini
mirip dengan perintah digitalWrite, bedanya ini adalah perintah 8 bit.
Contoh
PORTD=0b11110000 // berarti PIND0 sd PIND3 diberi nilai 0, sedangakan PIND4 sd PIND7
// diberi nilai logika 1
12
NAMA: Hotlan Sampe Tua Sianturi
NIM :C010321005
PRODI : Teknik Listrik
III. Daftar Alat dan Bahan
V. Langkah Kerja
13
NAMA: Hotlan Sampe Tua Sianturi
NIM :C010321005
PRODI : Teknik Listrik
Gambar 1.4
2. Ketik Program berikut Pada Arduino
void setup() {
// put your setup code here, to run once:
pinMode(0,OUTPUT);
}
void loop() {
digitalWrite(0,HIGH);
delay(500);
digitalWrite(0,LOW);
delay(500);
}
4. Jika semuanya benar maka simulasi akan memperlihatkan led hidup dan mati bergantian
(blink).
2. Buatlah program pada Arduino sehingga simulasi akan memperlihatkan tampilan urutan
sbg berikut
14
NAMA: Hotlan Sampe Tua Sianturi
NIM :C010321005
PRODI : Teknik Listrik
Gambar 1.5
byte led=0;
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(0,HIGH);
digitalWrite(1,HIGH);
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(500);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
delay(500);
}
15
NAMA: Hotlan Sampe Tua Sianturi
NIM :C010321005
PRODI : Teknik Listrik
Aktifitas 2a: Running led dengan satu led menyala
2. Buatlah program sehingga simulasi akan memperlihatkan satu buah led akan menyala
bergerak dari kanan ke kiri (dari led 1 menuju led 8 kemudian kembali ke led 1 dan
seterusnya).
// code prk2_2a by Hotlan S.T Sianturi
void setup() {
// put your setup code here, to run once:
for(int i=0; i<8; i++)
pinMode(i,OUTPUT);
}
byte led=0;
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(0,HIGH);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(500);
digitalWrite(0,LOW);
digitalWrite(1,HIGH);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(500);
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(500);
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
16
NAMA: Hotlan Sampe Tua Sianturi
NIM :C010321005
PRODI : Teknik Listrik
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(500);
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(500);
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,HIGH);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(500);
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,HIGH);
digitalWrite(7,LOW);
delay(500);
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,HIGH);
delay(500);
17
NAMA: Hotlan Sampe Tua Sianturi
NIM :C010321005
PRODI : Teknik Listrik
Gambar 1.6
Gambar 1.7
// code prk2_2b by Hotlan S.T Sianturi
void setup() {
// put your setup code here, to run once:
for(int i=0; i<8; i++)
pinMode(i,OUTPUT);
18
NAMA: Hotlan Sampe Tua Sianturi
NIM :C010321005
PRODI : Teknik Listrik
}
byte led=0;
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(0,HIGH);
digitalWrite(1,HIGH);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(500);
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(500);
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(500);
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
delay(500);
}
Aktifitas 2c: Running led bolak balik dengan satu led menyala
1. Menggunakan rangkaian yang sama pada aktifitas 1b
19
NAMA: Hotlan Sampe Tua Sianturi
NIM :C010321005
PRODI : Teknik Listrik
2. Buatlah program sehingga simulasi akan memperlihatkan satu buah led akan menyala
bergerak dari kanan ke kiri kemudian memantul kembali ke kanan (dari led 1 menuju led 8
kemudian kembali ke led 7, led 6 dan seterusnya).
byte led=0;
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(0,HIGH);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(500);
digitalWrite(0,LOW);
digitalWrite(1,HIGH);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(500);
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(500);
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
20
NAMA: Hotlan Sampe Tua Sianturi
NIM :C010321005
PRODI : Teknik Listrik
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(500);
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(500);
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,HIGH);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(500);
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,HIGH);
digitalWrite(7,LOW);
delay(500);
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,HIGH);
delay(500);
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,HIGH);
digitalWrite(7,LOW);
delay(500);
21
NAMA: Hotlan Sampe Tua Sianturi
NIM :C010321005
PRODI : Teknik Listrik
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,HIGH);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(500);
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(500);
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(500);
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(500);
digitalWrite(0,LOW);
digitalWrite(1,HIGH);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(500);
digitalWrite(0,HIGH);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
22
NAMA: Hotlan Sampe Tua Sianturi
NIM :C010321005
PRODI : Teknik Listrik
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(500);
Gambar 1.8
Aktifitas 3a: Menggunakan instruksi dasar C
void loop() {
// put your main code here, to run repeatedly:
PORTD=0b00000001;
delay(500);
PORTD=0b00000000;
delay(500);
}
3. Jalankan simulasi pada proteus. Jika semuanya benar maka simulasi akan memperlihatkan
led1 akan berkedip.
4. Tugas: Dengan rangkaian yang sama, buatlah program-program dengan perintah dasar C
( bukan dengan perintah digitalWrite) sehingga hasil simulasi persis sama seperti aktifitas
1b, 2a, 2b, dan 2c.
23
NAMA: Hotlan Sampe Tua Sianturi
NIM :C010321005
PRODI : Teknik Listrik
Gambar 1.9
void loop() {
// put your main code here, to run repeatedly:
PORTD=0b00001111;
delay(500);
PORTD=0b11110000;
delay(500);
24
NAMA: Hotlan Sampe Tua Sianturi
NIM :C010321005
PRODI : Teknik Listrik
Gambar 1.10
void loop() {
// put your main code here, to run repeatedly:
PORTD=0b00000001;
delay(500);
PORTD=0b00000010;
delay(500);
PORTD=0b00000100;
delay(500);
PORTD=0b00001000;
delay(500);
PORTD=0b00010000;
delay(500);
PORTD=0b00100000;
delay(500);
PORTD=0b01000000;
delay(500);
PORTD=0b10000000;
delay(500);
Gambar 1.11
// code prk2_3.2b by Hotlan S.T Sianturi
25
NAMA: Hotlan Sampe Tua Sianturi
NIM :C010321005
PRODI : Teknik Listrik
void setup() {
// put your setup code here, to run once:
DDRD=0b11111111;
PORTD=0b00000000;
}
void loop() {
// put your main code here, to run repeatedly:
PORTD=0b00000011;
delay(500);
PORTD=0b00000000;
delay(500);
PORTD=0b00001100;
delay(500);
PORTD=0b00000000;
delay(500);
PORTD=0b00110000;
delay(500);
PORTD=0b00000000;
delay(500);
PORTD=0b11000000;
delay(500);
}
Gambar 1.12
// code prk2_3.2c by Hotlan S.T Sianturi
void setup() {
// put your setup code here, to run once:
DDRD=0b11111111;
PORTD=0b00000000;
}
26
NAMA: Hotlan Sampe Tua Sianturi
NIM :C010321005
PRODI : Teknik Listrik
void loop() {
// put your main code here, to run repeatedly:
PORTD=0b00000001;
delay(500);
PORTD=0b00000010;
delay(500);
PORTD=0b00000100;
delay(500);
PORTD=0b00001000;
delay(500);
PORTD=0b00010000;
delay(500);
PORTD=0b00100000;
delay(500);
PORTD=0b01000000;
delay(500);
PORTD=0b10000000;
delay(500);
PORTD=0b01000000;
delay(500);
PORTD=0b00100000;
delay(500);
PORTD=0b00010000;
delay(500);
PORTD=0b00001000;
delay(500);
PORTD=0b00000100;
delay(500);
PORTD=0b00000010;
delay(500);
PORTD=0b00000001;
delay(500);
VI. Evaluasi
27