Alat Ukur Digital Kemiringan Bidang Datar Menggunakan Bi-Axial Joystick Berbasis Arduino Uno

5

BAB II
TINJAUAN PUSTAKA

2.1. Sensor
adalah transduser yang berfungsi untuk mengolah variasi gerak, panas, cahaya atau sinar,
magnetis, dan kimia menjadi tegangan serta arus listrik. Sensor sendiri adalah komponen
penting pada berbagai peralatan. Sensor juga berfungsi sebagai alat untuk mendeteksi dan
juga untuk mengetahui magnitude. Transduser sendiri memiliki arti mengubah, resapan dari
bahasa latin traducere Bentuk perubahan yang dimaksud adalah kemampuan merubah suatu
energi kedalam bentuk energi lain. Energi yang diolah bertujuan untuk menunjang daripada
kinerja piranti yang menggunakan sensor itu sendiri. Sensor sendiri sering digunakan dalam
proses pendeteksi untuk proses pengukuran. Sensor yang sering menjadi digunakan dalam
berbagai rangkaian elektronik antara lain sensor cahaya atau sinar, sensor suhu, serta sensor
tekanan.
Dari pengertian sensor yang telah kami jabarkan diatas wajar jika alat tersebut menjadi alat
yang banyak diminati oleh berbagai pabrikan elektronik. Salah satu pabrikan yang tengah
gencar menggunakan sensor pada produk mereka adalah pabrikan handphone dengan model
touch screen. Sensor tekanan pada berbagai handphone sekarang ini membutuhkan adanya
dukungan dari sensor tekanan. Selain pada gadget dengan teknologi canggih tersebut,

sensor tekanan juga biasa diaplikasikan kepada berbagai alat elektronik lain seperti
kalkulator serta remot. Adanya tekanan pada tombol-tombol pada kalkulator ataupun remot
bekerja dengan mengubah daya tekan tersebut menjadi daya atau sinyal listrik.

2.1. Sensor Joystick

Universitas Sumatera Utara

6

Yang dapat digunakan dengan Arduino / rangkaian elektronika yang memerlukan
masukan kendali gerak seperti pada aplikasi permainan, kendali penempatan motor servo,
atau kendali masukan dua sumbu analog lainnya.Joystick sumbu ganda (bi-axial) tipe ini
adalah tipe yang sama dengan yang digunakan di gagang kendali analog pada konsol
Sony Playstation 2. Tersambung dalam tombol dari plastik berkualitas tinggi ini adalah
dua potensiometer tipe metal rocker yang teruji daya tahan dan responsivitasnya.Selain
dapat membaca masukan gerakan pada 2 sumbu horisontal X dan Y secara presisi dan
akurat, joystick ini juga dapat berfungsi sebagai tombol tekan pada sumbu-Z.

Gambar 2.1 sensor joystick


2.2.1. Cara Kerja Joystick
Kebanyakan joystick dua-dimensi, memiliki dua sumbu gerakan mirip dengan
mouse, tapi joystick satu dan tiga dimensi memang ada. Sebuah joystick umumnya
dikonfigurasi sehingga memindahkan gerakan sinyal tongkat kiri atau kanan sepanjang
sumbu X, dan bergerak ke depan (atas) atau belakang (bawah) gerakan sinyal sepanjang

Universitas Sumatera Utara

7

sumbu Y. Dalam joystick yang dikonfigurasi untuk gerakan tiga-dimensi, memutar
tongkat kiri (berlawanan arah jarum jam) atau kanan (searah jarum jam) pergerakan
sinyal sepanjang sumbu Z. Ketiga sumbu X, Y dan Z yang dalam kaitannya dengan suatu
gulungan, bola, dan pesawat. Sebuah joystick analog adalah joystick yang menyatakan
berulang kembali yaitu suatu ukuran sudut pergerakan ke segala arah pada bidang atau
ruang (biasanya menggunakan potensiometer) dan joystick digital yang hanya
memberikan sinyal on / off untuk empat arah yang berbeda, dan kemungkinan kombinasi
mekanis (seperti atas-kanan, kiri-bawah). Joystick digital sangat umum sebagai kontroler
game untuk konsol permainan video, mesin arcade, dan komputer rumah dari 1980an.Selain itu joystick sering memiliki tombol api satu atau lebih, digunakan untuk

