Cara Membaca Input Pin Analog Pada Arduino (analogRead)

Cara Membaca Pin Analog Arduino (analogRead) - Arduino pada umunya terdiri dari pin analog dan pin digital. Pin analog adalah deretan pin yang terhubung langsung ke ADC (analog to digital converter), sehingga pin analog dapat menerima tegangan antara 0V - 5V. Contoh pin analog adalah seperti yang terdapat pada Arduino Uno yakni A0-A5.

Cara Membaca Input Pin Analog Pada Arduino (analogRead)

Arduino memiliki fungsi tersendiri untuk membaca masukan pin analog, yaitu analogRead(nama_pin);. Pin analog sangat dibutuhkan pada proyek-proyek yang melibatkan sensor dengan keluaran tegangan maupun resistansi seperti potensio dan sensor suhu LM35.

Pada artikel ini kita akan mempelajari bagaimana cara membaca input pada pin analog menggunakan Arduino Uno dan sensor potensio serta menampilkan hasil pembacaan ke serial monitor dan Serial Plotter.

Rangkaian

Berikut adalah contoh rangkaian membaca masukan analog pada pin A0:

Rangkaian potensio dan Arduino Uno
Rangkaian potensio dan Arduino

Kode Program

Kode program di bawah ini dapat langsung dibuka pada software Arduino IDE tepatnya di File>Example>Basics>analogReadSerial

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

void loop()
{
 int sensorValue = analogRead(A0);
 Serial.println(sensorValue);
 delay(1);
}

Langkah-langkah

  1. Hal pertama yang harus dilakukan adalah membuat rangkaian potensio dan Arduino Uno seperti pada gambar di atas. 
  2. Hubungkan Arduino Uno ke komputer atau laptop.
  3. Buka Arduino IDE, copy program di atas atau dapat melalui File>Example>Basics>analogReadSerial.
  4. Pilih tipe board dan port yang digunakan, di sini saya menggunakan Arduino Uno.
    Memilih tipe board pada arduino
  5. Kemudian upload program.
  6. Jika sudah selesai, buka serial monitor dengan mengklik ikon scope yang berada di pojok kanan atas.
  7. Pilih baudrate 9600 dan angka yang keluar pada serial monitor tersbut adalah hasil pembacaan dari pin A0. 
    Memilih baud rate pada serial monitor
  8. Kita juga bisa mengamati hasil pembacaan menggunakan serial plotter, berikut cara mengaksesnya.
    Cara mengakses serial plotter
  9. Serial plotter sederhananya berfungsi mengubah nilai pembacaan menjadi sebuah grafik, berikut tampilannya. 
    Tampilan serial plotter pada arduino IDE
  10. Selesai.

Penjelasan Kode Program

Serial.begin(9600);

Kode program di atas berfungsi untuk memulai komunikasi serial menggunakan baudrate 9600. Kode program tersebut dibutuhkan agar Arduino dapat berkomunikasi dengan perangkat luar dalam hal ini adalah komputer/laptop.

int sensorValue = analogRead(A0);

Kode program di atas berfungsi untuk mendefinisikan/mendeklarasikan/memperkenalkan sebuah varibel baru bertipe int yang bernama sensorValue (nama varibel dapat ditukar sesuka hati). Variabel ini akan menampung hasil pembacaan pin A0 melalui pemanggilan fungsi analogRead(A0);.

Serial.println(sensorValue);

Kode program di atas berfungsi untuk mengirim hasil pembacaan pin A0 ke serial monitor untuk ditampilkan.

delay(1);

Kode program di atas berfungsi untuk memberikan jeda waktu selama 1 mili detik. Hal ini bertujuan untuk menjaga kestabilan saat program dijalankan.

Pertanyaan Terkait

Mengapa hasil pembacaan berkisar antara 0-1023 dan bukan 0V-5V?

Itu dikarenakan masukan sinyal analog telah melalui proses konversi dari sinyal analog (tegangan) menjadi sinyal digital (bilangan biner) melalui ADC agar dapat diproses oleh mikrokontroler. Jadi sebenarnya 0V = 0 dan 5V = 1023.

Rentang nilai ini bergantung dari resolusi ADC yang digunakan. Arduino Uno memiliki resolusi ADC sebesar 10 bit sehingga nilai maksimumnya adalah 1023, sedangkan Arduino Due memiliki resolusi ADC hingga 12 bit dengan nilai maksimumnya sebesar 4095.

Apakah bisa membaca input analog pada pin digital?

Tidak bisa.

Apakah pin analog hanya bisa membaca input analog?

Tidak, pin analog juga bisa membaca input digital menggunakan fungsi digitalRead(nama_pin);.

Apakah pin analog hanya berfungsi untuk input?

Tidak, pin analog juga bisa difungsikan sebagai output menggunakan fungsi digitalWrite(nama_pin, HIGH);.