Pin pada Arduino dapat dikonfigurasikan sebagai input atau output. Dokumen ini menjelaskan fungsi pin dalam mode tersebut. Sementara judul dokumen ini mengacu pada pin digital, penting untuk dicatat bahwa sebagian besar pin analog Arduino (Atmega), dapat dikonfigurasi, dan digunakan, dengan cara yang persis sama dengan pin digital.
Properti Pin Dikonfigurasi sebagai INPUT
Arduino (Atmega) pin default ke input, sehingga mereka tidak perlu secara eksplisit dinyatakan sebagai input dengan pinMode () ketika Anda menggunakannya sebagai input. Pin yang dikonfigurasi dengan cara ini dikatakan dalam keadaan impedansi tinggi . Pin input membuat permintaan yang sangat kecil pada rangkaian yang diambil sampelnya, setara dengan resistor seri 100 megohm di depan pin. Ini berarti bahwa dibutuhkan sedikit arus untuk memindahkan pin input dari satu keadaan ke keadaan lain, dan dapat membuat pin berguna untuk tugas-tugas seperti menerapkan sensor sentuh kapasitif , membaca LED sebagai fotodioda , atau membaca sensor analog dengan skema seperti RCTime.
Ini juga berarti, bahwa pin yang dikonfigurasikan sebagai pinMode (pin, INPUT) dengan tidak ada yang terhubung dengannya, atau dengan kabel yang terhubung ke mereka yang tidak terhubung ke sirkuit lain, akan melaporkan perubahan acak yang tampak dalam keadaan pin, mengambil suara listrik dari lingkungan, atau kopling kapasitif keadaan pin terdekat.
Pull up (menarik) Resistor dengan pin dikonfigurasi sebagai INPUT
Properti Pin Dikonfigurasi sebagai INPUT_PULLUP
Ada 20K resistor pullup yang dibangun ke dalam chip Atmega yang dapat diakses dari perangkat lunak. Resistor pull-in bawaan ini diakses dengan mengatur pinMode () sebagai INPUT_PULLUP. Ini secara efektif membalikkan perilaku mode INPUT, di mana TINGGI berarti sensor mati, dan RENDAH berarti sensor menyala.
Nilai penarikan ini tergantung pada mikrokontroler yang digunakan. Pada sebagian besar papan berbasis AVR, nilainya dijamin antara 20kΩ dan 50kΩ. Di Arduino Due, jaraknya antara 50kΩ dan 150kΩ. Untuk nilai yang tepat, 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 TINGGI saat sakelar terbuka, dan RENDAH saat sakelar ditekan.
Resistor pullup menyediakan arus yang cukup untuk meredupkan LED yang terhubung ke pin yang telah dikonfigurasikan sebagai input. Jika LED dalam suatu proyek tampaknya berfungsi, tetapi sangat redup, ini mungkin apa yang sedang terjadi.
Resistor penarik dikendalikan oleh register yang sama (lokasi memori chip internal) yang mengontrol apakah pin TINGGI atau RENDAH. Akibatnya, pin yang dikonfigurasi untuk memiliki resistor pullup dinyalakan ketika pin adalah INPUT, akan memiliki pin yang dikonfigurasi sebagai TINGGI jika pin kemudian beralih ke OUTPUT dengan pinMode (). Ini bekerja di arah lain juga, dan pin output yang dibiarkan dalam status TINGGI akan memiliki resistor pullup yang ditetapkan jika beralih ke input dengan pinMode ().
Sebelum Arduino 1.0.1, dimungkinkan untuk mengkonfigurasi pull-up internal dengan cara berikut:
pinMode (pin, INPUT); // atur pin ke input digitalWrite (pin, HIGH); // nyalakan resistor pullupCATATAN: 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 pada sebagian besar papan. Jika Anda mengaktifkan resistor pull-up 20k internal, itu akan menggantung di sekitar 1,7V bukannya 5V yang diharapkan karena LED onboard dan resistor seri menarik level tegangan ke bawah, yang berarti ia selalu mengembalikan RENDAH. Jika Anda harus menggunakan pin 13 sebagai input digital, atur pinMode () ke INPUT dan gunakan resistor pull down eksternal.
Properti Pin Dikonfigurasi sebagai OUTPUT
Pin yang dikonfigurasikan sebagai OUTPUT dengan pinMode () dikatakan dalam keadaan impedansi rendah. Ini berarti bahwa mereka dapat menyediakan sejumlah besar arus ke sirkuit lain. Atmega pin dapat sumber (memberikan arus positif) atau tenggelam (memberikan arus negatif) hingga 40 mA (miliamps) dari arus ke perangkat / sirkuit lain. Ini adalah arus yang cukup untuk menerangi LED (jangan lupa resistor seri), atau menjalankan banyak sensor, misalnya, tetapi arus yang tidak cukup untuk menjalankan sebagian besar relai, solenoida, atau motor.
Sirkuit pendek pada pin Arduino, atau mencoba menjalankan perangkat dengan arus tinggi darinya, dapat merusak atau menghancurkan transistor keluaran dalam pin, atau merusak seluruh chip Atmega. Seringkali ini akan menghasilkan pin "mati" pada mikrokontroler tetapi chip yang tersisa masih berfungsi dengan baik. Karena alasan ini, sebaiknya hubungkan pin OUTPUT ke perangkat lain dengan resistor 470Ω atau 1k, kecuali diperlukan penarikan arus maksimum dari pin tersebut untuk aplikasi tertentu.
REFERENSI
- [1] https://www.arduino.cc/en/Tutorial/DigitalPins