memicu suatu tindakan. Ini adalah tombol sederhana untuk menekan on / off. Beberapa
joystick memiliki kemampuan haptic feedback. Ini yang disebut perangkat aktif, bukan
hanya perangkat input. Komputer dapat mengembalikan sinyal ke joystick yang
menyebabkan perlawanan gerakan dengan kekuatan yang kembali atau membuat joystick
bergetar.

Gambar 2.2 rangkaian joystick Bi axial

Universitas Sumatera Utara

8

2.3. Arduino Uno R3
Arduino merupakan mikrokontroler yang memang dirancang untuk bisa
digunakan dengan mudah oleh para seniman dan desainer. Dengan demikian, tanpa
mengetahui bahasa pemograman, Arduino bisa digunakan untuk menghasilkan karya
yang canggih. Hal ini seperti yang diungkapkan oleh Mike Schmidt.Menurud Massimo
Banzi, salah satu pendiri atau pembuat Arduino, Arduino merupakan sebuah platform
hardware open source yang mempunyai input/output (I/O) yang sederhana.Menggunakan
Arduino sangatlah membantu dalam membuat suatu prototyping ataupun untuk

melakukan pembuatan proyek. Arduino memberikan I/O yang sudah lengkap dan bisa
digunakan dengan mudah. Arduino dapat digabungkan dengan modul elektro yang lain
sehingga proses perakitan jauh lebih efisien.
Arduino

merupakan

salah

satu

pengembang

yang

banyak

digunakan.

Keistimewaan Arduino adalah hardware yang Open Source. Hal ini sangatlah memberi

keleluasaan bagi orang untuk bereksprimen secara bebas dan gratis. Secara umum,
Arduino terdiri atas dua bagian utama, yaitu:

1. Bagian Hardware
Berupa papan yang berisi I/O, seperti Gambar dibawah ini

Gambar 2.3 Board Arduino

Universitas Sumatera Utara

9

2. Bagian Software
Berupa Sofware Arduino yang meliputi Integrated Depelopment Enviroment (IDE)
untuk menulis program. Arduino memerlukan instlasi driver untuk menghubungkan
dengan komputer. Pada IDE terdapat contoh program dan library untuk pengembangan
program. IDE software Arduino yang digunakan diberi nama Sketch. dibawah ini

Gambar 2.4 IDE Arduino Versi 1.6.5


2.4. Mikrokontroler
2.4.1 Gambaran Mikrokontroler
Menurut Hermawan Sutanto, (1998). Tidak seperti sistem komputer, yang mampu
menangani berbagai macam program aplikasi (misalnya pengolah kata, pengolah angka
dan lain sebagainya), Mikrokontroller hanya bisa digunakan untuk satu aplikasi tertentu
saja. Perbedaan lainnya terletak pada perbandingan RAM dan ROM-nya. Pada sistem

Universitas Sumatera Utara

10

komputer perbandingan RAM dan ROM-nya besar, artinya program-program pengguna
disimpan dalam ruang RAM yang relatif besar dan rutin-rutin antarmuka perangkat keras
disimpan dalam ruang ROM yang kecil. Sedangkan pada mikrokontroler, perbandingan
ROM dan RAM-nya yang besar artinya program kontrol disimpan dalam ROM (bisa
Masked ROM atau Flash PEROM) yang ukurannya relatif lebih besar, sedangkan RAM
digunakan sebagai tempat penyimpanan sementara, termasuk register-register yang
digunakan pada mikrokontroller yang bersangkutan ATMEGA32.

2.4.2 Mikrokontroler Arduino Uno ATMega328

