Proses manufaktur
| × | 1 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
|
|
Pendahuluan
Tujuan dari proyek ini adalah untuk secara signifikan mengurangi jumlah pin yang dibutuhkan oleh keypad numerik. Ini karena kita sering membutuhkan banyak pin I/O dibandingkan dengan yang tersedia di Arduino Uno atau Nanoboards.
Keypad numerik biasa disusun dalam matriks:keypad 4x3, membutuhkan 4+3 pin digital Arduino. Banyak perpustakaan tersedia di internet untuk digunakan dengan Arduino.
Solusi Saya
Solusi yang saya usulkan jauh lebih baik karena hanya menggunakan tiga input analog, dengan rangkaian seperti yang ditunjukkan pada gambar berikut.
Untuk setiap kolom hanya ada 4 nilai tegangan, sesuai dengan masing-masing dari 4 tombol, ditambah nol volt jika tidak ada tombol yang ditekan. Dalam skema yang setara (b) R1e menunjukkan salah satu dari empat resistor R1-R4, sedangkan R2e adalah salah satu dari tiga resistor R5-R7.
Sekarang mari kita lihat bagaimana membuat empat interval seluas mungkin. Pertama-tama resistor R2e =R5 =R6 =R7 dapat dibuat sama, kemudian kita dapat mengatur R1 =0 agar keluarannya sesuai dengan baris pertama pada 5V.
Dengan R2=330 ohm, R3=1 k ohm, R4=3 k ohm dan R5, R6, R7=1 k ohm, diperoleh interval berikut untuk setiap output:
Seperti yang Anda lihat, interval pada tiga keluaran adalah yang terbesar dan Anda dapat menggunakan enam resistor standar dengan toleransi ±5%. Dengan input analog tambahan dan resistor lain, keyboard 4x4 dapat digunakan dan seterusnya. Gambar berikut menunjukkan koneksi dengan Arduino.
Dalam diagram resistor R1 dihubungkan ke jalur 2 karena yang di jalur 1 telah ditarik dengan kawat, sehingga referensi resistor telah diskalakan satu. Penetapan pin dapat dimodifikasi sesuai kebutuhan, selama pin dapat dikonfigurasi sebagai analog.
Tentu saja, jika Arduino diberdayakan pada 3.3V, tidak ada yang akan berubah karena konverter ADC sebagai default menggunakan tegangan suplai dan nomor ADC tidak berubah.
Untuk menguji program, tidak memiliki keyboard jenis ini, saya membangunnya dengan tombol daur ulang, gambar di bawah menunjukkan prototipe saya. Konektor kanan 5 pin digunakan untuk menyambungkannya ke Arduino.
/* program Analog4x3Keybf * menguji keyboard dengan tombol 4x3 dengan 3 output analog * G. Carrera - 19/11/2018 */// batas nilai output keyboard:const int NADCm100[4 ] ={923.669.412.156};const int NADCp100[4] ={1123.869.612.356};const char key[13] ={'1','4','7','C','2','5' ,'8','0','3','6','9','E'};int keyval[3];int i,colp,val;void setup(){ Serial.begin(9600); // digunakan dengan monitor serial}void loop() { char k; k =KeyPad();// membaca keypad if (k !='N'){ // sebuah tombol ditekan Serial.print("key ="); Serial.println(k); penundaan (500); }}/******** Fungsi yang digunakan oleh program ********/char KeyPad(){// membaca keypad dan mengembalikan char key// key ='N' untuk tidak ada KeyScan();// membaca keyboard analog if (keyval[0]+keyval[1]+keyval[2] <40) { return 'N'; } else { // tombol ditekan delay(10);// antibounce KeyScan();// membaca ulang keyboard analog untuk (i=0; i <3; i++){//identifikasi kolom mana yang dimiliki if (keyval [i]> 40){ colp=i; val=keyval[i];// ini adalah nilai yang sesuai untuk (int j=0; j <4; j++){// mengidentifikasi tombol mana yang ditekan pada kolom jika (val>=NADCm100[j] &&keyval <=NADCp100[j]){ kunci kembali[colp*4+j]; merusak; } } } } }}void KeyScan(){// read analog keyboard keyval[0]=analogRead(A0); penundaan (1); keyval[1]=analogRead(A1); penundaan (1); keyval[2]=analogRead(A2); penundaan (1); }
Proses manufaktur
Komponen dan persediaan Arduino Nano R3 × 1 Resistor 10k ohm × 1 Resistor 1k ohm × 1 Resistor 100 ohm × 1 Resistor 100k ohm × 1 Resistor 1M ohm × 1 ElectroPeak 0.96 Modul Tampilan OLED 64x128 × 1 Kabel jumper (generik)
Komponen dan persediaan Arduino Nano R3 × 1 Penguat operasional IC TL061 × 1 Resistor 10k ohm × 2 Resistor 1M ohm × 1 Kapasitor Cakram Keramik, 39 pF × 1 kumparan sekunder dari trafo 1-2W kecil × 1 Alat dan mesin yang diperlukan
Komponen dan persediaan Arduino UNO × 1 SparkFun I2C DAC Breakout - MCP4725 × 1 Regulator Linier dengan Output yang Dapat Disesuaikan × 1 Texas Instruments Tujuan Umum Dual Op-Amp × 1 Resistor 6.8k ohm × 2 Resistor 3.3k ohm × 1 Resistor
Komponen dan persediaan Arduino UNO × 1 Adafruit LCD Standar - 16x2 Putih di Atas Biru × 1 Sakelar Tombol Tekan SparkFun 12mm × 4 Resistor 10k ohm × 4 Resistor 221 ohm Yah, 220 ohm... × 2 Potensiometer Putaran Tunggal- 100k ohm × 1