Anda di halaman 1dari 8

MODUL MATA PELAJARAN

TEKNIK PEMOGRAMAN MIKROPROSESSOR DAN MIKROCONTROLER

No Kompetensi Dasar Indikator


3.5 Merencanakan aplikasi 3.3.1. Siswa dapat memahami perintah untuk mengolah data
sederhana system analog
minimum mikroprosesor 3.3.2. Siswa dapat menggunakan perintah untuk mengolah data
analog

A. Analog Input dan Output pada Arduino

Pada saat kita menggunakan tombol sebagai sinyal input/masukan pada pin input
Arduino maka sebenarnya kita hanya memberikan dua kemungkinan kondisi sinyal
masukan yaitu tombol tertekan atau tombol tidak tertekan. Pada saat tombol tertekan kita
menghubungkan atau memberikan tegangan 5 volt pada masukan sedangkan sebaliknya
pada saat tombol dilepas hanya memberikan tegangan 0 volt.
Kondisi input yang demikian dikenal sebagai digital input dengan logika 1 dan 0,
dimana 1 untuk tegangan HIGH atau 5 volt dan 0 untuk tegangan LOW atau 0 volt.
Begitu juga halnya pada sisi output, jika hanya melibatkan dua kondisi keluaran seperti
misalnya saat menghidupkan dan memadamkan led pada suatu saat tertentu maka kita
hanya melibatkan dua kondisi output digital. Output digital 1 atau HIGH dengan output
tegangan 5 volt dan output digital 0 atau LOW dengan output tegangan 0 volt.
Pada beberapa sistim kontrol, pengolahan input dan output secara digital
mungkin sudah memenuhi kinerja yang dibutuhkan. Akan tetapi pada 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.  Sinyal semacam ini disebut sebagai sinyal analog, sebagai
contoh saat kita menghubungkan sensor yang tegangan keluarannya bervariasi dalam
kisaran dari 0 volt sampai 5 volt. Maka dalam hal ini Arduino sebagai kontroler harus
mampu mengidentifikasi/mengolah semua variasi tegangan keluaran dari sensor yang
dihubungkan pada pin inputnya tersebut. Begitu juga halnya saat diperlukan tegangan
output yang membutuhkan nilai tegangan yang bervariasi, seperti misalnya saat kita
menginginkan mengatur tingkat keterangan sebuah led atau berubahnya kecepatan
sebuah motor.
B. Analog Input
Arduino khusus 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 kenilai integer 0 sampai 1023, atau resolusinya adalah 5
volt/1024=4,9mV per unit dimana itu berarti nilai digital yang dihasilkan akan berubah
setiap perubahan 4,9mV dari tegangan input analognya. Akan tetapi range input analog
dan resolusi tersebut dapat dirubah dengan fungsi analogReference().
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. Parameternya meliputi:
a. DEFAULT: default analog reference yaitu 5V (pada board Arduino 5V) atau 3,3
volt (pada board Arduino 3,3 V)
b. INTERNAL: built-in referensi internal tergantung pada jenis mikrokontroler
yang terpasang pada board Arduino, 1.1 volt pada ATmega168 atau
ATmega328 dan 2.56 volt pada ATmega8.
c. INTERNAL1V1: a built-in referensi internal 1.1V (khusus Arduino Mega)
d. INTERNAL2V56: a built-in referensi internal 2,56V (khusus Arduino Mega)
e. EXTERNAL: pilihan referensi yang tergantung pada tegangan yang diberikan
pada pin AREF(hanya dengan range tegangan 0 sampai 5V).
Perlu untuk diperhatikan, jangan menggunakan referensi dibawah 0 volt atau
lebih dari 5 volt dan pastikan memilih referensi external sebelum perintah analogRead()
jika menghubungkan pin AREF dengan referensi eksternal karena jika tidak akan bisa
merusak mikrokontrol.
C. 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 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:
1. Pin: nomor pin Arduino yang akan digunakan sebagai analog output
2. value: nilai duty cycle yang diinginkan dengan nilai 0-255, yang berarti nilai 0
untuk 0Volt dan 255 untuk tegangan keluaran maksimum atau 5Volt.
Berikutnya mari kita mencoba aplikasi input output analog ini secara langsung
pada Arduino. Untuk yang pertama saya menggunakan potensiometer yang dihubungkan
pada analog pin 0 seperti pada gambar berikut ini:

Pada latihan ini akan menampilkan pada serial monitor nilai input analog yang
dihasilkan dengan merubah posisi potensiometer. Sketchnya sebagai berikut:

int analogPin = 0;
int val = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
val = analogRead(analogPin);
Serial.println(val,DEC); //tampilkan pada serial monitor dalam desimal
Serial.println(val,BIN); //tampilkan pada serial monitor dalam biner
delay(1000); //merefresh tampilan setiap 1 detik
}
 
Dan berhasil…posisi potensio mentok minimal akan menghasilkan nilai 0 dan
posisi potensio mentok maksimal menghasilkan nilai 1023 atau 1111111111(biner).
Lanjut berikutnya mencoba analog output dengan mengeluarkan sinyal analog ke pin 9
yang dihubungkan dengan rangkaian seri resistor dan led seperti rangkaian berikut:

sketchnya adalah:

int kecerahan = 0;
int levelperubah = 5;//step perubahan kecerahan

void setup() {
Serial.begin(9600);
}

void loop() {
analogWrite(9, kecerahan);
Serial.println(kecerahan);//tampilkan kecerahan di serial monitor
kecerahan = kecerahan + levelperubah;//perbaharui nilai kecerahan
if (kecerahan == 0 || kecerahan == 255) {//jika mencapai nilai batas
levelperubah = -levelperubah ; //berubah kenilai sebaliknya
}
delay(500);
}
 
Hasilnya kecerahan led akan berubah setiap 1/2 detik dengan step perubahan 5
digit, setelah mencapai kecerahan maksimum (tampilan pada serial monitor 255) akan
meredup kembali sampai led padam (tampilan pada serial monitor 0) dan akan terus
berulang kembali begitu seterusnya.
Terakhir mengkombinasikan analog input dari potensiometer untuk mengatur analog
output mengatur kecerahan dari led, berikut gambar:

Sketchnya sebagai berikut:

const int analogInPin = 0; // analog input pada pin analog 0


const int analogOutPin = 9; // analog output pada pin 9/terpasang led

int sensorValue = 0; // variable input analog


int outputValue = 0; // variable output analog

void setup() {
// inisialisasi komunikasi serial pada 9600 bps:
Serial.begin(9600);
}

void loop() {
// membaca nilai analog in:
sensorValue = analogRead(analogInPin);
// memetakan kedalam kisaran output analog:
outputValue = map(sensorValue, 0, 1023, 0, 255);
// merubah nilai analog output:
analogWrite(analogOutPin, outputValue);

// mencetak pada serial monitor:


Serial.print("sensor = " );
Serial.print(sensorValue);
Serial.print(" output = ");
Serial.println(outputValue);
// tunggu 20 milidetik sebelum lanjut ke pembacaan berikutnya
delay(20);
}
 
Pada sketch diatas digunakan function “map()” untuk memetakan input analog
yang resolusinya 1024 ke output analog yang resolusinya hanya 256.
EVALUASI

Kerjakan isian singkat berikut dengan baik dan benar!


1. Apa kepanjangan dari pin I/O?
2. Apa yang dimaksud dengan pin I/O?
3. Pin 0 dan 1 I/O pada arduino biasanya digunakan untuk?
4. Apa coding dasar untuk menggunakan arduino untuk LED ?
5. Dari materi diatas, bagian mana yang sulit dipahami? Jelaskan secara singkat!

Soal dan jawaban ditulis dalam buku dan di foto kemudian kirim jawaban
dalam bentuk file pdf ke WA: 085279208098

SELAMAT BELAJAR!!!

Anda mungkin juga menyukai