Arduino Uno adalah salah satu produk berlabel arduino yang sebenarnya adalah suatu
papan elektronik yang mengandung mikrokontroler ATMega328 (sebuah keping yang
secara fungsional bertindak seperti sebuah komputer). Peranti ini dapat dimanfaatkan
untuk mewujudkan rangkaian elektronik dari yang sederhana hingga yang kompleks.
Pengendalian LED hingga pengontrolan robot dapat di implementasikan dengan
menggunakan papan yang berukuran relatif kecil ini. Arduino uno mengandung
mikroprosesor (berupa atmel AVR) dan dilengkapi dengan oscillator 16 MHZ (yang
memungkinkan operasi berbasis waktu dilaksanakan dengan tepat), dan regulator
(pembangkit tegangan) 5 volt. Sejumlah pin tersedia di papan. Pin 0 hingga 13 digunakan
untuk isyarat digital, yang hanya bernilai 0 atau 1. Pin A0-A5 digunakan untuk isyarat
analog. Arduino Uno dilengkapi dengan static random acces memory (SRAM) berukuran
1 KB untuk memegang data, flash memory berukuran 32KB, dan erasable programmable
read-only memory (EEPROM) untuk menyimpan perintah.

2.4.3. Arsitektur ATMega 328

Universitas Sumatera Utara

11


Untuk memberikan gambaran mengenai apa saja yang terdapat di dalam sebuah
mikrokontroler, pada gambar dibawah ini diperlihatkan contoh diagram blok sederhana
dari mikrokontroler ATmega328 (dipakai pada Arduino Uno) seperti gambar blok
diagram sederhana dibawah ini:

UART (antar muka serial)
2KB RAM

32KB RAM

(Memory kerja)

Flash Memory

1KB RAM

CPU

EEPROM
Port input/output


Gambar 2.5Arsitektur ATMega 328
Keterangan Gambar 2.5 diatas sebagai berikut:
1.

Universal Asynchronous Receiver/Transmitter (UART) adalah antar muka yang
digunakan untuk komunikasi serial seperti pada RS-232, RS-422 dan RS-485.

2.

2KB RAM pada memory kerja bersifat volatile (hilang saat daya dimatikan), digunakan
oleh variable-variabel di dalam program.

3.

32KB RAM flash memory bersifat non-volatile, digunakan untuk menyimpan program
yang dimuat dari komputer. Selain program, flash memory juga menyimpan bootloader.

4.


Bootloader adalah program inisiasi yang ukurannya kecil, dijalankan oleh CPU saat
daya dihidupkan. Setelah boatloader selesai dijalankan, berikutnya program ini akan
dijalankan di dalam RAM akan dieksekusi.

Universitas Sumatera Utara

12

5.

1KB EEPROM bersifat non-volatile, digunakan untuk menyimpan data yang tidak
boleh hilang saat daya dimatikan. Tidak digunakan pada papan Arduino.

6.

Central Processing Unit (CPU), bagian dari mikrokontroler untuk menjalankan setiap
instruksi dari program.

7.


Port input/output, pin-pin untuk menerima data (input) digital atau analog, dan
mengeluarkan data (output) digital atau analog.

2.5. Bahasa C
Bahasa C adalah bahasa pemrograman yang dapat dikatakan berada antara bahasa
tingkat rendah (bahasa yang berorientasi pada mesin) dan bahasa tingkat tinggi (bahasa yang
berorientasi pada manusia). Seperti yang diketahui, bahasa tingkat tinggi mempunyai
kompatibilitas antara platform. Karena itu, amat mudah untuk membuat program pada berbagai
mesin. Berbeda halnya dengan menggunakan bahasa mesin, sebab setiap perintahnya sangat
bergantung pada jenis mesin.
Pembuat bahasa C adalah Brian W. Kernighan dan Dennis M. Ritchie pada tahun 1972.
C adalah bahasa pemrograman terstruktur, yang membagi program dalam bentuk blok.
Tujuannya untuk memudahkan dalam pembuatan dan pengembangan program. Program yang
ditulis dengan bahasa C mudah sekali dipindahkan dari satu jenis program ke bahasa program
lain. Hal ini karena adanya standarisasi bahasa C yaitu berupa standar ANSI (American
National Standar Institut) yang dijadikan acuan oleh para pembuat kompiler.jenis mesin.
Pembuat bahasa C adalah Brian W. Kernighan dan Dennis M. Ritchie pada tahun 1972. C
adalah bahasa pemrograman terstruktur, yang membagi program dalam bentuk blok. Tujuannya
untuk memudahkan dalam pembuatan dan pengembangan program.

