(Analog to Digital
Converter)
Arduino Uno
Pengenalan ADC
• Arduino adalah mesin digital tetapi memiliki kemampuan beroperasi
dalam analog
• Terdapat 6 pin analog pada board Arduino Uno yaitu A0 sampai A6
• Besarnya resolusi ADC menentukan ketepatan nilai signal analog yang
dipetakan secara digital
• Beberapa jenis mikrokontroller memiliki resolusi yang berbeda-beda
seperti 8 bit (mampu memetakan hingga 256 discrete analog level), 10
bit (mampu memetakan hingga 1024 discrete analog level), maupun 16
bit (mampu memetakan hingga 65536 discrete analog level)
• Pada Arduino uno, resolusi ADC pada boardnya adalah 10 bit
analogWrite (pin, value)
• Karena Arduino mendukung PWM pada tiap pin (3, 5, 6, 9, 10, 11),
sehingga dapat merubah kondisi pin On atau Off secara cepat
• Nilai pada format kode tersebut adalah angka antara 0 dan 255
analogRead (pin)
• Ketika pin analog sebagai Input, maka dapat terbaca tegangannya
berupa angka antara 0 (untuk 0 volt) dan 1023 (untuk 5 volt)
Hubungan Nilai ADC dengan Tegangan
• Nilai ADC menunjukkan ratio perbandingan dengan tegangan yang terbaca
• Nilai ADC tergantung dengan tegangan yang menjadi catu daya sistem
mikrokontroler.
• Pada Arduino biasa menggunakan sumber tegangan 5 volt dengan tegangan
terbaca sebesar 2,12 volt.
• Nilai ADC terukur
= (nilai ADC maximum X tegangan terbaca)/tegangan sumber
= (1023 X 2,12)/5
= 434
Hubungan Nilai ADC dengan Tegangan
• Nilai ADC terukur
= (nilai ADC maximum X tegangan terbaca)/tegangan sumber
= (1023 X 2,12)/5
= 434
• Diperoleh nilai ADC sebesar 434 dari tegangan terukur 2,12 volt dengan
setiap unit ADC memiliki perbandingan tegangan sebesar 4,9mV
• Proses konversi dari nilai analog menjadi digital tersebut merupakan
proses ADC (Analog to Digital Conversion)
Proses ADC
• Jika tegangan 5 volt dikonversi menjadi data digital 10 bit yaitu
Hal ini berarti jika setiap 1 angka desimal mewakili tegangan sebesar
4,9 mV
void setup(){
//Komunikasi serial dengan baud 9600
Serial.begin(9600);
}
void loop(){
//Baca pin input
suhuC = analogRead(pinSensor);
suhuC = (suhuC/1024)*5000; //konversi
data analog menjadi milivolt
suhuC = suhuC/10; //konversi ke dalam
derajat Celcius dg persamaan 1
derajat/10millivolt
• void loop() {
• // put your main code here, to run
repeatedly:
• Serial.println(analogRead(ldr));
• delay(1000);
• }
LCD
• LCD (Liquid Crystal Display) 16x2 adalah jenis media tampilan atau
Display dari bahan cairan kristal sebagai penampil utama
• LCD 16x2 dapat menampilkan sebanyak 32 karakter yang terdiri dari 2
baris dengan tiap baris menampilkan 16 karakter
• Pada Arduino untuk mengendalikan LCD menggunakan library pada
Arduino dengan nama LiquidCrystal.h.
• LCD ada bermacam-macam ukuran 8x1, 16x1, 16x2, 16x4, 20x4 hanya
berbeda pada inisialisasi jumlah kolom dan baris
Alokasi pin
Contoh Program
#include <LiquidCrystal.h> lcd.clear();
}
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void loop() {
void setup() { lcd.setCursor(0,0);
lcd.begin(16, 2); lcd.print(" prak mikro ");
lcd.setCursor(0,0); lcd.setCursor(0, 1);
lcd.print("hello, kawan!"); lcd.print(millis() / 1000);
delay(500); }
LDR dan I2C
• LCD 16×2 pada umumnya menggunakan 16 pin sebagai kontrolnya,
tentunya akan sangat boros apabila menggunakan 16 pin tersebut.
• Karena itu, digunakan driver khusus sehingga LCD dapat dikontrol
dengan jalur I2C.
• Dengan I2C maka LCD dapat dikontrol dengan menggunakan 2 pin
saja yaitu SDA dan SCL.
Penambahan LCD pada LM35
#include <Wire.h> int analog_value = analogRead(A1);
#include <LiquidCrystal_I2C.h> float suhud = (analog_value / 1024.0)* 5000;
//konversi data analog menjadi milivolt
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD suhuC = suhud/10; //konversi kedalam celsius dengan
address to 0x27 for a 16 chars and 2 line display persamaan 1derajat/10mv
//declare variables delay(10);
float suhuC; Serial.println((byte)suhuC); //mengirimkan data ke
serial komputer
int analog_value[2], i;
lcd.clear();
lcd.setCursor(0,0);
void setup() {
lcd.print("Suhu : ");
lcd.begin();}
lcd.print(suhuC,0);
void loop()
delay(1000); //waktu tunggu 1 detik
{
}