Mengenal Fungsi pinMode() pada Arduino

pinMode() adalah fungsi pada Arduino yang digunakan untuk mengatur perilaku pin pada Arduino Board
Thumbnail Artikel Mengenal Fungsi pinMode pada Arduino

Pendahuluan

Arduino adalah platform elektronik yang sangat populer di kalangan hobiis dan profesional. Salah satu fungsi inti dalam pemrograman Arduino adalah pinMode(), yang digunakan untuk mengatur perilaku pin pada board Arduino. Artikel ini akan membahas fungsi pinMode() secara mendalam, termasuk sintaksis, contoh penggunaan, dan praktik terbaik.

Apa itu pinMode()?

pinMode() adalah fungsi pada Arduino yang digunakan untuk menentukan apakah sebuah pin akan berfungsi sebagai input, output, atau input dengan resistor pull-up internal. Dengan menggunakan fungsi ini, kita dapat mengontrol interaksi antara Arduino dan perangkat keras yang terhubung.

Deskripsi Singkat

Fungsi ini mengonfigurasi sebuah pin agar berfungsi sebagai:

  1. INPUT: Digunakan untuk menerima sinyal.
  2. OUTPUT: Digunakan untuk mengirimkan sinyal.
  3. INPUT_PULLUP: Digunakan untuk menerima sinyal dengan resistor pull-up internal aktif.

Catatan: Mode INPUT_PULLDOWN tidak tersedia pada sebagian besar board Arduino seperti UNO, tetapi bisa diterapkan secara eksternal menggunakan resistor.

Sintaksis pin Mode()

Berikut adalah format penulisan fungsi pinMode():

pinMode(pin, mode);

Parameter:

  • pin: Nomor pin Arduino yang akan dikonfigurasi.
  • mode: Mode pin, dapat berupa INPUT, OUTPUT, atau INPUT_PULLUP.

Contoh: 

pinMode(13, OUTPUT); // Mengatur pin 13 sebagai output

Nilai Kembalian

Fungsi pinMode() tidak mengembalikan nilai (void). Ini berarti fungsi ini hanya mengatur mode pin tanpa memberikan hasil yang dapat digunakan dalam logika program.

Apa yang Terjadi pada Pin Output?

Ketika Anda mengatur pin sebagai output:

  • HIGH: Tegangan pada pin akan menjadi 5V atau 3.3V (tergantung tegangan logika mikrokontroler).
  • LOW: Tegangan menjadi 0V (ground).

Tegangan ini dapat digunakan untuk mengontrol perangkat eksternal seperti LED, relay, atau motor. Namun, perlu diingat bahwa pin Arduino hanya dapat memberikan arus maksimal sekitar 20mA.

Logika Tegangan Berbeda

Tegangan logika bergantung pada jenis mikrokontroler yang digunakan:

  • Pada Arduino UNO ATMEGA385 (5V), logika HIGH adalah 5V.
  • Pada Arduino Nano 33 BLE (3.3V), logika HIGH adalah 3.3V.

Perbedaan ini penting saat Anda menghubungkan perangkat eksternal agar kompatibel dengan tegangan logika mikrokontroler. Informasi ini dapat didapatkan melalui referensi datasheet mikrokontroler board yang digunakan.

Apa Itu Input Pull-Up?

Mode INPUT_PULLUP mengaktifkan resistor pull-up internal pada pin. Resistor ini membantu menjaga pin dalam keadaan logika HIGH ketika tidak ada input eksternal.

Mengapa Digunakan?

Tanpa resistor pull-up, pin input dapat mengambang, menghasilkan nilai yang tidak stabil. Dengan resistor pull-up, pin dijaga pada logika HIGH secara default dan hanya menjadi LOW saat dihubungkan ke ground melalui tombol atau saklar.

Kapan Menggunakannya?

  • Gunakan INPUT_PULLUP saat membaca tombol atau saklar yang menghubungkan pin ke ground.
  • Gunakan INPUT saja jika Anda sudah memiliki resistor eksternal di sirkuit.