Universitas Sumatera Utara

13

Program yang ditulis dengan bahasa C mudah sekali dipindahkan dari satu jenis
program ke bahasa program lain. Hal ini karena adanya standarisasi bahasa C yaitu berupa
standar ANSI ( American National Standar Institut) yang dijadikan acuan oleh para pembuat
kompiler.
Kelebihan Bahasa C:
-

Bahasa C tersedia hampir di semua jenis computer.

-

Kode bahasa C sifatnya adalah portable dan fleksibel untuk semua jenis computer.

-

Bahasa C hanya menyediakan sedikit kata-kata kunci. hanya terdapat 32 kata kunci.

-

Proses executable program bahasa C lebih cepat

-

Dukungan pustaka yang banyak.

-

C adalah bahasa yang terstruktur

-

Bahasa C termasuk bahasa tingkat menengah

Penempatan ini hanya menegaskan bahwa c bukan bahasa pemrograman yang
berorientasi pada mesin. yang merupakan ciri bahasa tingkat rendah. melainkan berorientasi
pada obyek tetapi dapat dinterprestasikan oleh mesin dengan cepat. secepat bahasa mesin.
inilah salah satu kelebihan c yaitu memiliki kemudahan dalam menyusun programnya semudah
bahasa tingkat tinggi namun dalam mengesekusi program secepat bahasa tingkat rendah.
Kekurangan Bahasa C:
-

Banyaknya

operator

serta

fleksibilitas

penulisan

program

kadang-kadang

membingungkan pemakai.
-

Bagi pemula pada umumnya akan kesulitan menggunakan pointer.

2.6. Software Arduino IDE

Universitas Sumatera Utara

14

IDE (Integrated Development Environment) Arduino merupakan aplikasi yang
mencakup editor, compiler, dan uploader dapat menggunakan semua seri modul keluarga
arduino, seperti Arduino Duemilanove, Uno, Bluetooth, Mega. Kecuali beberapa tipe
board produksi arduino yang memakai mikrokontroler diluar seri AVR, seperti
mikroprosesor ARM. Editor sketch pada IDE arduino juga mendukung fungsi penomoran
baris,

mendukung fungsi penomoran baris, syntax highlighthing, yaitu pengecekan

sintaksis kode sketch. Arduino yang di pakai adalah arduino versi 1.6.5.
2.7.LCD (Liquid Crystal Display)
Liquid Crystal Display (LCD) adalah komponen yang dapat menampilkan tulisan. Salah
satu jenisnya memiliki dua baris dengan setiap baris terdiri atas enam belas karakter.
LCD seperti itu biasa disebut LCD 16x2. [11]

Gambar 2.6 LCD 16x2

LCD memiliki 16 pin dengan fungsi pin masing-masing seperti yang terlihat pada table
II.1 dibawah.
No.Pin

Nama

I/O

Keterangan

Universitas Sumatera Utara

15

Pin
1

VSS

Power

Catu daya, ground (0v)

2

VDD

Power

Catu daya positif
Pengatur kontras, menurut datasheet, pin
iniperlu dihubungkan dengan pin vs

3
V0

melalui resistor Ω.
5k namun, dalam

Power

praktik,

resistor

yang

digunakan

sekitar2,2kΩ
Register Select
4

RS

Input



RS = HIGH : untuk mengirim data



RS = LOW : untuk mengirim instruksi
Read/Write control bus

5

R/W

Input



R/W = HIGH : mode untuk membaca

