bab ii landasan teori 2.1 tinjauan pustakarepository.ump.ac.id/2760/3/bab...
TRANSCRIPT
BAB II
LANDASAN TEORI
2.1 Tinjauan Pustaka
Hal yang mendasari penelitian yang dilakukan dalam penyusunan laporan
Tugas Akhir ini adalah melihat pada alat yang telah dibuat sebelumnya yaitu
berupa papan informasi yang dilakukan oleh Fatoni (2005) dan dot matrix display
yang dilakukan oleh Rudiono (2010). Alat yang akan dibuat kali ini adalah
pengembangan dari alat yang telah dibuat sebelumnya, yaitu dengan penambahan
jumlah karakter dari sistem dot matrix display.
Dalam papan informasi elektronik, masukan atau input data dilakukan
melalui rangkaian downloader ataupun software, sedangkan pada dot matrix
display pada umumnya harus membuat driver kolom, driver baris dan jumlah
karakter sedikit. Maka, untuk pengembangan kali ini adalah apabila kita ingin
merubah tulisan pada dot matrix display menggunakan konektor keyboard PC
maka kita tidak perlu repot-repot merubah programnya. Cara mengoperasikannya
juga sangat mudah, yaitu cukup menekan tombol ESC untuk mengganti karakter
sesuai dengan yang kita inginkan lalu menekan tombol ENTER untuk
mengirimkan data masukan dari keyboard PC yang akan diproses oleh
mikrokontroler ATmega328 lalu akan ditampilkan di display.
6
Rancang Bangun Running…, Khamdani, Fakultas Teknik UMP, 2014
2.2 Dot Matrix Display
Dot Matrix Display yaitu berupa LED (Light Emitting Diode) yang
disambung dan dirangkai menjadi deretan LED (Light Emitting Diode) ataupun
dapat berupa dot matrix. Dot matrix merupakan deretan LED (Light Emitting
Diode) yang membentuk array dengan jumlah kolom dan baris tertentu,
sehingga titik-titik yang menyala dapat membentuk suatu karakter angka,
huruf, tanda baca, dan sebagainya. Panel dot matrix display P10 ukuran 16 x
32 merupakan modul display dot matrix yang sudah tersusun register untuk
mengendalikan nyala array LED (Light Emitting Diode), dan input teks. Jika dot
matrix tidak menggunakan shift register, maka LED (Light Emitting Diode) bisa
menyala bersamaan satu kolom atau satu baris.
Pada dasarnya LED (Light Emitting Diode) memiliki dua buah kaki Anoda
dan Katoda yang dimana untuk mengaktifkan LED (Light Emitting Diode)
tersebut Anoda kita beri VCC dan Katoda kita hubungkan ke Ground. Dot
Matrix merupakan kumpulan dari LED (Light Emitting Diode) yang
dihubungkan.
Gambar 2.1 Susunan Led Dot Matrix
Rancang Bangun Running…, Khamdani, Fakultas Teknik UMP, 2014
Untuk menampilkan sebuah huruf pada display, maka data binernya harus
dikirimkan secara terus menerus. Sebagai contoh adalah cara pembentukan
karakter “A”. Langkah selanjutnya adalah mengubah bentuk pola karakater “A”
dimana LED (Light Emitting Diode) yang nyala (merah) logika 1 dan yang
padam (hitam) logika 0.
Berikut contoh tampilan huruf A pada Dot Matrix ukuran 5x7 dapat dilihat
pada Gambar 2.2.
Gambar 2.2 Contoh Tampilan Huruf A pada Dot Matrix 5x7
Dalam Tugas Akhir ini, jenis Dot Matrix yang akan digunakan dalam
rangkaian adalah Dot Matrix Display P10 ukuran 16 baris dan 32 kolom berwarna
merah. Prinsip kerjanya sama seperti Dot Matrix 5x7 dimana Dot Matrix Display
P10 ini sudah ditentukan letak karakter pada display di library Arduino. Berikut
Gambar 2.3 adalah skema Dot Matrix Display P10.
Rancang Bangun Running…, Khamdani, Fakultas Teknik UMP, 2014
Gambar 2.3 Skema Dot Matrix Display P10
Pada Display Dot matrix ini terdapat pin konektor sebanyak 16 pin untuk
menghubungkan ke pin mikrokontroler ATmega328. Pin konektor ini akan
dijelaskan pada Gambar 2.4.
Gambar 2.4 Pin Konektor DMD dan Pin Konektor Ke Mikrokontroler
Konektor
Rancang Bangun Running…, Khamdani, Fakultas Teknik UMP, 2014
2.3 Keyboard PC
Keyboard PC adalah sarana input yang nantinya akan dimanfaatkan untuk
menuliskan atau mengubah text pada tampilan display. Keyboard merupakan
sarana input yang sangat murah. Sistem berbasis mikrokontroler dengan mudah
bisa dilengkapi dengan 101 tombol untuk mengisikan teks maupun angka.
Aplikasi ini berfungsi untuk mengambil data karakter dari keyboard dan
mengirim ke port serial mikrokontroler ATmega328 dalam bentuk ASCII
(American Standard Code for Information Interchange).
Gambar 2.5 Keyboard PC dan Scan Code
(Sutanto, 2000)
Setiap kali salah satu tombol keyboard ditekan atau dilepas, keyboard akan
mengirimkan kode ke mikrokontroler. Kode tersebut dinamakan dengan scan
code, seperti yang terlihat pada Gambar 2.5.
Scan code untuk tombol ‘s’ adalah 1B (angka hexsadesimal yang setara
dengan angka biner 00011011). Ketika tombol ‘s’ ditekan terus, maka keyboard
akan mengirimkan 1B berikutnya terus menerus sampai ada tombol lain yang
akan ditekan atau tombol ‘s’ tadi dilepaskan.
Rancang Bangun Running…, Khamdani, Fakultas Teknik UMP, 2014
Keyboard juga mengirimkan kode pada saat ada satu tombol yang dilepas,
kodenya adalah F0 (angka heksadesimal yang setara dengan biner 11110000).
Jadi, jika tombol ‘s’ tadi dilepas maka keyboard akan mengirimkan F0 dan 1B.
Kode-kode tersebut dikirim oleh keyboard secara seri, artinya dikirmkan
satu bit demi satu bit. Misalkan mula-mula dikirim ‘1’, sesaat kemudian ‘1’ lagi
dan menyusul ‘0’ sampai akhirnya terkirim sebanyak 8 bit yang berbentuk
00011011 (dikirim mulai dari bit yang paling kanan kemudian bergeser satu
persatu samapi yang paling kiri). Masing-masing tombol mempunyai scan code
sendiri, termasuk tombol ‘Shift’, tombol ‘Ctrl’ dan lain-lain. Scan code disusun
sebagai kode 8 bit. Konfigurasi dari konektor keyboard dapat dilihat pada Gambar
2.6.
Gambar 2.6 Konfigurasi konektor keyboard PS2
2.4 Scanning Encoder
Dalam scanning encoder, tombol-tombol kunci disusun seperti
sebuah matrik. Dengan cara seperti ini, cacah sambungan yang diperlukan
menjadi lebih sedikit. Sandi yang dikenal dengan sebutan scanning encoder,
berupa sebuah keeping RAM (Random Access Memory) yang akan
membangkitkan karakter ASCII (American Standard Code for Information
Rancang Bangun Running…, Khamdani, Fakultas Teknik UMP, 2014
Interchange) yang sesuai bila tombol pada matrix saklar ditekan. ASCII
(American Standard Code for Information Interchange) menyajikan sebuah
karakter dengan 7 bit bilangan biner yang memungkinkan kombinasi sampai 128
karakter yang berbeda.
Dari 128 karakter ini, 96 karakter diantaranya berupa printable character
(termasuk huruf besar dan kecil). Sisa karakter yang lain sebanyak 32 buah,
digunakan untuk karakter khusus, seperti carriage return, line feed, backspace
dan delete pada keyboard. Sistem berbasis mikrokontroler dengan mudah bisa
dilengkapi dengan 101 tombol untuk mengisikan teks maupun angka.
Aplikasi ini berfungsi untuk mengambil data karakter dari keyboard dan
mengirimakan ke port serial mikrokontroler ATmega328 dalam bentuk ASCII
(American Standard Code for Information Interchange).
2.5 Mikrokontroler ATmega328
Mikrokontroler adalah suatu alat elektronika digital yang mempunyai
masukan serta keluaran serta dapat di read dan write dengan cara khusus.
Mikrokontroler dapat diberikan suatu program yang bekerja sesuai dengan
keinginan pengguna. Sehingga mikrokontroler dapat dihubungkan dengan alat-
alat lain. Dapat dikatakan mikrokontroler sebagai otak dari sistem secara
keseluruhan
ATmega328 adalah mikrokontroler keluaran dari Atmel yang mempunyai
arsitektur RISC (Reduce Instruction Set Computer) yang dimana setiap proses
Rancang Bangun Running…, Khamdani, Fakultas Teknik UMP, 2014
eksekusi data lebih cepat dari pada arsitektur CISC (Completed Instruction Set
Computer).
Mikrokontroler ini memiliki beberapa fitur antara lain :
1. 130 macam instruksi yang hampir semuanya dieksekusi dalam satu siklus
clock.
2. 32 x 8-bit register serba guna.
3. Kecepatan mencapai 16 MIPS dengan clock 16 MHz.
4. 32 KB Flash memory dan pada arduino memiliki bootloader yang
menggunakan 2 KB dari flash memori sebagai bootloader.
5. Memiliki EEPROM (Electrically Erasable Programmable Read Only
Memory) sebesar 1KB sebagai tempat penyimpanan data semi permanent
karena EEPROM tetap dapat menyimpan data meskipun catu daya
dimatikan.
6. Memiliki SRAM (Static Random Access Memory) sebesar 2KB.
7. Memiliki pin I/O digital sebanyak 14 pin 6 diantaranya PWM (Pulse Width
Modulation) output.
8. Master / Slave SPI Serial interface.
Rancang Bangun Running…, Khamdani, Fakultas Teknik UMP, 2014
Gambar 2.7 Arsitektur ATmega328
Gambar 2.8 Konfigurasi pin Atmega328
(Sumber : www.atmel.com)
Rancang Bangun Running…, Khamdani, Fakultas Teknik UMP, 2014
Memory
ATmega328 memiliki 32 KB flash memori untuk menyimpan kode, juga 2
KB yang digunakan untuk bootloader. ATmega328 memiliki 2 KB untuk SRAM
dan 1 KB untuk EEPROM.
Input dan Output
Setiap 14 pin digital pada arduino dapat digunakan sebagai input atau
output, menggunakan fungsi pinMode(), digitalWrite(), dan digitalRead().
Input/output dioperasikan pada 5 volt. Setiap pin dapat menghasilkan atau
menerima maximum 40 mA dan memiliki internal pull-up resistor (disconnected
oleh default) 20-50 KOhms.
Beberapa pin memiliki fungsi sebagai berikut :
1. Serial : 0 (RX) dan 1 (TX). Digunakan untuk menerima (RX) dan
mengirim (TX) TTL data serial. Pin ini terhubung pada pin yang
koresponding dari USB FTDI ke TTL chip serial.
2. Interupt eksternal : 2 dan 3. Pin ini dapat dikonfigurasikan untuk trigger
sebuah interap pada low value, rising atau falling edge, atau perubahan
nilai.
3. PWM : 3, 5, 6, 9, 10, dan 11. Mendukung 8 -bit output PWM dengan
fungsi analogWrite().
4. SPI : 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Pin ini mensuport
komunikasi SPI, yang mana masih mendukung hardware, yang tidak
termasuk pada bahasa arduino.
Rancang Bangun Running…, Khamdani, Fakultas Teknik UMP, 2014
5. LED : 13. Ini adalah dibuat untuk koneksi LED ke digital pin 13. Ketika
pin bernilai HIGH, LED hidup, ketika pin LOW, LED mati.
2.6 Catu Daya
Catu daya merupakan sumber tegangan DC. Sumber tegangan DC ini
dibutuhkan oleh berbagai macam rangkaian elektronika untuk dapat dioperasikan.
Karena sebagian besar rangkaian elektronika membutuhkan tegangan DC untuk
dapat bekerja dengan baik. Karena tegangan jala-jala dari PLN adalah tegangan
AC, maka yang harus dilakukan terlebih dahulu dalam setiap peralatan
elektronika adalah mengubah tegangan AC ke tegangan DC. Oleh sebab itu
diperlukan rangkaian penyearah yang dapat melakukan pengubahan tegangan AC
ke tegangan DC. Rangkaian inti dari catu daya ini adalah suatu rangkaian
penyearah yaitu rangkaian yang mengubah sinyal bolak-balik (AC) menjadi sinyal
searah (DC).
Gambar 2.9 Catu Daya
(Sumber : https://telinks.wordpress.com/tag/skematik-catu-daya-5v-dan-12v/)
Rancang Bangun Running…, Khamdani, Fakultas Teknik UMP, 2014
2.7 Pemrograman Bahasa C Arduino
2.7.1. Structure
Structure dasar dari bahasa pemrograman arduino itu sederhana hanya
terdiri dari dua bagian yaitu:
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.
setup()
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 disertakan dalam program walaupun tidak ada
statement yang di jalankan.
void setup() { pinMode(13,OUTPUT); // mengset ‘pin’ 13 sebagai output }
Rancang Bangun Running…, Khamdani, Fakultas Teknik UMP, 2014
loop
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 }
function
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 dibahas diatas
Cara pendeklarasian function
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 diatas fungsi tersebut memiliki nilai balik int (integer), karena
kalau tidak menghendaki adanya nilai balik maka type function harus void.
Rancang Bangun Running…, Khamdani, Fakultas Teknik UMP, 2014
2.7.2 Variable
Variable adalah sebuah penyimpan nilai yang dapat digunakan dalam
program. Variable dapat dirubah sesuai dengan instruksi yang kita buat. Ketika
mendeklarisikan variable harus disertakan type variable serta nilai awal variable.
Type variableName = 0;
Contoh:
Int inputVariable = 0; // mendefinisikan sebuah variable bernama inputVariable dengan nilai awal 0 inputVariable = analogRead(2); // menyimpan nilai yang ada di analog pin 2 ke inputVariable
variable scope
Sebuah variable dapat dideklarasikan pada awal program sebelum void
setup(), secara lokal didalam sebuah function, dan terkadang didalam sebuah
block statement pengulangan. Sebuah variable global hanya satu dan dapat
digunakan pada semua block function dan statement didalam program. Variable
global dideklarasikan pada awal program sebelum function setup().
Sebuah variable lokal dideklarasikan disetiap block function atau di setiap block
statement pengulangan dan hanya dapat digunakan pada block yang bersangkutan
saja.
Contoh penggunaan:
int value; // ‘value’ adalah variable global dan dapat di gunakan pada semua block funtion void setup() { // no setup needed } void loop() {
Rancang Bangun Running…, Khamdani, Fakultas Teknik UMP, 2014
for (int i=0; i<20;) // 'i' hanya dapat di gunakan dalam pengulangan saja { i++; } float f; // 'f' sebagai variable local }
2.7.3 Data type
byte
Type byte dapat menyimpan 8-bit nilai angka bilangan asli tanapa koma.
Byte memiliki range 0 – 255.
Byte biteVariable = 180; // mendeklarasikan ‘biteVariable’ sebagai type byte
integer
Integer adalah tipe data yang utama untuk menyimpan nilai bilangan bulat
tanpa koma. Penyimpanan integer sebesar 16-bit dengan range 32.767 sampai -
32.768.
Int integerVariable = 1600; // mendeklarasikan ‘integerVariable’ sebagai type integer
long
Perluasan ukuran untuk long integer, penyimpanan long integer sebesar
32-bit dengan range 2.147.483.647 sampai -2.147.483.648
Long longVariable = 500000; // mendeklarasikan ‘longVariable’ sebagai type long
Rancang Bangun Running…, Khamdani, Fakultas Teknik UMP, 2014
float
Float adalah tipe data yang dapat menampung nilai decimal, float
merupakan penyimpan yang lebih besar dari integer dan dapat menyimpan
sebesar 32-bit dengan range 3.4028235E+38 sampai -3.4028235E+38
Float floatVariable = 3.14; // mendeklarasikan ‘floatVariable’ sebagai type float
array
Array adalah kumpulan nilai yang dapat diakses dengan index number,
nilai yang terdapat dalam array dapat dipanggil dengan cara menuliskan nama
array dan index number. Array dengan index 0 merupakan nilai pertama dari
array. Array perlu dideklarasikan dan kalau perlu diberi nilai sebelum di gunakan.
Int arraysName[] = {nilai0, nilai1, nilai2 . . . }
Contoh penggunaan array:
Int arraySaya[] = {2,4,6,8,10} x = arraySaya[5]; // x sekarang sama dengan 10
2.7.4 Operator
aritmatic
Operator aritmatic terdiri dari penjumlahan, pengurangan, pengkalian, dan
pembagian.
y = y + 3; x = x - 8; i = i * 5; r = r / 9;
Rancang Bangun Running…, Khamdani, Fakultas Teknik UMP, 2014
Dalam menggunakan operan aritmatic harus hati-hati dalam menentukan
tipe data yang digunakan jangan sampai terjadi overflow range data.
compound assignments
Compound assignments merupakan kombinasi dari aritmatic dengan
sebuah variable. Ini biasanya dipakai pada pengulangan.
x ++; // sama seperti x = x + 1 atau menaikan nilai x sebesar 1 x --; // sama seperti x = x - 1 atau mengurangi nilai x sebesar1 x += y; // sama seperti x = x + y x -= y; // sama seperti x = x – y x *= y; // sama seperti x = x * y x /= y; // sama seperti x = x / y
comparison
Statement ini membadingkan dua variable dan apabila terpenuhi akan
bernilai 1 atau true. Statement ini banyak digunakan dalam operator bersyarat.
x == y; // x sama dengan y x != y; // x tidak sama dengan y x < y; // x leboh kecil dari y x > y; // x lebih besar dari y x <= y; // x lebih kecil dari sama dengan y x >= y; // x lebih besar dari sama dengan y
logic operator
Operator logical digunakan untuk membandingkan 2 expresi dan
mengembalikan nilai balik benar atau salah tergantung dari operator yang
digunakan. Terdapat 3 operator logical AND, OR, dan NOT, yang biasanya
digunakan pada if statement.
Rancang Bangun Running…, Khamdani, Fakultas Teknik UMP, 2014
Contoh penggunaan:
Logical AND If ( x > 0 && x < 5) // bernilai benar apabila kedua operator pembanding terpenuhi
Logical OR
If ( x > 0 || y > 0) // bernilai benar apabila salah satu dari operator pembanding terpenuhi
Logical NOT
If ( !x > 0 ) // benilai benar apabila ekspresi operator salah
2.7.5 Konstanta
Arduino mempunyai beberapa variable yang sudah dikenal yang kita sebut
konstanta. Ini membuat program lebih mudah untuk dibaca. Konstanta di
kelasifikasi berdasarkan group.
true/false
Merupakan konstanta Boolean yang mendifinisikan logic level. False
mendifinisikan 0 dan True mendifinisikan 1.
If ( b == TRUE ); { //doSomething }
Rancang Bangun Running…, Khamdani, Fakultas Teknik UMP, 2014
high/low
Konstanta ini mendifinisikan aktifitas pin HIGH atau LOW dan digunakan
ketika membaca dan menulis ke digital pin. HIGH didefinisikan sebagai 1
sedangkan LOW sebagai 0.
digitalWrite( 13, HIGH );
input/output
Konstanta ini digunakan dengan fungsi pinMode() untuk mendifinisikam
mode pin digital, sebagai input atau output
pinMode( 13, OUTPUT );
2.7.6 Flow control
if
If Operator if mengtest sebuah kondisi seperti nilai analog sudah berada
dibawah 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; }
if… else
Operator if…else mengtest sebuah kondisi apabila tidak sesuai dengan
kondisi yang pertama maka akan mengeksekusi baris program yang ada di else.
Rancang Bangun Running…, Khamdani, Fakultas Teknik UMP, 2014
If ( inputPin == HIGH ) { //Laksanakan rencana A; } Else { //Laksanakan rencana B; }
for
Operator for digunakan dalam blok pengulangan tertutup.
For ( initialization; condition; expression ) { //doSomethig; }
while
Operator while akan terus mengulang baris perintah yang ada dalam
bracket sampai ekspresi sebagai kondisi pengulangan benilai salah.
While ( someVariable ?? value ) { //doSomething; }
do… while
Sama halnya dengan while() hanya saja pada operator Do…while tidak
melakukan pengecekan pada awal tapi diakhir, sehingga otomatis akan melakukan
satu kali baris perintah walaupun pada awalnya sudah terpenuhi.
Do { //doSomething; } While ( someVariable ?? value );
Rancang Bangun Running…, Khamdani, Fakultas Teknik UMP, 2014
2.7.7 Digital I/O
Input / Output Digital pada breadboard arduino ada 14, pengalamatnya 0 -
13, ada saat tertentu I/O 0 dan 1 tidak bisa digunakan karena dipakai untuk
komunikasi serial, sehingga harus hati-hati dalam pengalokasian I/O.
pinMode(pin, mode)
Digunakan dalam void setup() untuk mengkonfigurasi pin apakah sebagai
Input atau Output. Arduino digital pin secara default dikonfigurasi sebagai input
sehingga untuk merubahnya harus menggunakan operator pinMode(pin, mode).
pinMode (pin, OUTPUT); // mengset pin sebagai output digitalWrite(pin, HIGH); // pin sebagai source voltage
digitalRead(pin)
Membaca nilai dari pin yang kita kehendaki dengan hasil HIGH atau LOW.
Value = digitalRead(pin); // mengset ‘value’ sama dengan pin
digitalWrite(pin, value)
Digunakan untuk mengset pin digital. Pin digital arduino mempunyai 14 ( 0 – 13 ).
digitalWrite ( pin, HIGH ); // set pin to HIGH
2.7.8 Analog I/O
Input / Ouput analog pada breadboard arduino ada 6 pengalamatnya 0 - 5
Rancang Bangun Running…, Khamdani, Fakultas Teknik UMP, 2014
analogRead(pin)
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
analogWrite(pin, value)
Untuk mengirimkan nilai analog pada pin analog.
analogWrite(pin, value); // menulis ke pin analog
2.7.9 Time
delay(ms)
Menghentikan program untuk sesaat sesuai dengan yang di kehendaki,
satuanya dalam millisecond.
Delay(1000); // menunggu selama satu detik
2.7.10 Serial
Serial.begin(rate)
Statement ini digunakan untuk mengaktifkan komunikasi serial dan
mengset baudrate.
void setup() { Serial.begin(9600); //open serial port and set baudrate 9600 bps }
Rancang Bangun Running…, Khamdani, Fakultas Teknik UMP, 2014