BAB 1. INPUT OUTPUT
1.1 Tujuan1. Mahasiswa dapat memahami fungsi input output.2.
Mahasiswa dapat membuat rangkaian dan memprogram arduino dengan
fungsi input output.
1.2 Landasan Teori1. Inisialisasi variabel Struktur dasar dari
bahasa pemrograman arduino itu sederhana hanya terdiri dari dua
bagian.
void setup( ) { // Statement; }
void loop( ) { // Statement; }
Dimana setup() bagian untuk inisialisasi yang hanya dijalankan
sekali diawal program, sedangkan loop() untuk mengeksekusi bagian
program yang akan dijalankan berulang-ulang untuk selamanya. 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); // mengeset pin 13 sebagai
output}
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);// nyalakan pin 13
delay(1000);// pause selama 1 detik digitalWrite(13, LOW);//
matikan pin 13 delay(1000);/// pause selama 1 detik}
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 0inputVariable =
analogRead(2); // menyimpan nilai yang ada di analog pin 2 ke
inputVariable Sebuah variable dapat di deklarasikan pada awal
program sebelum void setup(), secara lokal 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 fungstion setup().
Sebuah variable lokal di deklarasikan di setiap block function atau
di setiap block statement pengulangan dan hanya dapat di gunakan
pada blok yang bersangkutan saja. 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 dijelaskan
sebagai berikut :
type functionName(parameters) { // Statement; }Contoh:int
delayVal() { int v; // membuat variable v bertipe integer v =
analogRead(pot); // baca harga potentiometer v /= 4; // konversi
0-1023 ke 0-255 return v; // return nilai v }
Pada contoh di atas fungsi tersebut memiliki nilai balik int
(integer), karena kalau tidak menghendaki adanya nilai balik maka
type function harus void.a) { } 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.b) ; 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.c) // line comment Sama halnya dengan block
comments, line coments pun sama hanya saja yang di jadikan komen
adalah perbaris.
2. pinMode() Digunakan dalam void setup() untuk mengkonfigurasi
pin apakah sebagai Input atau Output. Arduino digital pin secara
default di konfigurasi sebagai input sehingga untuk merubahnya
harus menggunakan operator pinMode(pin, mode).
pinMode (pin, OUTPUT);// mengset pin sebagai
outputdigitalWrite(pin, HIGH);// pin sebagai source
voltagedigitalRead()
3. digitalWrite() Digunakan untuk mengset pin digital. Pin
digital Arduino mempunyai 14 ( 0 13 ).digitalWrite (pin, HIGH);//
set pin to HIGH
4. digitalRead() Membaca nilai dari pin yang kita kehendaki
dengan hasil High atau Low.
Value = digitalRead(pin);// mengset value sama dengan pin
5. delay() Menghentikan program untuk sesaat sesuai dengan yang
di kehendaki, satuanya dalam millisecond.
Delay(1000);// menunggu selama satu detik
6. if( If Operator if mengetes 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; }
1.3 Daftar Alat dan Bahan1. PC2. Proteus3. Software Arduino
1.4 Prosedur Praktikum1. Buatlah rangkaian sesuai dengan gambar
rangkaian berikut.
Gambar 1.1 Rangkaian Simulasi Input Output pada Arduino
2. Ketiklah program pada softwre arduino sesuai dengan program
berikut,
int led1 = 8;int led2 = 9;int b1 = 2;int b2 = 3;int valueb1;int
valueb2;void
setup(){pinMode(led1,OUTPUT);pinMode(led2,OUTPUT);pinMode(b1,INPUT);pinMode(b2,INPUT);}
void loop(){valueb1 =
digitalRead(b1);digitalWrite(led1,valueb1);valueb2 =
digitalRead(b2);digitalWrite(led2,valueb2);}
3. Simulasikan dan berilah analisis beserta kesimpulannya.
1.5 Pembahasan Arduino adalah sebuah board mikrokontroler yang
didasarkan pada IC Atmega328 (datasheet ATmega328). Salah satu
contoh yang akan dibahas kali ini yaitu Arduino Uno.Arduino UNO
mempunyai 14 pin digital input/output (6 di antaranya dapat
digunakan sebagai output PWM), 6 input analog, sebuah osilator
Kristal 16 MHz, sebuah koneksi USB, sebuah power jack, sebuah ICSP
header, dan sebuat tombol reset. Arduino UNO memuat semua yang
dibutuhkan untuk menunjang mikrokontroler, mudah menghubungkannya
ke sebuah computer dengan sebuah kabel USB atau mensuplainya dengan
sebuah adaptor AC ke DC atau menggunakan baterai untuk memulainya.
Arduino Uno adalah board mikrokontroler berbasis ATmega328. Uno
memiliki 14 pin digital input / output (dimana 6 dapat digunakan
sebagai output PWM), 6 input analog, resonator keramik 16 MHz,
koneksi USB, jack listrik, header ICSP, dan tombol reset. Uno
dibangun berdasarkan apa yang diperlukan untuk mendukung
mikrokontroler, sumber daya bisa menggunakan power USB (jika
terhubung ke komputer dengan kabel USB) dan juga dengan adaptor
atau baterai. Arduino Uno berbeda dari semua papan sebelumnya dalam
hal tidak menggunakan FTDI chip driver USB-to-serial. Sebaliknya,
fitur Atmega16U2 (Atmega8U2 sampai versi R2) diprogram sebagai
konverter USB-to-serial. Revisi 2 dari Uno memiliki resistor
pulling 8U2 HWB yang terhubung ke tanah, sehingga lebih mudah untuk
menggunakan mode DFU. Pada praktikum pertama, percobaan yang
dilakukan adalah analisis tentang rangkaian input output pada
arduino. Tujuan dari praktikum ini adalah agar mahasiswa dapat
memahami fungsi input output serta mahasiswa dapat membuat
rangkaian dan memprogram arduino dengan fungsi input output. Alat
dan bahan yang digunakan antara lain adalah software Proteus,
software Arduino, dan laptop. Komponen yang dipakai dalam simulasi
rangkaian antara lain adalah papan rangkaian Arduino, dua buah LED,
4 buah resistor, dan dua buah push button. Langkah yang harus
dikerjakan adalah membuat rangkaian di software Proteus sesuai
gambar pada modul praktikum. Setelah membuat rangkaian, membuat
program di software Arduino sesuai dengan sintak program pada modul
praktikum. Lalu, simulasikan rangkaian menggunakan program yang
telah di buat. Setelah melakukan pemasangan rangkaian pada simulasi
Proteus, selanjutnya adalah menganalisa sintak-sintak program yang
digunakan untuk menjalankan rangkaian pada simulasi. Sintak int
led1 = 8; adalah mendeklarasikan bahwa LED 1 terletak pada pin
Arduino nomor 8. Untuk int led2 = 9; adalah pendeklarasian bahwa
LED 2 terletak pada pin 9 pada Arduino. Sintak int b1 = 2; int b2 =
3; int valueb1; int valueb2; adalah bahwa push button 1 terletak
pada pin Aduino nomor 2 dan push button 2 terletak pada pin Arduino
nomor 3. Pada void setup() digunakan untuk inisialisasi yang hanya
dijalankan sekali di awal program. pinMode(led1,OUTPUT); adalah
untuk mengkonfigurasi LED pertama sebagai output. Fungsi sintak
pinMode(led1,OUTPUT);pinMode(led2,OUTPUT);pinMode(b1,INPUT);
pinMode(b2,INPUT); adalah difungsikan sebagai keluaran pada LED 1
dan LED 2. Sedangkan untuk masukannya difungsikan pada b1 dan b2
pada push button. Sintak void loop(){ difungsikan untuk proses
pengulangan program pada sebuah masukan dan keluaran. valueb1 =
digitalRead(b1);digitalWrite(led1,valueb1);valueb2 =
digitalRead(b2); digitalWrite(led2,valueb2); Hasil analisa pada
saat simulasi dijalankan dengan keadaan kedua push button tidak
ditekan, LED yang terhubung dengan pin 8 akan menyala atau dalam
kondisi high. Sedangkan LED yang terhubung dengan pin 9 akan padam
atau dalam kondisi low. Saat push button yang terhubung dengan pin
2 ditekan, maka kedua LED akan padam atau dalam kondisi low. Saat
push button yang terhubung dengan pin 3 ditekan, maka kedua LED
akan menyala atau dalam kondisi high. Saat kedua push button
ditekan, maka LED yang terhubung dengan pin 9 akan menyala atau
dalam kondisi high. Sedangkan LED yang terhubung dengan pin 8 akan
padam atau dalam kondisi low.
1.6 Kesimpulan Dari praktikum ketiga, dapat diketahui bahwa
kesimpulan dari percobaan ini adalah sebgaia berikut :1. Arduino
memiliki pin yang dapat digunakan sebagai input dan output untuk
proses pendeklarasian. Pada praktikum ini, input yang digunakan
adalah berupa dua push button dam dua buah LED.2. LED pertama tidak
langsung mendapatkan masukan dari pin 2 karena VCC terhambat oleh
push button pertama kemudian tegangan dari VCC tidak dapat masuk ke
pin Arduino sehingga nilai dari pin 2 adalah low atau 0 dan LED
tidak menyala.3. Pada keadaan kedua push button tidak ditekan, LED
yang terhubung dengan pin 8 akan menyala dan LED yang terhubung
dengan pin 9 akan padam.4. Saat kedua push button ditekan, maka LED
yang terhubung dengan pin 9 akan menyala dan LED yang terhubung
dengan pin 8 akan padam.5. Saat push button yang terhubung dengan
pin 2 ditekan, maka kedua LED akan padam.6. Saat push button yang
terhubung dengan pin 3 ditekan, maka kedua LED akan menyala.
Lampiran
Gambar 1.2 Sintak Program
Gambar 1.3. Saat Push Button tidak di tekan
Gambar 1.4. Saat Push Button 1 di tekan
Gambar 1.5 Saat Push Button 2 di tekanBAB 2. LCD
2.1 Tujuan1. Mahasiswa dapat memahami cara kerja LCD.2.
Mahasiswa dapat membuat rangkaian LCD dan memprogramnya.
2.2 Landasan Teori1. Inisialisasi LCD Merupakan inisialisasi
LCD.
2. LiquidCrystal lcd() Menciptakan variabel jenis LiquidCrystal.
Layar dapat dikontrol dengan menggunakan 4 atau 8 jalur data.
Sintaksis:LiquidCrystal (rs, mengaktifkan, d4, d5, d6,
d7)LiquidCrystal (rs, rw, mengaktifkan, d4, d5, d6,
d7)LiquidCrystal (rs, mengaktifkan, d0, d1, d2, d3, d4, d5, d6,
d7)LiquidCrystal (rs, rw, mengaktifkan, d0, d1, d2, d3, d4, d5, d6,
d7)
3. lcd.begin() Berfungsi menginisialisasi antarmuka ke layar
LCD, dan menentukan dimensi (lebar dan tinggi) dari layar. begin()
bisa disebut awal perintah yang diberikan pada LCD.Sintaksis
:lcd.begin (cols, baris)Parameter :LCD: variabel jenis
LiquidCrystalcols: menunjukkan jumlah kolom layar LCDbaris: jumlah
baris pada LCD
4. lcd.setCursor() Artinya, lokasi di mana ditulis dengan teks
LCD akan ditampilkan.Sintaksis:lcd.setCursor (col, row)Parameter
:LCD: variabel jenis LiquidCrystalcol: kolom di mana posisi kursor
(dengan 0 Menjadi kolom pertama)baris: baris di mana posisi kursor
(dengan 0 Menjadi baris pertama)
5. lcd.print() Berfungsi mencetak teks ke LCD.Sintaksis
:lcd.print (data)lcd.print (data, BASE)Parameter :LCD: variabel
jenis LiquidCrystalData: data untuk mencetak (char, byte, int,
panjang, atau string)BASIS (opsional): dasar di mana untuk mencetak
nomor: BIN untuk biner (basis 2), Desember untuk desimal (basis
10), Oktober untuk oktal (basis 8), HEX untuk heksadesimal (basis
16).
2.3 Daftar Alat dan Bahan1. PC2. Proteus3. Software Arduino
2.4 Prosedur Praktikum1. Buatlah rangkaian sesuai dengan gambar
rangkaian berikut.
Gambar 2.1 Rangkaian Simulasi LCD pada Arduino
2. Ketiklah program sesuai dengan program berikut.
#include LiquidCrystal lcd(13,12,11,10,9,8);void setup()
{lcd.begin(16, 2);lcd.print("hello, world!");delay(1000);}void
loop() {lcd.setCursor(0, 0);lcd.print("Elektro
UNEJ");lcd.setCursor(0, 1);lcd.print(millis()/1000);}
3. Simulasikan dan berilah analisisnya.2.5 Pembahasan LCD adalah
lapisan dari campuran organik antara lapisan kaca bening dengan
elektroda transparan indium oksida dalam bentuk tampilan
seven-segment dan lapisan elektroda pada kaca belakang. Lapisan
sandwich memiliki polarizer cahaya vertikal depan dan polarizer
cahaya horisontal belakang yang diikuti dengan lapisan reflektor.
Cahaya yang dipantulkan tidak dapat melewati molekul-molekul yang
telah menyesuaikan diri dan segmen yang diaktifkan terlihat menjadi
gelap dan membentuk karakter data yang ingin ditampilkan. Pin LCD
nomor 4 (RS) merupakan Register Selector yang berfungsi untuk
memilih Register Control atau Register Data. Register Control
digunakan untuk mengkonfigurasi LCD. Register Data digunakan untuk
menulis data karakter ke memori display LCD. Pin LCD nomor 5 (R/W)
digunakan untuk memilih aliran data apakah READ ataukah WRITE.
Karena kebanyakan fungsi hanya untuk membaca data dari LCD dan
hanya perlu menulis data saja ke LCD, maka kaki ini dihubungkan ke
GND (WRITE). Pin LCD nomor 6 (ENABLE) digunakan untuk mengaktifkan
LCD pada proses penulisan data ke Register Control dan Register
Data LCD. Pada praktikum kedua yang membahas mengenai LCD ini
menggunakan aplikasi Proteus sebagai pembuatan rangkaian dan
simulator. Sedangkan aplikasi Arduino digunakan sebagai pengolah
program yang akan dimasukkan dalam Arduino pada Proteus. Jenis
Arduino yang digunakan pada Proteus ialah Arduino Uno. Kompnen lain
yang akan dirangkai pada Proteus yaitu sebuah LCD 2x16 yang
mempunyai 14 pin. Dalam rangkaian terdapat sebuah terminal ground.
Langkah kerja yang dilakukan yaitu memilih komponen yang akan
digunakan pada menu component mode aplikasi Proteus. Lalu
menyambungkan komponen-komponen seperti pada gambar rangkaian pada
modul. Setelah itu membuat program pada aplikasi Arduino seperti
yang tertulis pada modul. Kemudian memberi program pada komponen
Arduino di Proteus. Setelah itu menjalankan simulasi dari rangkaian
dengan menekan tombol play pada apilkasi Proteus. Untuk
rangkaiannya, pin 4 pada LCD dihubungkan dengan pin 13 pada
Arduino. Pin 6 pada LCD dihubungkan dengan pin 12 pada Arduino. Pin
11 pada LCD dihubungkan dengan pin 11 pada Arduino. Pin 12 pada LCD
dihubungkan dengan pin 10 pada Arduino. Pin 13 pada LCD dihubungkan
dengan pin 9 pada Arduino. Pin 14 pada LCD dihubungkan dengan pin 8
pada arduino. Pin 5 pada LCD dihubungkan dengan ground. Selanjutnya
adalah pembahasan tentang masing-masing listing program yang
digunakan dalam analisis rangkaian LCD pada Arduino. Listing
LiquidCrystal lcd(13,12,11,10,9,8); merupakan pin yang digunakan
pada kaki Arduino pada pin 13, 12, 11, 10, 9, dan 8 yang
disambungkan pada kaki pin LCD yaitu 4, 6, 11, 12, 13, dan 14.
Untuk listing lcd.begin(16,2); adalah fungsi dari LCD yang terdiri
dari 2 baris dan 16 kolom. Lalu program ditampilkan pertama pada
LCD adalah dengan sebuah karakter dengan sintak program
lcd.print("hello, world!");. Tulisan tersebut hanya tampil dalam
waktu satu detik dengan sintak program delay(1000);. Setelah
program tersebut menampilkan karakter pertama, selanjutnya LCD akan
tampil dengan karakter baru dengan listing program void loop(){
yang digunakan sebagi fungsi perputaran program pada proses
pencacahan angka. Fungsi lcd.setCursor(0,0); adalah menentukan
koordinat 0,0 sebagai awal tempat penulisan karakter pertama LCD.
Pada LCD baris pertama, LCD akan muncul tulisan "Elektro UNEJ", dan
karakter tersebut tidak berubah. Karakter tersebut ditampilkan
menggunakan sintak program lcd.print("Elektro UNEJ");. Menentukan
koordinat 0,1 sebagai awal tempat penulisan karakter kedua yang
terletak pada baris kedua LCD dengan sintak lcd.setCursor(0,1);
yang akan melakukan sebuah perputaran bilangan cacah dari yang
terkecil menuju yang terbesar dengan sintak
lcd.print(millis()/1000);. Dalam waktu satu detik setiap angkanya
yang muncul dengan angka yang berurutan.Untuk menghilangkan tanda !
pada tulisan Elektro UNEJ !, sintak program yang digunakan adalah
lcd.clear (); setelah sintak delay(1000); sesuai dengan lampiran
praktikum kedua. Jika tidak menggunakan sintak tersebut, maka
tulisan Elektro UNEJ ! akan menampilkan tanda !
2.6 KesimpulanDari praktikum kedua, dapat diketahui bahwa
kesimpulan dari percobaan ini adalah sebgaia berikut :1. LCD
berfungsi untuk menampilkan karakter sesuai proses yang dikehendaki
pada program.2. LCD akan menampilkan sebuah perputaran angka dari
yang terkecil sampai yang terbesar jika sintak program yang
dikehendaki dilakukan proses looping dari program tersebut.3. Set
cursor pada sintak program berfungsi untuk menentukan titik
koordinat yang akan ditampilkan pada LCD.4. Karakter pada LCD akan
tetap dan tidak berubah-ubah jika tidak dilakukan proses looping.5.
LCD yang digunakan akan tampil dengan karakter maksimal sebanyak 32
buah karakter. Hal ini dapat dilihat pada fungsi LCD yang digunakan
adalah LCD dengan jenis 2 x 16 dengan ari dua baris dikali 16
kolom.6. Untuk menghilangkan tanda ! agar pada tuliasan Elektro
UNEJ tidak ada, maka sintak yang digunakan adalah lcd.clear();.
Lampiran
Gambar 2.2. Program Awal
Gambar 2.3. Saat Tampilan Awal (hello, world)
Gambar 2.4. Saat Tampilan Berubah (ELEKTRO UNEJ!) dengan timer
9
Gambar 2.5. Saat Program Ditambah Perintah lcd.clear();
Gambar 2.6. Tampilan Program Setelah Ditambah Perintah
lcd.clear(); Menjadi (Elektro UNEJ) dengan timer 1
BAB 3. ADC
3.1 Tujuan1. Mahasiswa dapat memahami cara kerja ADC.2.
Mahasiswa dapat membuat rangkaian ADC dan memprogramnya.
3.2 Landasan Teori1. analogRead() 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 dengan nilai
analog pin
2. analogWrite() Mengirimkan nilai analog pada pin analog.
analogWrite(pin, value);// menulis ke pin analog
3.3 Daftar Alat dan Bahan1. PC2. Proteus3. Software Arduino
3.4 Prosedur Praktikum1. Buatlah rangkaian sesuai dengan gambar
rangkaian berikut.
Gambar 3.1 Rangkaian Simulasi ADC pada Arduino
2. Ketiklah program sesuai dengan program berikut.
#include LiquidCrystal lcd(13,12,11,10,9,8);int SensorPin1 =
0;int ValueADC0 = 0;int LED = 3;void setup() {lcd.begin(16, 2);
}void loop() {ValueADC0 =
analogRead(SensorPin1);analogWrite(LED,ValueADC0/4);lcd.setCursor(0,0);lcd.print("Nilai
ADC0");if(ValueADC0 >=
1000){lcd.setCursor(0,1);lcd.print(ValueADC0); }if(ValueADC0