Digital Input Output pada Arduino

Toni Haryanto 7 Januari 2016

Digital Input Output pada Arduino

Pada tutorial kali ini kita akan belajar tentang konsep digital input output pada Arduino dan bagaimana menggunakan pin digital untuk input dan output nilai digital.

Semua pin pada Arduino, baik pin digital maupun pin analog, dapat digunakan sebagai pin digital. Digital berarti sinyal yang dikirimkan/diterima bernilai 1 atau 0, on atau off, HIGH atau LOW, ada atau tidak ada sinyal.  Berbeda dengan sinyal analog yang nilainya bersifat kontinyu, yakni nilai antara 0 dan 1 dipertimbangkan. Pin digital berarti pin dapat menerima/mengirim sinyal digital.

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. Mode output berarti mengeset pin agar dapat mengirimkan sinyal.

Untuk mengeset mode pin, kita gunakan fungsi pinMode(). Fungsi ini biasanya dipanggil 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, lihat pada kode berikut.

void setup()
{
  pinMode(1, INPUT);     // set pin 1 sebagai pin input
  pinMode(2, OUTPUT);    // set pin 2 sebagai pin output
}

Digital Input

Pada dasarnya semua pin yang ada pada Arduino (ATMega) berada pada mode input secara default. Jadi ketika kita ingin menggunakan suatu pin sebagai input, maka kita tidak mesti menuliskan pinMode(nomorPin, INPUT);.

Untuk menerima input digital yang masuk ke pin, kita gunakan fungsi digitalRead(nomorPin). Fungsi ini menerima satu parameter, yaitu nomor pin mana yang akan dibaca nilai inputnya. Fungsi ini akan mengembalikan nilai 1 dan 0, atau HIGH dan LOW (HIGH adalah konstanta dengan nilai 1 dan LOW adalah konstanta dengan nilai 0). Supaya lebih paham, silakan coba contoh berikut. Skenarionya adalah kita akan menghubungkan pushbutton ke pin 2 dan menyalakan LED yang ada pada board Arduino Uno ketika pushbutton tersebut ditekan.

Bahan-bahan yang diperlukan untuk percobaan ini diantaranya:

  • Arduino Uno board
  • Kabel jumper
  • 1 buah resistor 10K ohm
  • Breadboard
  • Pushbutton/switch
Buat rangkaian seperti berikut: arduino-digital-read-button

Pada gambar di atas, kita menghubungkan salahsatu satu kaki pushbutton ke pin 2 (kabel biru) dan GND (kabel hitam), dan menghubungkan kaki pin yang lain ke 5V (kabel merah) pada Arduino. Kaki pin yang terhubung ke GND harus melalui pull-down resistor. Pada saat button terbuka (tidak ditekan), maka kedua kaki button tidak terhubung sehingga pin 2 akan terhubung dengan GND dan nilai yang dibaca pin 2 adalah LOW. Ketika button ditekan, maka kedua kaki pin akan terhubung, menghubungkan pin 2 dengan 5V sehingga nilai yang diterima pin adalah HIGH.

Sekarang kita tuliskan program untuk membaca nilai pin 2 dan menyalakan LED pada Arduino ketika pin 2 bernilai HIGH. LED pada Arduino Uno terhubung dengan pin 13, maka untuk menyalakan LED tersebut, kita akan memberikan sinyal digital HIGH pada pin 13. Kalo Kamu menggunakan board yang lain, cari tau pin mana yang digunakan untuk LED pada board tersebut.

// kita buat variabel untuk nomor pin supaya lebih mudah merujuknya
const int pinButton = 2;
const int pinLed = 13;

// variabel untuk menyimpan nilai input pin button
int nilaiButton = 0;

void setup() {
  // set mode input pada pin untuk button, ga wajib
  pinMode(pinButton, INPUT);

  // set pin untuk LED ke mode output
  pinMode(pinLed, OUTPUT);
}

