Hai, penduduk Habr! Hari ini saya memutuskan untuk membuat panduan keyboard lengkap untuk Arduino.
Perhatian! Artikel ini terutama ditujukan untuk pemula!Dalam banyak proyek, ada kebutuhan untuk menciptakan kemungkinan input pengguna. Jika Anda perlu menerapkan sejumlah besar tombol (relatif), kemudian menghubungkannya secara terpisah menjadi panjang dan tidak rasional. Untuk tujuan ini, lebih baik memilih keyboard, tetapi seperti pilihan apa pun, Anda perlu mendekatinya secara sadar. Apa saja jenis keyboard dan cara berinteraksi dengannya?
Secara global, semua modul jenis ini dapat dibagi menjadi dua kategori besar:
matriks dan
analog .
Keyboard matriks
Jenis keyboard termudah, termurah, dan paling populer. Ini relatif mudah untuk memproduksi dan mengisi sebagian besar pasar untuk modul Arduino. Paling sering terlihat seperti ini:


Prinsip kerja
Anda dapat memahami cara kerja keyboard ini dengan mempelajari diagram berikut:

Untuk memahami tombol mana yang ditekan, Anda perlu menerapkan sinyal ke empat kontak pertama dari modul dan melihat sinyal yang kembali dari yang kedua. Tetapi jangan takut bahwa Anda harus menulis algoritma pemrosesan untuk delapan pin secara manual - pustaka siap pakai "keypad.h" akan membantu kami dalam hal ini, karena itu kami tidak perlu menemukan kembali roda.
Koneksi papan
Menghubungkan modul itu sendiri
Pada artikel ini saya akan menggunakan diagram koneksi berikut:

Anda mungkin memiliki pertanyaan: "Mengapa saya memutuskan untuk menggunakan pin dari yang kedua hingga yang kesembilan, melewatkan nol dan yang pertama?" - faktanya adalah bahwa beberapa modul menggunakannya sebagai saluran RX dan TX untuk masing-masing menerima dan mentransmisikan data. Misalnya, modul bluetooth. Oleh karena itu, dengan mempertimbangkan kemungkinan penambahan proyek ke modul lain, diputuskan untuk membiarkan pin koneksi ini gratis.
Menulis sketsa
Untuk memulainya, agar dapat menggunakan perpustakaan untuk menghubungkan keyboard dalam kode, Anda harus menginstalnya di perangkat Anda. Ini dapat dilakukan sebagai berikut: di Arduino IDE sendiri, klik
Sketsa -> Sambungkan Perpustakaan -> Kelola Perpustakaan ... atau gunakan pintasan keyboard "Ctrl + Shift + I". Di drive pencarian di "keypad.h" (tanpa tanda kurung) dan tekan "Instalasi".
Setelah instalasi, lanjutkan menulis sketsa:
#include <Keypad.h> // const byte ROWS = 4; // const byte COLS = 4; // char hexaKeys[ROWS][COLS] = {// , , {'1','4','7','*'}, {'2','5','8','0'}, {'3','6','9','#'}, {'A','B','C','D'} }; byte rowPins[ROWS] = {5, 4, 3, 2}; // byte colPins[COLS] = {9, 8, 7, 6}; // // : Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); void setup(){ Serial.begin(9600);// } void loop(){ char customKey = customKeypad.getKey();// if (customKey){// - Serial.println(customKey);// } }
Pro dan kontra
Cons
- Terlalu banyak pin yang harus dihubungkan agar berfungsi. Ini adalah masalah besar, jika Anda tidak membuat kalkulator atau kunci kombinasi, tetapi proyek berskala lebih besar, di mana Anda masih perlu menggunakan sejumlah besar modul yang berbeda - mungkin mereka hanya tidak memiliki pin yang cukup.
- Kualitas eksekusi modul terlalu rendah: tidak ada yang menjamin sinyal stabil konstan. Keyboard asli tidak dibuat pada tingkat yang sangat tinggi, dan jika Anda membuat pesanan di Aliexpress sama sekali, maka kemungkinan besar Anda harus memperbaiki tiang tembok insinyur Cina dengan besi solder untuk mencapai operasi yang stabil.
- Pustaka tambahan digunakan, yang juga akan menempati memori mikrokontroler, yang sudah tidak memiliki banyak. Jika Anda sedang menulis proyek besar dengan banyak fungsi dan perhitungan dan Anda perlu membaca data dari keyboard secara manual atau menggunakan keyboard analog, setiap byte pada akun.
Pro
- Harga rendah
- Mudah ditemukan
Keyboard analog
Prinsip kerja
Pada keyboard analog, resistor digunakan untuk mengubah level tegangan, dan sinyalnya melewati satu saluran, yang terhubung dengan, pada kenyataannya, pin analog di papan. Bagaimana semuanya diatur dapat dipahami dengan melihat diagram berikut:

Koneksi papan
Koneksi sangat sederhana, tetapi dapat bervariasi tergantung pada keyboard tertentu. Pada artikel ini saya akan mempertimbangkan contoh penggunaan keyboard analog Cina
ini dengan Ali.
Jadi: kita menghubungkan output analog keyboard ke pin analog di papan, menghubungkan pin VCC di papan ke 3.3V (jangan melihat tulisan di keyboard yang mengatakan 5V - ini adalah kesalahan), dan GND di papan dengan GND pada modul. Anda dapat menggunakan skema berikut:

Menulis sketsa
Tidak perlu menggunakan perpustakaan pihak ketiga, semuanya sangat sederhana dan jelas. Berikut adalah kode itu sendiri, yang membaca tombol yang ditekan dan menampilkan nomornya, dari 1 hingga 16 (dari kiri ke kanan, dari atas ke bawah) atau 0 jika tidak ada yang ditekan, ke monitor port.
unsigned const short int KEYPAD_PIN = 0;
Pro dan kontra
Pro
- Koneksi yang sangat mudah
- Hanya satu pin
- Menghemat memori yang tidak Anda habiskan di bawah perpustakaan
- Memberikan operasi yang stabil (asalkan Anda tidak menekan lebih dari satu tombol pada suatu waktu)
Cons
- Lebih mahal dari papan ketik matriks
- Kemungkinan besar satu-satunya cara untuk membeli akan memesan dari Cina dan pengiriman akan memakan waktu
Ringkasan
Secara pribadi, saya sarankan menggunakan keyboard analog, karena mereka sering, kualitas yang paling sering lebih tinggi dan menghubungkannya sederhana, sederhana. Hal utama adalah memperhatikan tabel nilai dari tombol yang ditekan yang disediakan pabrikan atau, jika tidak ada, Anda dapat melakukan pengukuran ini sendiri, menampilkan nilai-nilai dari port analog di monitor port, sehingga Anda dapat menggunakannya nanti dalam kode. Tetapi pilihan selalu menjadi milik Anda: untuk menggunakan opsi murah standar atau membayar lebih demi keuntungan signifikan dalam beberapa situasi.
Itu semua untuk saya. Tinggalkan pertanyaan Anda di komentar, tulis pendapat Anda dan kami akan bertemu di ruang terbuka Habr!