- Pemrograman Digital Output Menggunakan Library Arduino
Pada kesempatan kali ini akan membuat program yang berfungsi untuk mengontrol 6 buah lampu LED. 3 buah lampu LED akan dinyalakan dan 3 buah sisanya akan dimatikan melalui program. Program yang dibuat akan menggunakan fungsi yang disediakan oleh Arduino IDE.
Gambar rangkaian schematic
void setup()
{ pinMode(8,OUTPUT);
pinMode(9,OUTPUT); pinMode(10,OUTPUT; pinMode(11, 1);
pinMode(12, 1); pinMode(13, 1);
}
void loop()
{ digitalWrite(8,HIGH;
digitalWrite(9,HIGH; digitalWrite(10, 1); digitalWrite(11,LOW);
digitalWrite(12,LOW); digitalWrite(13, 0);
}
setelah menuliskan sintaks diatas pada program Arduino Uno maka akan didapat output keluaran seperti berikut :
Pin
|
Kondisi
LED
|
8
|
Hidup
|
9
|
Hidup
|
10
|
Hidup
|
11
|
Mati
|
12
|
Mati
|
13
|
Mati
|
Penjelasan yang didapat dari program sintaks diatas yaitu :
PinMode (8,OUTPUT);
fungsi ini bertujuan untuk menginisialkan bahwa pin 8, 9, dan 10 adalah output
PinMode (11,1);
sama halnya dengan diatas 1 berarti output dan 0 berarti input pada PinMode.
2. Pemrograman
Digital Output Menggunakan Konfigurasi
Register
Sama halnya dengan pemograman digital output menggunakan library Arduino,
Gantilah sintaks program pada Percobaan no.1 dengan sintaks program berikut
ini, kemudian lakukan kompilasi dan upload
program ke minimum sistem Arduino Uno.
void setup() { DDRB=0x3F;
}
void loop() { PORTB=0x07;
}
Berikut hasil dari compile program diatas :
Pin
|
Kondisi LED
|
8
|
Hidup
|
9
|
Hidup
|
10
|
Hidup
|
11
|
Mati
|
12
|
Mati
|
13
|
Mati
|
Perbedaan sintaks program pertama dengan yang kedua :
· pada
fungsi Arduino kita harus menginisialisasikan masing-masing pin dengan
kondisi High atau Low sedangkan pada Fungsi register kita menggunakan system
angka heksadesimal.
· pengguanaan
Register lebih singkat dari pada fungsi arduino.
dengan aplikasi penggunakan program diatas yaitu pada lampu merah dan seven segment.
3. Penggunaan
Fungsi Delay
Pada percobaan kali ini akan
dipraktekkan penggunaan fungsi delay pada program. Program yang akan dibuat bertujuan untuk membuat
buzzer menyala dan mati secara bergantian dengan sela waktu tertentu. Konfigurasi
nyala dan mati buzzer dengan sela waktu tertentu ini akan membuat suara seperti alarm
ataupun sirine.
Gambar rangkaian schematic
Berikut sintaks program dari rangkaian diatas :
void setup() { pinMode(12, OUTPUT);
}
void loop() { digitalWrite(12, HIGH);
delay(1000); digitalWrite(12, LOW);
delay(1000);
}
Fungsi dari contoh program.
·
Pin Mode (12, Output) adalah untuk mengkonfigurasi pin 12 sebagai
output
· Pada void loop , fungsi digitalWrite(12, HIGH) adalah mengeset pin
12 sebagai
keluaran bernilai HIGH (menyala pada buzzer) delay(1000) adalah
waktu pada
buzzer pada kondisi high selama 1 detik
·
Fungsi digitalWrite(12, LOW) adalah mengeset pin 12 sebagai keluaran
bernilai
LOW (Mati) delay (1000)
adalah waktu pada buzzer pada kondisi low
selama 1 detik.
Pada
percobaan kali ini
akan dipraktekkan pemrograman
untuk mengakses
masukan
dalam bentuk digital. Program bertujuan untuk menyalakan buzzer ketika
tombol
ditekan. Untuk melakukan pengkaksesan terhadap mas ukan digital akan
digunakan fungsi Ardu ino.
Gambar rangkaian schematic
Berikut contoh sintaks program :
void setup() { pinMode(A0, INPUT); digitalWrite(A0, HIGH); pinMode(12, OUTPUT);
}
void loop() { if(digitalRead(A0)==LOW) {
digitalWrite(12, HIGH);
}
else{
digitalWrite(12, LOW);
}
}
Penjelasan dari sintaks program diatas;
·
Fungsi PinMode(A0, INPUT) dalam void setup() untuk mengkonfigurasi
AO sebagai INPUT
·
DigitalWrite(A0, HIGH) untuk mengeset pin AO dalam keadaan High
ketika tombol tidak di tekan , krna AO berfungsi sebagai switch
·
PinMode(12, OUTPUT) untuk mengkonfigurasi pin 12 sebagi output
·
pada Void loop () fungsi if(digitalRead(A0)==LOW) .maksdnya adalah pada saat switch ditekan maka akan memenuhi
syarat “digitalWrite(12,HIGH)” pin 12 terpenuhi (bernilai HIGH) buzzer akan
menyala dan apabila pada saat tidak ditekan maka kondisi digitalWite(12, LOW);
buzzer akan tidak berbunyi (pada kondisi LOW).
5. Pemrograman
Digital Input Menggunakan Konfigurasi Register
Pada percobaan kali ini akan dipraktekkan
pemrograman untuk mengakses
masukan dalam bentuk
digital sama seperti Percobaan. Pada percobaan kali ini
pengkaksesan
terhadap masukan digital akan menggunakan konfigurasi register.
Berikut contoh sintaks programdigital input menggunakan konfigurasi register :
void setup() { DDRC = 0x00; PORTC = 0x01; DDRB = 0x10;
}
void loop() { if(bit_is_clear(PINC,0)) {
PORTB = 0x10;
}
else {
PORTB = 0x00;
}
}
Penjelasan dari program diatas :
· Fungsi dari DDRC=0x00 adalah sebagai
inputan data direct register pada port C dari arduino ,0x yaitu pin pada
port c dijadikan input ,00 yaitu jika di konversikan ke biner maka didapat
bahwa semua pin A0 –A5 pada port c bernilai low .
· Fungsi
dari portc=0x01 adalah jika 01 di konversikan ke bilangan binner yang dibaca
dari kanan maka didapat bahwa pin A0 bernilai 1/high pada port c.
· Fungsi
dari ddrb=0x10 adalah sebagai keluaran data direct register pada port b dari
arduino,0x yaitu pin pada port c dijadikan input,10 yaitu jika di konversikan
ke bilangan biner yang dibaca dari kanan maka A5 adalah bernilai 1/high.
· Fungsi
dari if(bit_is_clear(pinc,0)) adalah pada saat kondisi dimana Pinc yaitu A0
bernilai 0 ,maka pada portb yaitu 10 yang diubah ke biner di hitung dari kanan
yaitu 10000 dan pin 12 bernilai 1/menyala apabila switch ditekan maka buzzer
akan berbunyi.
· Fungsi
else(portb=0x00) adalah pada saat kondisi selain kondisi pertama saat switch
tidak ditekan maka buzzer mati karena A0 bernilai high.
TERIMA KASIH