data di LCD
Tabel 2.1. pin-pin LCD
2.7.1 Cara kerja LCD
Pada aplikasi umumnya RW diberi logika rendah “0”.Bus data terdiri dari 4bit
atau 8 bit. Jika jalur data 4 bit maka yang digunakan ialah DB4 sampai dengan DB7.
Sebagaimana terlihat pada table deskripsi, interface LCD merupakan sebuah parallel bus,
dalam hal ini sangat memudahkan dan sangat cepat dalam pembacaan dan penulisan data
dari atau ke LCD. Kode ASCII yang ditampilkan sepanjang 8bit dikirim ke LCD secara
4bit atau 8bit pada satu waktu

Universitas Sumatera Utara

16

Jika mode 4bit yang digunakan, maka 2 nibble data dikirim untuk membuat
sepenuhnya 8bit (pertama dikirim 4bit MSB lalu 4bit LSB dengan pulsa clock EN setiap
nibblenya). Jalur control EN digunakan untuk memberitahu LCD bahwa mikrokontroler
mengirimkan data ke LCD. Untuk mengirim data ke LCD program harus menset EN ke
kondisi high “1” dan kemudian menset dua jalur control lainnya (RS dan R/W) atau juga
mengirimkan data ke jalur data bus. Saat jalur lainnya sudah siap, EN harus diset ke “0”
dan tunggu beberapa saat, dan set EN kembali ke high “1”. Ketika jalur RS berada dalam
kondisi low “0”, data yang dikirimkan ke LCD dianggap sebagai sebuah perintah atau
instruksi khusus (seperti bersihkan layar, posisi kursor dll). Ketika RS dalam kondisi high
atau “1”, data yang dikirimkan adalah data ASCII yang akan ditampilkan dilayar. Misal,
untuk menampilkan huruf “A” pada layar maka RS harus diset ke “1”. Jalur control R/W
harus berada dalam kondisi low (0) saat informasi pada data bus akan dituliskan ke LCD.
Apabila R/W berada dalam kondisi high “1”, maka program akan melakukan query data
dari LCD
Instruksi pembacaan hanya satu, yaitu Get LCD status, lainnya merupakan
instruksi penulisan, Jadi hamper setiap aplikasi yang menggunakan LCD, R/W selalu di
set ke “0”. Jalur data dapat terdiri 4 atau 8 jalur.Mengirimkan data secara parallel baik
4bit atau 8bit merupakan 2 mode operasi primer. Untuk membuat sebuah aplikasi
interface LCD, menentukan mode operasi merupakan hal yang paling penting
Mode 8bit sangat baik digunakan ketika kecepatan menjadi keutamaan dalam
sebuah aplikasi dan setidaknya minimal tersedia 11 pin I/0 (3pin untuk control, 8pin
untuk data).Sedangkan mode 4bit minimal hanya membutuhkan 7bit (3pin untuk control,
4 pin untuk data). Bit RS digunakan untuk memilih apakah data atau instruksi yang akan
ditransfer antara mikrokontroler dan LCD. Jika bit ini diset (RS = 1), maka byte pada
posisi kursor LCD saat itu dapat dibaca atau ditulis. Jika bit ini di reset (RS = 0),

Universitas Sumatera Utara

17

merupakan instruksi yang dikirim ke LCD atau status eksekusi dari instruksi terakhir
yang dibaca
2.7.2 Tipe Data
Tipe data merupakan suatu hal yang penting untuk kita ketahui pada saat belajar
bahasa pemrograman. Kita harus dapat menentukan tipe data yang tepat untuk
menampung sebuah data, baik itu data berupa bilangan numerik ataupun karakter. Hal ini
bertujuan agar program yang kita buat tidak membutuhkan pemesanan kapling memori
yang berlebihan. Seorang programmer yang handal harus dapat memilih dan menentukan
tipe data apa yang seharusnya digunakan dalam pembuatan sebuah program. Secara garis
besar tipe data pada bahasa C dibagi menjadi beberapa bagian antara lain sebagai Berikut
Macam-Macam Tipe Data Pada Bahasa C :
1.

