Top Banner
BAB 1. INPUT OUTPUT 1.1 Tujuan 1. Mahasiswa dapat memahami fungsi input output. 2. Mahasiswa dapat membuat rangkaian dan memprogram arduino dengan fungsi input output. 1.2 Landasan Teori 1. 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. 1
53

LAPORAN MIKROKONTROLER ALAT

Sep 15, 2015

Download

Documents

Laporan MIKROKONTROLLER
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript

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