Analog - IO v4
Analog - IO v4
1. Tujuan
- Mengidentifikasi pin analog
- Mengakses pin analog mikrokontroler
- Membuat program aplikasi analog input output
2. Dasar Teori
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
menghubungkan sensor yang tegangan keluarannya bervariasi dalam 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. Arduino uno memiliki pin I/O untuk mengakses
atau menerima data yang berupa sinyal analog maupun sinyal digital.
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.
3. Langkah kerja
3.1 Membuat program aplikasi input output analog secara langsung pada Arduino. Untuk
yang pertama menggunakan potensiometer yang dihubungkan pada analog pin 0 seperti
pada gambar berikut ini:
Pada latihan ini akan menampilkan nilai input analog yang dihasilkan pada serial monitor
dengan merubah posisi potensiometer. Sketchnya sebagai berikut:
int analogPin = 0;
int val = 0;
void setup()
{ Serial.begin(9600
);
}
void loop() {
val = analogRead(analogPin);
//tampilkan pada serial monitor dalam desimal
Serial.println(val,DEC);
//tampilkan pada serial monitor dalam biner
Serial.println(val,BIN);
delay(1000); //refresh tampilan setiap 1 detik
}
Pada posisi potensio minimum akan menghasilkan nilai 0 dan posisi potensio maksimum
menghasilkan nilai 1023 atau 1111111111(biner).
3.2. Berikutnya membuat ptogram analog output dengan mengeluarkan sinyal analog ke pin 9
yang dihubungkan dengan 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);
//tampilkan kecerahan di serial monitor
Serial.println(kecerahan);
//perbaharui nilai kecerahan
kecerahan = kecerahan + levelperubah;
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 redup
kembali sampai led padam (tampilan pada serial monitor 0) dan akan terus berulang
kembali begitu seterusnya.
3.3. Kombinasikan analog input dari potensiometer untuk mengatur analog output kecerahan
dari LED, seperti gambar berikut:
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);
D R
UI
D D2D31
N A
PB5/R 1 1 LED-
3
1U O1
R
SCK 3 LE YELLOWL
E E 3
ED-
21 S
PB4/
PD7 F 1
7 D- APK- 0
GREEN
V 2
7 A PC0/ MISO 2 RE TECH R
.O3 E /AIN 6
0 ADC ~PB3/ 1 DR |
0 T 1 5
1 techn
ULM 0 MOSI C
~PD 4
1 o-
T35 A ARDU
PC1/ /OC2 X
T apk.bl
6/AI 3
0
1 INO
ADC A S ogsp
N0 2
9
UNO
1 ~ D ot.co
~ 1
8 m
A R3
PC2/ PB2/
PD5 0 AN
2 ADC SS/O T
/T1
C1B ALO
2 PD4
A PC3/ ~ X G IN
/T0/
3 ADC PB1/
XCK
3 OC1A D DIGITAL
PB0/I ~
A PC4/ R (~
PD3
CP1/
4 ADC T
/INT
CLKO S P
4/SD 1
AA W
PD2
5 PC5/ M)
/INT
ADC 0
5/SC TX
L PD1
/TX
D
RX
PD0
/RX
D
4. Data Percobaan
Percobaan 3.1
int analogPin = 0;
int val = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
val = analogRead(analogPin);
//tampilkan pada serial monitor
dalam desimal
Serial.println(val,DEC);
//tampilkan pada serial monitor
dalam biner
Serial.println(val,BIN);
delay(1000); //refresh tampilan
setiap 1 detik
}
Percobaan 3.2 serial monitor 190
int kecerahan = 0;
int levelperubah = 5;//step perubahan
kecerahan
void setup() {
Serial.begin(9600);
}
void loop() {
analogWrite(9, kecerahan);
//tampilkan kecerahan di serial
monitor
Serial.println(kecerahan);
//perbaharui nilai kecerahan
kecerahan = kecerahan +
levelperubah;
if (kecerahan == 0 || kecerahan ==
255) {
//jika mencapai nilai batas
levelperubah = -levelperubah ;
//berubah kenilai sebaliknya
}
delay(500);
}
Percobaan 3.3 Potensio min
void setup() {
// inisialisasi komunikasi serial pada 9600 bps:
Serial.begin(9600);
}
Percobaan 4
else if (nilaiLM35 >= 30 && nilaiLM35 <=35 ) // jika nilaiLM35 diatas 30 dan di
bawah 35
{
digitalWrite(LED1, HIGH); // LED1 menyala
digitalWrite(LED2, LOW); // LED2 mati
digitalWrite(LED3, LOW); // LED3 mati
}
else if (nilaiLM35 >= 35) // jika nilaiLM35 diatas 35
{
digitalWrite(LED1, HIGH); // LED1 menyala
digitalWrite(LED2, LOW); // LED2 mati
digitalWrite(LED3, LOW); // LED3 mati
delay (500) ;
}
else // jika tidak
{
digitalWrite(LED1, LOW); // LED1 mati
digitalWrite(LED2, LOW); // LED2 mati
digitalWrite(LED3, LOW); // LED3 mati
}
}
Percobaan 1
Gambar 1.1
Gambar 2.1
Percobaan 2
Gambar 2.1
Percobaan 3
Gambar 3.1
Gambar 3.2
Gambar 3.3
Percobaan 4
Gambar 4.1
Gambar 4.2
Gambar 4.3
Gambar 4.4
Sketch Program Arduino
Percobaan 1
Percobaan 2
Percobaan 3
Percobaan 4