void loop() {
  // baca nilai pin untuk button
  nilaiButton = digitalRead(pinButton);

  // cek apakah button ditekan
  if (nilaiButton == HIGH) {
    // nyalakan LED
    digitalWrite(pinLed, HIGH);

  } else { // kalo nilai pin LOW
    // matikan LED
    digitalWrite(pinLed, LOW);
  }
}

Hubungkan Arduino ke komputermu dan upload program di atas. Apabila rangkaian yang Kamu buat sudah sesuai dengan gambar di atas dan kode program terupload dengan sukses, maka mestinya LED pada board Arduinomu akan menyala ketika pushbutton ditekan, dan LED akan mati begitu pushbutton dilepas.

Digital Output

Sebenarnya pada bagian pembahasan Digital Input di atas, kita sudah mempraktekkan digital output. Untuk mengirimkan sinyal digital, kita gunakan fungsi digitalWrite(nomorPin, nilaiDigital). Fungsi ini dapat digunakan pada pin yang sebelumnya sudah diset ke mode OUTPUT. Parameter kedua adalah set nilai HIGH atau LOW. Apabila pin diset dengan nilai HIGH, maka voltase pin tersebut akan diset ke 5V (atau 3.3V pada board bertipe 3.3V) dan bila pin diset ke LOW, maka voltase pin tersebut akan diset ke 0V.

Untuk membantu pemahaman, mari kita coba pada skenario lain. Bahan yang digunakan sama seperti pada bagian Digital Input di atas, dengan tambahan 1 buah LED dan 1 buah resistor 220 ohm. Buat rangkaian seperti pada gambar berikut:

arduino-digital-write-leds

Rangkaiannya sama seperti percobaan pertama, dan kita hanya menambah LED saja. LED atau Light Emitting Diode memiliki dua buah kaki yakni anoda (+) dan katoda (-). Biasanya kaki anoda atau positif dibuat lebih panjang daripada kaki negatif agar mudah dikenali. Kaki positif dihubungkan dengan pin 3 melalui resistor 220 ohm. Kaki negatif dihubungkan dengan GND. Kesalahan pemasangan posisi kaki membuat LED tidak menyala dan pemasangan LED tanpa menggunakan resistor kemungkinan besar akan membuat LED kelebihan arus yang menyebabkan LED terbakar dan rusak.

Sekarang kita akan menulis program supaya LED mengedipkan cahaya ketika pushbutton ditekan dan mati ketika pushbutton dilepas.

const int pinButton = 2;
const int pinLed = 3;

// variabel untuk menyimpan nilai input pin button
int nilaiButton = 0;

void setup() {
  // set mode input pada pin untuk button, ga wajib
  pinMode(pinButton, INPUT);

  // set pin untuk LED ke mode output
  pinMode(pinLed, OUTPUT);
}

void loop() {
  // baca nilai pin untuk button
  nilaiButton = digitalRead(pinButton);

  // cek apakah button ditekan
  if (nilaiButton == HIGH) {
    // buat LED berkedip
    digitalWrite(pinLed, HIGH);
    delay(100);
    digitalWrite(pinLed, LOW);
    delay(100);

  } else { // kalo nilai pin LOW
    // matikan LED
    digitalWrite(pinLed, LOW);
  }
}

Variabel pinLed kita set ke 3 karena LED kita terhubung dengan pin 3. Kemudian pada baris 22-25, pada saat button ditekan, kita nyalakan LED dan kita beri jeda selama 0,1 detik (100 milidetik), baru kemudian kita matikan LED dan beri jeda lagi 0,1 detik sebelum mikrokontroller kembali mengulang pengecekan. Hal ini akan membuat LED terus berkedip selama pushbutton terus ditekan.

Upload program dan bila kode dan rangkaianmu benar, mestinya rangkaianmu akan berjalan sesuai rencana.

Demikian tutorial digital input output menggunakan Arduino. Kamu dapat mencoba-coba variasi skenario lain seperti menambah jumlah LED dan memvariasikan nyala LED. Jangan sungkan untuk bertanya di komentar apabila ada kendala.

Salam coder! :D