Matakuliah Mikrokontroler
Praktikum 1
Digital Input/Output
I. Dasar Teori
Digital berarti sinyal yang dikirimkan/diterima bernilai 1 atau 0, on atau off, HIGH atau LOW.
Berbeda dengan sinyal analog yang nilainya bersifat kontinyu, yakni nilai antara 0 dan 1
dipertimbangkan atau terdapat rentangan nilai dari 0 sampai 1. Secara umum pin pada Arduino
dapat dikonfigurasi ke dalam dua mode, yaitu mode input dan output. Mode input berarti
mengeset pin agar dapat digunakan untuk menerima masukan sinyal dari komponen yang
terhubung ke board arduino. Mode output berarti mengeset pin agar dapat mengirimkan sinyal
dari arduino ke komponen lain atau ke rangkaian digital. Untuk mengeset mode pin, kita
gunakan fungsi pinMode(). Fungsi ini biasanya digunakan di dalam fungsi setup(). fungsi ini
memerlukan dua parameter, pinMode([nomorPin], [mode]). Parameter pertama diisi oleh nomor
pin, dan parameter kedua diisi oleh konstanta INPUT atau OUTPUT, sesuai dengan mode
yang ingin kita gunakan. Sebagai contoh, jika ingin membuat LED berkedip, LED tersebut bisa
dipasang pada salah satu pin digital dari arduino dan ground. Karena kita ingin membuat led
menyala berkedip jadi kita konfigurasi pin yang terhubung ke LED menjadi output.
Pada gambar diatas dapat dilihat untuk pin yang berwarna hijau tua (dari pin 0 sampai pin ke 13)
merupakan digital pin dari board arduino uno. Sedangkan untuk yang berwarna hijau muda
merupakan ground (GND).
Dan beberapa pin juga memiliki fungsi khusus :
Serial, terdiri dari 2 pin : pin 0 (RX) dan pin 1 (TX) yang digunakan untuk menerima
(RX) dan mengirim (TX) data serial.
External Interrups, yaitu pin 2 dan pin 3. Kedua pin tersebut dapat digunakan untuk
mengaktifkan interrups. Gunakan fungsi attachInterrupt()
PWM: Pin 3, 5, 6, 9, 10, dan 11 menyediakan output PWM 8-bit dengan menggunakan
fungsi analogWrite()
SPI : Pin 10 (SS), 11 (MOSI), 12 (MISO), dan 13 (SCK) mendukung komunikasi SPI
dengan menggunakan SPI Library
LED : Pin 13. Pada pin 13 terhubung built-in led yang dikendalikan oleh digital pin no
13.
TWI : Pin A4 (SDA) dan pin A5 (SCL) yang mendukung komunikasi TWI dengan
menggunakan Wire Library
Menghubungkan kaki resistor yang lagi satu dengan kaki anoda dari led
void loop() {
digitalWrite(Led1, HIGH); // Untuk menghidupkan LED
delay(1000); // waktu tunda
digitalWrite(Led1, LOW); // untuk mematikan LED
delay(1000); // tunda waktu
}
int pushButton = 2;
int LedPin = 13;
void setup() {
pinMode(pushButton, INPUT);
pinMode(LedPin,OUTPUT);
}
void loop() {
digitalRead(pushButton);
if (pushButton == HIGH) {
digitalWrite(LedPin,HIGH);
}
else
digitalWrite(LedPin,LOW);
}
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); “
Praktikum 2
Analog Input/Output
I. Dasar Teori
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 V sampai 5V. Akan tetapi tidak
demikian adanya, karena pin-pin Arduino yang difungsikan sebagai output sebenarnya hanya
mampu sebagai digital output yaitu hanya mampu mengeluarkan tegangan 0V atau 5V. Lalu
bagaimana Arduino menangani Analog Output tersebut. Arduino menggunakan cara Pulsa Wide
Modulasi (PWM) atau modulasi lebar pulsa untuk menghasilkan analog output yang
dikehendaki. Metode PWM ini menggunakan pendekatan perubahan lebar pulsa untuk
menghasilkan nilai tegangan analog yang diinginkan. Pin yang difungsikan sebagai PWM analog
output akan mengeluarkan sinyal pulsa digital dengan frekwensi 490 Hz dimana nilai tegangan
analog diperoleh dengan merubah Duty Cycle atau perbandingan lamanya pulsa HIGH terhadap
periode (T) dari sinyal digital tersebut. Jika pulsa HIGH muncul selama setengah dari periode
sinyal maka akan menghasilkan duty cycle 5o% yang berarti sinyal analog yang dihasilkan
sebesar setengah dari tegangan analog maksimal yaitu 1/2 dari 5 V atau sama dengan 2,5 V
begitu juga halnya jika pulsa HIGH hanya seperempat bagian dari periode sinyal maka tegangan
analog identik yang dihasilkan adalah 1/4 dari 5V = 1,25 V dan seterusnya.
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
0Volt dan 255 untuk tegangan keluaran maksimum atau 5Volt.
Pada gambar diatas dapat dilihat untuk pin yang biru (dari pin 0 sampai pin ke 5) merupakan
analog pin dari board arduino uno. Sedangkan untuk yang berwarna coklat tua merupakan VCC,
dan yang berwarna coklat muda merupakan ground (GND).
void loop() {
val = analogRead(pinPot); //baca nilai analog dari potensiometer
Serial.println(val); //kirim nilai val ke koneksi serial
delay(100);//jeda waktu
}
a. Koneksi Hardware
Dengan menggunakan kabel jumper, koneksikan Potensiometer dan Led yang ada pada
mudul(rangkaian) ke pin-pin Arduino Uno R3 dengan konfigurasi sebagai berikut:
void loop() {
potVal=analogRead(pinPot);//baca nilai analog dari potensiometer
potVal=map(potVal,0,1023,0,255);//ubah nilai (0-1023) menjadi
(0-255)
analogWrite(led,potVal);//ubah nilai vR untuk mengatur kecerahan
led
Praktikum 3
Statement Control
I. Dasar Teori
Pada dasarnya setiap bahasa pemrograman terdiri dari:
a . Ekspresi
b . Statement
c . Blok Statement
d . Blok Fungsi
Pada praktikum kali ini saya mempraktekan tentang statement control dimana statement control
ini merupakan sebuah statement yang terdiri dari kondisi-kondisi yang dimana jika kondisi
tersebut terpenuhi program akan melakukan suatu instruksi tertentu. Jadi dapat di katakan
statement control merupakan penunjuk arah bagi urutan suatu program.
Dalam bahasa C++ ada beberapa jenis statement control sebagai berikut :
1. Kontruksi if
Pada konstruksi if sebuah konstruktur program hanya memiliki sebuah kondisi, artinya dimana
suatu instruksi atau beberapa instruksi akan di jalankan apabila sebuah kondisi tersebut di
penuhi, namun apabila kondisi tersebut tidak terpenuhi maka instruksi yang ada tidak akan di
jalankan.
if (kondisi)
{
Instruksi/statement;
}
2. Konstruksi if – else
Pada konstruksi if else sedikit berbeda dengan konstruksi if karena pada konstruksi if else . jika
sebuah kondisi tidak terpenuhi maka program akan mencari kondisi lain yang ada atau
menjalankan instruksi yang berada di luar bagian dari kondisi yang tidak terpenuhi.
Berikut sintaks dari konstruksi if-else :
if (kondisi)
{
Statement/instruksi;
}
else
{
Statement/instruksi;
}
if (kondisi)
{
Statement/instruksi;
}
else if (kondisi)
{
Statement/instruksi;
}
else
{
Statement/instruksi;
}
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.
Praktikum 4
Sensor Interfacing
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.
Gambar 1. Sensor Flowmeter
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.
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).
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();
}
}
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 ( “ sensor terpasang” ) ; ‘’ . 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
http://kusumawardana.web.id/materikuliah/
https://www.codepolitan.com/tutorial/digital-input-output-pada-
arduino/
https://translate.google.co.id/translate?hl=id&sl=en&u=https://w
ww.arduino.cc/en/Reference/Board&prev=search
http://ecadio.com/mengenal-dan-belajar-arduino-uno-r3