Pin-Pin Digital

Pin pada Arduino dapat dikonfigurasi sebagai input atau output. Artikel ini menjelaskan fungsi pin dalam mode input atau output namun secara khusus artikel ini mengacu pada pin digital. Namun penting juga untuk dicatat bahwa sebagian besar pin analog Arduino (Atmega), dapat dikonfigurasi, dan digunakan, dengan cara yang persis sama dengan pin digital.

Sebagai contoh Pin digital pada arduino uno terdapat 14 yaitu pin ( 0- 13 ), sedangkan untuk pin analog ada 6 yaitu pin ( A0-A5 ). Untuk menggunakan pin - pin tersebut tentu harus dikonfigurasikan terlebih dahulu, namun sebelum membahasnya kita perlu tau beberapa hal tentang pin - pin digital arduino.

Pin-pin arduino

Properti Pin yang Dikonfigurasi sebagai INPUT

Pin Arduino (Atmega) default itu terkonfigurasi sebagai input, jadi pin tersebut tidak perlu dideklarasikan secara eksplisit sebagai input dengan pinMode() saat Anda menggunakannya sebagai input. Pin yang dikonfigurasi dengan cara ini dikatakan dalam keadaan impedansi tinggi. Pin input membuat tuntutan yang sangat kecil pada rangkaian yang diambil sampelnya, setara dengan resistor seri 100 megaohm di depan pin. Ini berarti bahwa dibutuhkan arus yang sangat sedikit untuk memindahkan pin input dari satu keadaan ke keadaan lain, dan dapat membuat pin berguna untuk tugas-tugas seperti menerapkan sensor sentuh kapasitif, membaca  fotodioda, atau membaca sensor analog dengan skema. seperti RCTime.

Namun ini juga berarti, bahwa pin yang dikonfigurasi sebagai pinMode(pin, INPUT) tanpa ada yang terhubung dengannya, atau dengan kabel yang terhubung ke pin yang tidak terhubung ke sirkuit lain, akan memberikan pembacaan perubahan yang tampak acak dalam status pin, dapat terganggu dengan listrik dari lingkungan, atau secara kapasitif dapat terpengaruh dengan pin sebelahnya.

Resistor Pullup dengan pin yang dikonfigurasi sebagai INPUT

Seringkali berguna untuk mengarahkan pin input ke status yang diketahui jika tidak ada input. Hal ini dapat dilakukan dengan menambahkan resistor pullup (ke +5V), atau resistor pull-down (resistor ke ground) pada input. Resistor 10K adalah nilai yang baik untuk resistor pullup atau pulldown.

Properti Pin Dikonfigurasi sebagai INPUT_PULLUP

Ada resistor pullup 20K yang dibangun ke dalam chip Atmega yang dapat diakses dari perangkat lunak. Resistor pullup bawaan ini diakses dengan mengatur pinMode() sebagai INPUT_PULLUP. Ini secara efektif membalikkan perilaku mode INPUT, di mana HIGH berarti sensor mati, dan LOW berarti sensor hidup.

Nilai pullup ini tergantung dari mikrokontroler yang digunakan. Pada sebagian besar papan berbasis AVR, nilainya dijamin antara 20kΩ dan 50kΩ. Di Arduino Due, itu antara 50kΩ dan 150kΩ. Untuk nilai pastinya, lihat lembar data mikrokontroler di papan Anda.

Saat menghubungkan sensor ke pin yang dikonfigurasi dengan INPUT_PULLUP, ujung lainnya harus terhubung ke ground. Dalam kasus sakelar sederhana, ini menyebabkan pin membaca HIGH ketika sakelar terbuka, dan LOW ketika sakelar ditekan.

Resistor pullup menyediakan arus yang cukup untuk menyalakan lampu LED yang terhubung ke pin yang telah dikonfigurasi sebagai input. Jika LED dalam suatu proyek tampaknya berfungsi, tetapi sangat redup, kemungkinan inilah yang sedang terjadi.

Resistor pullup dikendalikan oleh register yang sama (lokasi memori chip internal) yang mengontrol apakah pin TINGGI atau RENDAH. Akibatnya, pin yang dikonfigurasi untuk mengaktifkan resistor pullup ketika pin adalah INPUT, akan memiliki pin yang dikonfigurasi sebagai HIGH jika pin kemudian dialihkan ke OUTPUT dengan pinMode(). Ini bekerja ke arah lain juga, dan pin output yang dibiarkan dalam keadaan TINGGI akan memiliki resistor pullup yang disetel jika dialihkan ke input dengan pinMode().

Sebelum Arduino 1.0.1, dimungkinkan untuk mengonfigurasi pull-up internal dengan cara berikut:
pinMode(pin, INPUT);           // set pin to input
digitalWrite(pin, HIGH);       // turn on pullup resistors
CATATAN:
Pin digital 13 lebih sulit digunakan sebagai input digital daripada pin digital lainnya karena memiliki LED dan resistor yang terpasang padanya yang disolder ke papan di sebagian besar papan. Jika Anda mengaktifkan resistor pull-up 20k internalnya, resistor akan menggantung di sekitar 1.7V, bukan 5V yang diharapkan karena LED onboard dan resistor seri menarik level tegangan ke bawah, yang berarti selalu mengembalikan RENDAH. Jika Anda harus menggunakan pin 13 sebagai input digital, setel pinMode() ke INPUT dan gunakan resistor pull down eksternal.

Properti Pin Dikonfigurasi sebagai OUTPUT

Pin yang dikonfigurasi sebagai OUTPUT dengan pinMode() dikatakan dalam keadaan impedansi rendah. Ini berarti bahwa mereka dapat memberikan sejumlah besar arus ke sirkuit lain. Pin Atmega dapat menjadi sumber (memberikan arus positif) atau tenggelam (memberikan arus negatif) hingga 40 mA (miliamp) arus ke perangkat/sirkuit lain. Arus ini cukup untuk menyalakan LED (jangan lupa resistor seri), atau menjalankan banyak sensor, misalnya, tetapi arus tidak cukup untuk menjalankan sebagian besar relai, solenoida, atau motor.

Hubungan pendek pada pin Arduino, atau mencoba menjalankan perangkat arus tinggi darinya, dapat merusak atau menghancurkan transistor keluaran di pin, atau merusak seluruh chip Atmega. Seringkali ini akan mengakibatkan pin "mati" di mikrokontroler tetapi chip yang tersisa masih berfungsi dengan baik. Untuk alasan ini adalah ide yang baik untuk menghubungkan pin OUTPUT ke perangkat lain dengan resistor 470Ω atau 1k, kecuali penarikan arus maksimum dari pin diperlukan untuk aplikasi tertentu.
( Sumber : Digital Pins )
Ada tiga fungsi digital I/O yang berhubungan dengan Pin Digital Arduino
  1. digitalMode()
  2. digitalWrite()
  3. pinMode()
Saya akan sedikit membahasnya dengan referensi dari berbagai sumber salah satunya blog arduino reference.