Contoh Penggunaan pinMode()

Berikut adalah beberapa contoh implementasi pinMode() dalam sketsa Arduino:

Contoh 1: Menyalakan dan Mematikan LED

Kode ini mengatur pin 13 sebagai output untuk mengontrol LED: 

void setup() {
  pinMode(13, OUTPUT); // Mengatur pin 13 sebagai output
}

void loop() {
  digitalWrite(13, HIGH); // Menyalakan LED
  delay(1000);            // Menunggu 1 detik
  digitalWrite(13, LOW);  // Mematikan LED
  delay(1000);            // Menunggu 1 detik
}

Penjelasan:

  • pinMode(13, OUTPUT) mengatur pin 13 sebagai output.
  • digitalWrite() mengontrol status pin.
  • delay() memberikan jeda waktu.

Contoh 2: Membaca Input dengan Resistor Pull-Up Internal

Kode ini membaca status tombol push-button yang terhubung ke pin 8: 

void setup() {
  pinMode(8, INPUT_PULLUP); // Mengaktifkan resistor pull-up internal pada pin 8
}

void loop() {
  if (digitalRead(8) == LOW) {
    // Tombol ditekan
  } else {
    // Tombol dilepas
  }
}

Penjelasan:

  • INPUT_PULLUP mencegah pin mengambang (floating).
  • Push-button yang ditekan akan menghubungkan pin ke ground (LOW).

Contoh 3: Menggunakan Analog Pin sebagai Digital Pin

Arduino memungkinkan penggunaan pin analog sebagai pin digital. Berikut contoh penggunaannya:

void setup() {
  pinMode(A0, OUTPUT); // Mengatur pin analog A0 sebagai output
}

void loop() {
  digitalWrite(A0, HIGH); // Menyalakan perangkat yang terhubung
  delay(500);
  digitalWrite(A0, LOW);  // Mematikan perangkat yang terhubung
  delay(500);
}

Penjelasan:  

Pin A0 diperlakukan seperti pin digital dengan memanggil fungsi pinMode().

Tugas untuk Kamu

Coba praktikkan dengan menyusun rangkaian sederhana:

  1. Hubungkan LED ke pin 13 dengan resistor seri 220 ohm.
  2. Gunakan push-button di pin 8 untuk menyalakan/mematikan LED.

Buat program untuk memadukan fungsi INPUT_PULLUP dan OUTPUT.

Solusi

Berikut adalah kode solusi: 

void setup() {
  pinMode(13, OUTPUT);      // Mengatur pin 13 sebagai output
  pinMode(8, INPUT_PULLUP); // Mengaktifkan pull-up pada pin 8
}

void loop() {
  if (digitalRead(8) == LOW) {
    digitalWrite(13, HIGH); // Menyalakan LED
  } else {
    digitalWrite(13, LOW);  // Mematikan LED
  }
}

Penjelasan:

  • Pin 8 membaca status tombol push-button.
  • Pin 13 mengontrol LED berdasarkan input dari pin 8.

Kesimpulan

Fungsi pinMode() adalah dasar dari pengaturan pin pada Arduino. Dengan memahami mode seperti INPUT, OUTPUT, dan INPUT_PULLUP, kita dapat menciptakan berbagai aplikasi mulai dari kontrol sederhana hingga sistem yang kompleks.

FAQ (Frequently Asked Questions)

Apakah pinMode() hanya untuk pin digital?

Tidak, pinMode() juga dapat digunakan pada pin analog jika ingin menggunakannya sebagai pin digital.

Apa perbedaan INPUT dan INPUT_PULLUP?

INPUT meninggalkan pin dalam keadaan high-impedance, sementara INPUT_PULLUP mengaktifkan resistor pull-up internal.

Apakah Arduino memiliki mode INPUT_PULLDOWN?

Tidak, kebanyakan board Arduino seperti UNO tidak memiliki INPUT_PULLDOWN, tetapi dapat diimplementasikan secara eksternal dengan resistor.

Referensi

Penghobi Elektronika