LAPORAN
PRAKTIKUM
Mata
kuliah Mikrokontroler
Praktikum 1 : Digital Input/Output
Praktikum 2 : Analog Input / Output
Praktikum 3 : Statement Control
Praktikum 3 : Statement Control
Praktikum 4 :Sensor Interfacing
Nama
|
:
|
I Putu Angga Aditya
|
Nim
|
:
|
1415313016
|
Dosen Pengampu
|
:
|
I Nyoman Kusuma Wardana, M.Sc
|
Program
Studi Teknik Listrik
Jurusan Teknik Elektro
Politeknik Negeri Bali
2016
DIGITAL Input/Output
(Praktikum 1)
I.Dasar Teori
Digital
Input/Output(Digital I/O) adalah komponen yang palling mendasar dari sebuah
MCU(Main Control Unit) yang menghubungkan mikrokontroler dengan dunia luar.
Antarmuka dengan dunia luar dikenal dengan istital PORT. Port adalah titik
dimana data inernal dari chip MCU keluar atau data eksternal berjalan masuk.
Digital IO bisa digunakan untuk menyalakan LED ,atau
men-drive sebuah transistor untuk keperluan pengontrolan dengan arus yang lebih
tinggi. Digital I/O juga bisa digunakan untuk membaca data dari luar(sebaagai
input),misalnya untuk membaca status tombol,switch,atau membaca data dari
keypad.
Contoh dari pengaplikasian digital I/O yaitu sebagai
berikut:
A.
Blink
Pada
contoh di bawah ini akan memperlihatkan hal paling sederhana yang bisa
dilakukan dengan menggunakan Arduino untuk melihat output/keluaran fisik, yaitu menghidup-matikan LED.
Hardware/perangkat keras yang diperlukan
·
Arduino
·
LED
B. Button
Pushbutton atau switch menghubungkan dua titik pada
rangkaian ketika kita menekannya. Pada contoh di bawah ini kita akan menyalakan
LED bawaan pada pin 13 dengan menggunakan button/tombol.
II.Alat Dan Bahan
Alat dan bahan percobaan diperlihatkan pada Tabel 2:
Tabel 2. Alat dan Bahan Praktikum
No
|
Alat dan Bahan
|
Jumlah
|
1
|
Board Arduino
Uno R3
|
1
|
2
|
Modul/Rangkaian
Percobaan
|
1
|
5
|
Kabel USB
|
1
|
6
|
Kabel jumper
|
Secukupnya
|
III.
Langkah Percobaan
III.1 Percobaan Led Blink
A.Koneksi
Hardware
Dengan menggunakan breadboard, koneksikan pin-pin ke Arduino dengan
konfigurasi seperti pada tabel berikut:
Koneksi Konfigurasi Blink dan
Arduino
Pin Arduino
|
Komponen
|
13
|
Led
|
Gambar 1. Skematik Percobaan blink
Gambar 2. Breadboard Percobaan Blink
B.Pemrograman
pada Arduino diperlihatkan sebagai berikut:
a.Blink
int led = 13;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
}
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
}
III.2 Push Button ON/OFF
A.Koneksi
Hardware
Dengan menggunakan breadboard, koneksikan pin-pin ke Arduino dengan
konfigurasi seperti pada tabel berikut:
Pin Arduino
|
Komponen
|
2
|
Button
|
13
|
Led
|
b)
Button
Gambar 1. Skematik Percobaan Button
Gambar 2. Breadboard Percobaan Button
B. Pemrograman pada
Arduino diperlihatkan sebagai berikut:
b.Push Button ON/OFF
int buttonPin = 2;
int ledPin = 13;
int buttonState = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop(){
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
}
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop(){
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
}
III.3 Kombinasi
Multi Pushbutton Dan Multi Led
A.Koneksi
Hardware
Dengan menggunakan breadboard, koneksikan pin-pin ke Arduino dengan
konfigurasi seperti pada tabel berikut:
Koneksi Konfigurasi Multi Pushbutton Dan Multi Led
Pin Arduino
|
Komponen
|
2
|
Button
1
|
3
|
Button
2
|
13
|
Led
1
|
12
|
Led
2
|
11
|
Led
3
|
10
|
Led
4
|
Gambar 1. Skematik Percobaan Multi Pushbutton Dan Multi Led
Gambar
2. Breadboard Percobaan Multi Pushbutton Dan Multi Led
B. Pemrograman pada
Arduino diperlihatkan sebagai berikut:
C. Multi Pushbutton Dan Multi Led
int
buttonPin1 = 2;
int
buttonPin2 = 3;
int
ledPin1 = 13;
int
ledPin2 = 12;
int
ledPin3 = 11;
int
ledPin4 = 10;
void
setup() {
pinMode(ledPin1,
OUTPUT);
pinMode(ledPin2,
OUTPUT);
pinMode(ledPin3,
OUTPUT);
pinMode(ledPin4,
OUTPUT);
pinMode(buttonPin1,
INPUT);
pinMode(buttonPin2,
INPUT);
}
void
loop() {
digitalRead(buttonPin1);
digitalRead(buttonPin2);
if
(buttonPin1 == HIGH) {
//
jalan kanan
digitalWrite(ledPin1,HIGH);
digitalWrite(ledPin2,LOW);
digitalWrite(ledPin3,LOW);
digitalWrite(ledPin4,LOW);
delay
(1000);
digitalWrite(ledPin1,LOW);
digitalWrite(ledPin2,HIGH);
digitalWrite(ledPin3,LOW);
digitalWrite(ledPin4,LOW);
delay
(1000);
digitalWrite(ledPin1,LOW);
digitalWrite(ledPin2,LOW);
digitalWrite(ledPin3,HIGH);
digitalWrite(ledPin4,LOW);
delay
(1000);
digitalWrite(ledPin1,LOW);
digitalWrite(ledPin2,LOW);
digitalWrite(ledPin3,LOW);
digitalWrite(ledPin4,HIGH);
delay
(1000);
}
else
{
digitalWrite(ledPin1,LOW);
digitalWrite(ledPin2,LOW);
digitalWrite(ledPin3,LOW);
digitalWrite(ledPin4,LOW);
delay
(1000);
}
}
IV.Hasil Dan Pembahasan
Pada percobaan kali ini menggunakan
pin-pin digital dari arduino, dimana pin- pin tersebut akan dipakai baik
sebagai input maupun output. Seperti percobaan diatas Pushbutton dipakai
sebagai input dan Led dipakai sebagai output. Dan jika kita ingin membuat pin
digital arduino sebagai input, maka pada program di arduino.ide kita dapat
menulis “ pinMode (pushbutton1,INPUT); “ , dan untuk membaca
hasil inputan dari pushbuttonnya dapat digunakan “digitalRead (pushbutton); “
. Kemudian jika kita ingin membuat pin arduino sebagai output maka untuk pin
mode kita dapat tuliskan “pinMode (Led1,OUTPUT); “
ANALOG Input/Output
(Praktikum 2)
I. Dasar Teori
Sinyal Analog adalah suatu kondisi tertentu ada
kemungkinan dihadapkan pada kondisi input dan output yang membutuhkan besaran
yang berubah-ubah dengan nilai yang kontinyu dan tidak lagi hanya dengan dua
keadaan seperti halnya sinyal digital.
Sebagai
contoh saat menghubungkan sensor yang tegangan keluarannya bervariasi dalam
kisaran dari 0 volt sampai 5 volt.
·
Analog Input
Arduino
khususnya menyediakan 6 kanal(8 kanal pada model mini dan nano,dan 16 pada
model mega)untuk difungsikan sebagai analog input.
Analog
ke digital converternya menggunakan resolusi 10 bit yang berarti range nilai
analog dari 0 volt sampai 5 volt akan dirubah ke nilai integer 0 sampai 1023.
Perintah
yang digunakan untuk fungsi analog input ini adalah:
1.analogRead(pin)
berfungsi untuk membaca nilai analog pada input pin yang akan menghasilkan
nilai integer antara 0-1023
2.analogReference(parameter)
berfungsi untuk menentukan referensi yang digunakan
·
Analog Output
Secara
teori suatu analog output akan mengeluarkan output tegangan bervariasi sesuai
dengan nilai yang dikehendaki,maka seharusnya pin output analog Arduino
seharusnya mampu mengeluarkan tegangan output dengan kisaran tegangan dari 0
volt sampai 5 volt.arduino menggunakan cara pulse wide modulasi(PWM) atau
modulasi lebar pulsa untuk menghasilkan analog output yang dikehendaki.Metode
ini menggunakan pendekatan perubahan lebar pulsa untuk menghasilkan nilai
tegangan analog yang diinginkan.
Perintah
yang digunakan untuk output analog adalah analogWrite(pin,value),dimana:
·
Pin:nomor pin
Arduino yang akan digunakan sebagai analog output
·
Value:nilai duty
cycle yang diinginkan dengan nilai 0-255,yang berarti nilai 0 untuk 0 volt dan
255 untuk tegangan keluaran maksimum atau 5 volt.
II.Alat Dan Bahan
Alat dan bahan percobaan diperlihatkan pada Tabel 2:
Tabel
2.
Alat dan Bahan Praktikum
No
|
Alat dan Bahan
|
Jumlah
|
1
|
Arduino Uno R3
|
1
|
2
|
Kabel USB
|
1
|
3
|
Modul/Rangkaian
Percobaan
|
1
|
4
|
Kabel jumper
|
Secukupnya
|
III.
Langkah Percobaan
III.1 Percobaan Input Potensiometer
a.Koneksi Hardware
Dengan menggunakan breadboard, koneksikan pin-pin ke Arduino dengan
konfigurasi seperti pada tabel berikut:
Koneksi Konfigurasi Potensiometer
Pin Arduino
|
Komponen
|
A0
|
Potensiometer
|
Gambar 1. Skematik Percobaan Input Potensiometer
B. Pemrograman pada
Arduino diperlihatkan sebagai berikut:
b.Input Potensiometer
int
sensorPin=A0;
int
sensorValue=0;
void
setup() {
Serial.begin(9600);
}
void
loop() {
sensorValue=analogRead(sensorPin);
int newValue=map(sensorValue,0,1023,0,100);
Serial.println(newValue);
delay(100);
}
III.2 Percobaan Input Potensiometer Out Led
a.Koneksi Hardware
Dengan menggunakan breadboard, koneksikan pin-pin ke Arduino dengan
konfigurasi seperti pada tabel berikut:
Koneksi Konfigurasi Input Potensiometer Out
Led
Pin Arduino
|
Komponen
|
A0
|
Potensiometer
|
13
|
Led
|
Gambar 2. Breadboard Percobaan Input
Potensiometer Out Led
B. Pemrograman pada
Arduino diperlihatkan sebagai berikut:
b.Input Potensiometer Out Led
int led = 13
int pinPot = A0;
int potVal = 0;
void setup() {
pinMode(led,OUTPUT);
}
void loop() {
potVal=analogRead(pinPot);
potVal=map(potVal,0,1023,0,255);//ubah
nilai (0-1023) menjadi (0-255)
analogWrite(led,potVal);
analogWrite(led,potVal);
}
IV.Hasil
dan Pembahasan
Pada percobaan kali ini menggunakan pin-pin analog dari arduino yaitu dari pin A0 sampai dengan pin A5, dimana pin- pin tersebut akan dipakai sebagai analog input. Seperti percobaan diatas Potensiometer dipakai sebagai input dan Led dipakai sebagai output. Dan jika kita ingin membuat pin analog arduino sebagai input, maka pada program di arduino.ide kita dapat menulis “ pinMode (Potensiometer,INPUT); “ , dan untuk membaca hasil inputan dari potensiometer dapat digunakan “analogRead (Potensiometer); “ dan “int Val;” dipakai untuk menyimpan nilai konversi analog ke digital. Kemudian “potVal=map(potVal,0,1023,0,255);” dipakai untuk mengubah nilai dari (0-1023) menjadi (0-255). Dan jika kita ingin mengatur nyala
STATEMENT
CONTROL
(Praktikum 3)
I. Dasar Teori
Statement Control atau Pengendalian digunakan untuk
mengambil suatu keputusan atau memilih bagian program yang akan
dikerjakansesuai dengan kondisi atau syarat yang di berikan.Statement-statement
diatas memerlukan suatu kondisi atau syarat sebagai dasar pengambilan
keputusan.Salah satu kondisi yang umum digunakan adalah berupa keadaan benar atau
salah,0 atau 1.
Ketika
menyelesaikan masalah,tidak hanya satu kasus yang dapat ditemui,namun ada
banyak,kadang kala menemui beberapa kasus.Ada beberapa format yang berbeda
untuk setiap kasus ketika diimplementasikan di algoritma pemrograman.
Ada
2 jenis statement control yaitu antara lain:
a) If
If
merupakan salah satu struktur pemilihan yang akan mengeksekusi statement jika
memenuhi kondisi dan jika tidak maka akan diabaikan.if ini bisa dibagi menjadi
beberapa struktur ,yaitu:
1. If
Struktur if yaitu hanya akan memberikan pilihan jika
kondisi bernilai benar.
2. If else
Struktur if yaitu memberikan pilihan untuk kondisi
yang bernilai salah.
Statement looping adalah suatu proses yang melakukan
statement-statement dalam sebuah program secara terus menerus sampai terdapat
kondisi untuk menghentikannya.
Ada
tiga jenis statement looping yaitu:
a) for
Struktur
for adalah pengulangan yang digunakan untuk melakukan pengulangan yang telah
diketahui banyaknya
b) while
Struktur
while adalah pengulangan yang melakukan pengecekan kondisi diawal blok struktur
c) do-while
Struktur
do-while sama halnya dengan struktur while,tetapi pada struktur do-while ini
pengecekan kondisi dilakukan diakhir.
II.Alat Dan Bahan
Alat dan bahan percobaan diperlihatkan pada Tabel 2:
Tabel
2.
Alat dan Bahan Praktikum
No
|
Alat dan Bahan
|
Jumlah
|
1
|
Arduino Uno R3
|
1
|
2
|
Kabel USB
|
1
|
3
|
Modul
|
1
|
4
|
Kabel jumper
|
Secukupnya
|
III.
Langkah Percobaan
A. Percobaan
For Control (Kombinasi berdasarkan button yang ditekan)nyala Led
III.1 Koneksi Hardware
Dengan menggunakan breadboard, koneksikan pin-pin ke Arduino dengan konfigurasi seperti pada table berikut:
A. Pemrograman pada
Arduino diperlihatkan sebagai berikut:
a. For Control (Kombinasi berdasarkan button yang ditekan)nyala
Led
int tombol1=3;
int tombol2=4;
int tombol3=5;
int tombol4=6;
int led1=7;
int led2=8;
int led3=9;
int led4=10;
void setup() {
pinMode
(tombol1,INPUT);
pinMode
(tombol2,INPUT);
pinMode
(tombol3,INPUT);
pinMode
(tombol4,INPUT);
pinMode
(led1,OUTPUT);
pinMode
(led2,OUTPUT);
pinMode
(led3,OUTPUT);
pinMode
(led4,OUTPUT);
}
void loop() {
if
(digitalRead(tombol1)==LOW)
{digitalWrite(7,HIGH);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
}
else if (digitalRead(tombol2)==LOW)
{digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
}
else if
(digitalRead(tombol3)==LOW)
{digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,LOW);
}
else if
(digitalRead(tombol4)==LOW)
{digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
}
delay (30);
}
IV. Hasil
dan Pembahasan
Pada praktikum kali ini menggunakan fungsi if-else
dimana program akan berjalan ketika kondisinya terpenuhi, dan ketika kondisi
pertama tidak terpenuhi maka program akan mencari kondisi yang lain, kemudian
jika kondisinya terpenuhi program akan terus berjalan. Dalam hal ini program
akan memeriksa kondisi dari pushbutton yang ditekan. Ketika pushbutton 1
ditekan maka hanya satu Led yang akan menyala, kemudian ketika pushbutton 2
ditekan maka dua Led yang akan menyala, terus ketika pushbutton 3 ditekan maka
tiga Led yang akan menyala, terakhir ketika pushbutton 4 ditekan maka empat Led
akan menyala.
SENSOR
INTERFACING
(Praktikum 4)
I.
Dasar Teori
Interface atau dalam
istilah Indonesianya Antar Muka dapat diartikan sebagai sebuah titik, di mana
dua komponen atau benda berbeda bertemu. Dalam hubungannya dengan perangkat
lunak, interface dapat diartikan sebagai sarana atau medium atau sistem operasi
yang digunakan untuk menghubungkan antara perangkat mikroprosesor agar dapat
berkomunikasi dengan pengguna (user). Sedangkan pada konteks perangkat keras
interface berarti komponen elektronika yang menghubungkan atau
mengkomunikasikan prosesor dengan komponen atau perangkat lain dalam suatu
sistem. Dalam praktikum kali ini saya akan mempraktekan tentang interfacing
arduino dengan sensor. Dan untuk menampilkan hasil pembacaan dari sensor yang
dipakai saya akan mengggunakan sebuah LCD.
Pertama saya akan bahas
mengenai sensor. Sensor adalah jenis transduser (mengubah suatu energi
menjadi energi yang lain) seperti mengubah variasi mekanis, magnetis, panas,
sinar dan kimia menjadi tegangan dan arus listrik. Ada banyak sensor yang
ada, namun pada praktikum kali ini saya akan menggunakan sensor Flowmeter
(sensor aliran) dan sensor suhu (DS18B20).
Flowmeter merupakan
alat yang berfungsi untuk mengukur kecepatan aliran dan volume
fluida liquid maupun gas. Kerja dari flowmeter ini yaitu fluida
berupa gas menggerakkan kincir yang dihubungkan dengan motor sehingga saat
kincir berputar maka motor juga ikut berputar dan dapat menghasilkan ggl
induksi. Pengkondisi sinyal membuat sinyal tegangan ggl induksi dari motor
dapat terbaca oleh arduino, lalu LCD dapat manampilkan hasil pengukuran dari
flow meter tersebut.
Keterangan:
Pada gambar sensor
flowmeter diatas untuk babel berwarna merah untuk VCC, kemudian kabel yang
berwarna hitam untuk grunding (GND), dan kabel berwarna kuning untuk data.
DS1820 adalah sensor
suhu yang dikeluarkan oleh Dallas Semiconductor. Untuk membacanya menggunakan
protokol 1 wire communication. Dimana hanya ada tiga kabel yang terdiri
dari +5V, GND dan DQ (Data Input/Output). Keunggulan dari DS1820 adalah, output
berupa data digital dengan nilai ketelitian 0,5 derajat Celcius sehingga
mempermudah pembacaan oleh mikrokontroller.
Gambar 2. Sensor DS18B20
Dan komponen yang
dipakai untuk menampilkan hasil pembacaan sensor yaitu LCD. LCD
atau Liquid Crystal Display adalah suatu jenis media tampilan yang
menggunakan kristal cair sebagai penampil utama. Dan pada percobaan kali ini
saya menggunakan LCD 16x2 yang artinya LCD tersebut terdiri dari 16 kolom dan 2
baris karakter (tulisan).
II.
Alat dan Bahan
Alat
dan bahan percobaan diperlihatkan pada Tabel 2:
Tabel 2. Alat dan Bahan Praktikum
No
|
Alat dan Bahan
|
Jumlah
|
1
|
Arduino Uno R3
|
1
|
2
|
Modul /Rangkaian percobaan
|
1
|
3
|
Kabel USB
|
1
|
4
|
Sensor Suhu (
|
1
|
5
|
Sensor Aliran (Flow Meter)
|
1
|
6
|
Kabel jumper
|
Secukupnya
|
III.
Langkah Percobaan
III.1
Percobaan Interfacing Arduino Dan Sensor
a. Koneksi
Hardware
Dengan menggunakan breadboard, koneksikan pin-pin ke Arduino dengan konfigurasi seperti pada table berikut:
Dengan menggunakan breadboard, koneksikan pin-pin ke Arduino dengan konfigurasi seperti pada table berikut:
Gambar 1. Skematik Percobaan Interfacing Sensor Dan
Arduino
A. Pemrograman pada
Arduino diperlihatkan sebagai berikut:
a. Percobaan Interfacing
Sensor Dan Arduino
//
include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 6);
volatile int flow_frequency; // Measures
flow sensor pulses
unsigned int l_hour; // Calculated
litres/hour
unsigned char flowsensor = 2; // Sensor
Input
unsigned long currentTime;
unsigned long cloopTime;
void flow () // Interrupt function
{
flow_frequency++;
}
void setup()
{
pinMode(flowsensor,
INPUT);
digitalWrite(flowsensor,
HIGH); // Optional Internal Pull-Up
Serial.begin(9600);
attachInterrupt(0, flow,
RISING); // Setup Interrupt
sei(); // Enable
interrupts
currentTime = millis();
cloopTime = currentTime;
// set up the LCD's number of
columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("SUHU: BELUM ADA");
}
void loop ()
{
currentTime = millis();
// Every second,
calculate and print litres/hour
if(currentTime >=
(cloopTime + 1000))
{
cloopTime
= currentTime; // Updates cloopTime
// Pulse
frequency (Hz) = 7.5Q, Q is flow rate in L/min.
l_hour
= (flow_frequency * 60 / 7.5); // (Pulse frequency x 60 min) / 7.5Q = flowrate
in L/hour
flow_frequency
=0; // Reset Counter
lcd.setCursor(0,
1);
lcd.print(" ");
lcd.setCursor(0,
1);
lcd.print("Flow:
");
lcd.print(l_hour);
// Print litres/hour
lcd.setCursor(12,
1);
lcd.print("L/H");
//lcd.clear();
}
}
IV. Hasil
dan Pembahasan
Pada praktikum kali ini saya belajar tentang
interfacing sensor dengan arduino, dimana pada praktikum ini sensor akan
terhubung dengan arduino sehingga sensor dapat mengirim data hasil pengukuran
suhu dan aliran kemudian data tersebut diterima oleh arduino untuk seterusnya
ditampilkan pada LCD. Pada program untuk menampilkan hasil pembacaan sensor
pada LCD dapat dituliskan ‘’ lcd.print ( “ Flow: ” ) ; ‘’ .
Kemudian program untuk mengatur letak penampilan tulisan ( hasil pembacaan
sensor ) yaitu ‘’ lcd.setCursor (0,1); ‘’ . maksud
dari lcd.setCursor (0,1); ini adalah kita akan menulis di LCD pada number colom
ke 0, number baris ke 1.
daftar pustaka:
www.kusumawardana.web.id
Tidak ada komentar:
Posting Komentar