Tipe Data Karakter
Sebuah karakter, baik itu berupa huruf atau angka dapat disimpan pada sebuah
variabel yang memiliki tipe data char dan unsigned char. Besarnya data yang dapat
disimpan pada variabel yang bertipe data char adalah (-127)- (127). Sedangkan untuk tipe
data unsigned char adalah dari 0- 255. Pada dasarnya setiap karakter memiliki nilai
ASCII (American Standard Code for Information Interchange), nilai inilah yang
sebetulnya disimpan pada variabel yang bertipe data karakter ini.

2.

Tipe Data Bilangan Bulat
Tipe data bilangan bulat atau dapat disebut juga bilangan desimal merupakan sebuah
bilangan yang tidak berkoma. Pada bahasa C terdapat bermacam-macam tipe data yang
dapat kita gunakan untuk menampung bilangan bulat. Kita dapat menyesuaikan
penggunaan tipe data dengan terlebih dahulu memperhitungkan seberapa besar nilai yang
akan kita simpan. Contohnya seperti berikut, kita akan melakukan operasi penjumlahan
nilai 300 dan 100 dan hasilnya akan disimpan pada variabel C. Jika dilihat, hasil dari

Universitas Sumatera Utara

18

penjumlahan tersebut nilainya akan lebih besar dari 255 dan nilainya pasti positif, oleh
karena itu sebaiknya kita menggunakan tipe data unsigned int. Namun berbeda halnya
jika kita ingin melakukan operasi pengurangan -5 - 300, jika dilihat hasilnya akan negatif
maka selayaknya digunakan variabel dengan tipe data int.
3.

Tipe Data Bilangan Berkoma
Pada bahasa C terdapat dua buah tipe data yang berfungsi untuk menampung data
yang berkoma, tipe data tersebut adalah float dan double. Tipe data double dapat
digunakan jika kita membutuhkan variabel yang dapat menampung tipe data berkoma
yang bernilai besar.

Tabel 2.2. Tipe Data
Tipe Data

Ukuran

Jangkauan Nilai

Bit

1 byte

0 atau 1

Char

1 byte

-128 s/d 127

Unsigned Char

1 byte

0 s/d 255

Signed Char

1 byte

-128 s/d 127

Int

2 byte

-32.768 s/d 32.767

Short Int

2 byte

-32.768 s/d 32.767

Unsigned Int

2 byte

0 s/d 65.535

Signed Int

2 byte

-32.768 s/d 32.767

Long Int

4 byte

-2.147.483.648

s/d

2.147.483.647
Unsigned Long Int

4 byte

0 s/d 4.294.967.295

Signed Long Int

4 byte

-2.147.483.648

s/d

2.147.483.647

Universitas Sumatera Utara

19

Float

4 byte

1.2*10-38 s/d 3.4*10+38

Double

4 byte

1.2*10-38 s/d 3.4*10+38

2.7.3 Identifier
Identifier atau nama pengenal adalah nama yang ditentukan sendiri oleh pemrogram
yang digunakan untuk menyimpan nilai, misalnya nama variable, nama konstanta, nama
suatu elemen (misalnya: nama fungsi, nama tipe data, dll). Identifier punya ketentuan
sebagai berikut :
1.

Maksimum 32 karakter (bila lebih dari 32 karakter maka yang diperhatikan hanya 32
karakter pertama saja).

2.

Case sensitive membedakan huruf besar dan huruf kecil.

3.

Karakter pertama harus karakter atau underscore ( _ ). Selebihnya boleh angka.

4.

Tidak boleh mengandung spasi atau blank.

5.

Tidak boleh menggunakan kata yang sama dengan kata kunci dan fungsi.
2.8 Kabel Pelangi
Kabel dalam bahasaInggris disebut cable merupakan sebuah alat yang
digunakan untuk Menghubungkan satu komponen ke komponen lainnya Kabel seiring
dengan perkembangannya dari waktu ke waktu terdiri dari berbagai jenis dan ukuran
yang membedakan satu dengan lainnya. Berdasarkan jenisnya, kabel terbagi menjadi 3
yakni kabel tembaga kabel koaksial, dan kabel serat optik.

Universitas Sumatera Utara