Isi kandungan:
- Langkah 1: Bil Bahan
- Langkah 2: Skematik dan Cicruit
- Langkah 3: Kodnya
- Langkah 4: Pembetulan Nilai
- Langkah 5: Projek Selepas Kritikan dan Ulasan
- Langkah 6: Selepas Beberapa Kerja Menjual
- Langkah 7: Momen Kebenaran
- Langkah 8: Akhir
Video: Pad Kekunci Satu Pin 4 × 4: 10 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:09
Setiap kali saya melihat papan kekunci, ia dilengkapi dengan banyak pin, ini adalah pembaziran besar pin Arduino anda, jadi bolehkah kita menjalankan papan kekunci dengan satu dan hanya satu pin? Jawapannya ada di sini.
Langkah 1: Bil Bahan
Perkakasan:
01 Arduino UNO
02 Papan Roti
01 LCD dengan I2C
16 Tekan butang
04 perintang 1.5 kΩ
04 perintang 620 Ω
04 perintang 220 Ω
08 perintang 100 Ω
01 perintang 1 kΩ
07 Jumper wayar
Perisian:
Arduino IDE dipasang pada PC anda
Langkah 2: Skematik dan Cicruit
Semua idea adalah bahawa kita mempunyai 4 * 4 matriks butang yang disambungkan secara menegak ke Tanah dengan plumbum kanan dan mendatar oleh plumbum lain (butang utama) dan perintang 1.5 kΩ, 620Ω, 220Ω, dan 100Ω, hujung 4 baris dihubungkan oleh empat perintang 100Ω seperti yang ditunjukkan pada skema.
Setiap kali anda menekan butang, anda menutup litar dan arus melalui jalan yang berbeza dan rantai perintang yang berbeza. Itulah sebabnya pin A0 menerima bacaan analog yang berbeza untuk setiap butang tekan. Semua yang anda perlukan sekarang adalah pengkodan.
Langkah 3: Kodnya
#sertakan
#sertakan
LiquidCrystal_I2C lcd (0x3f, 20, 4);
int Butang = A0;
int readvalue;
persediaan tidak sah ()
{
Serial.begin (9600);
lcd.begin ();
pinMode (Butang, INPUT);
lcd.backlight ();
lcd.print ("Hello World");
kelewatan (2000);
lcd.clear ();
lcd.print ("Pad kekunci satu pin 4 * 4");
kelewatan (2000); }
gelung kosong ()
{
readvalue = analogRead (Butang);
Serial.println (nilai baca);
jika (readvalue == 852) {lcd.clear (); lcd.print ("A");}
lain {if (readvalue == 763) {lcd.clear (); lcd.print ("B");}
lain {if (readvalue == 685) {lcd.clear (); lcd.print ("C");}
lain {if (readvalue == 965) {lcd.clear (); lcd.print ("D");}
lain {if (readvalue == 565) {lcd.clear (); lcd.print ("9");}
lain {if (readvalue == 614) {lcd.clear (); lcd.print ("6");}
lain {if (readvalue == 360) {lcd.clear (); lcd.print ("3");}
lain {if (readvalue == 335) {lcd.clear (); lcd.print ("#");}
lain {if (readvalue == 396) {lcd.clear (); lcd.print ("8");}
lain {if (readvalue == 349) {lcd.clear (); lcd.print ("5");}
lain {if (readvalue == 235) {lcd.clear (); lcd.print ("2");}
lain {if (readvalue == 279) {lcd.clear (); lcd.print ("0");}
lain {if (readvalue == 452) {lcd.clear (); lcd.print ("7");}
lain {if (readvalue == 271) {lcd.clear (); lcd.print ("4");}
lain {if (readvalue == 170) {lcd.clear (); lcd.print ("1");}
lain {if (readvalue == 92) {lcd.clear (); lcd.print ("*");} lain {}}}}}}}}}}}}}}}}}}
Langkah 4: Pembetulan Nilai
Semasa anda membuka moniter bersiri, ia akan menunjukkan nilai 1023, jika anda menekan butang, ia akan memberi anda bacaan lagi, anda harus mengambil nilai tersebut dan membuat beberapa perubahan dalam kod
Langkah 5: Projek Selepas Kritikan dan Ulasan
Tidak syak lagi bahawa kita semua berada di sini untuk belajar dan berkongsi pengetahuan kita, berkat beberapa komen yang ditinggalkan oleh beberapa orang dari komuniti yang sangat membantu, saya memutuskan untuk membuat beberapa penyesuaian dan penambahbaikan pada projek saya:
Perkakasan:
Saya memutuskan untuk menyolder semua komponen dalam PCB untuk mengelakkan masalah sambungan buruk di papan roti.
Kodnya:
Seorang rakan menasihati saya untuk menggunakan perisian membantah dan ini hanyalah gelung ("untuk" gelung misalnya) untuk membuat program mengambil sedikit masa untuk memilih pembacaan itu bermaksud bahawa ia membuat banyak bacaan (500 dalam contoh saya) tetapi memerlukan hanya yang terakhir.
untuk (i = 1; i <= 500; i ++) {// hanya mengambil analog analog ke-500
value = analogRead (Button);} // itu membantu meluangkan masa untuk mengelakkan pembacaan yang buruk
Rakan yang lain terima kasih kepadanya menasihati saya untuk membandingkan "readvalue" dengan pelbagai nilai bukan satu kerana "readvalue" mengambil banyak nilai untuk butang yang sama. "A" misalnya memberikan bacaan: 849, 850, 851 852, 853, 854, 855 jadi julat 7 nilai: ambang (852) dan 3 nilai kiri dan kanan. apa yang harus kita lakukan di sini adalah membandingkan nilai mutlak perbezaan antara "readvalue" dan "852" hingga "3".
jika (abs (readvalue-852) <= 8) {lcd.clear (); lcd.print ("A");}
Langkah 6: Selepas Beberapa Kerja Menjual
Langkah 7: Momen Kebenaran
Seperti yang anda lihat program kadang-kadang membingungkan butang tetapi masih berfungsi, secara teori tidak ada yang salah dengan litar tetapi kodnya memerlukan penentukuran lebih banyak.
Langkah 8: Akhir
Saya harap anda menyukai projek ini dan anda berusaha melakukannya, mungkin anda akan melakukan yang lebih baik daripada yang saya lakukan.
Tanya saya jika anda mempunyai soalan, tinggalkan komen dan, jangan lupa memilih saya jika anda suka.
Disyorkan:
Litar Off Latch Dengan UC. Butang Satu Tekan. Satu Pin. Komponen diskrit: 5 Langkah
Litar Off Latch Dengan UC. Butang Satu Tekan. Satu Pin. Komponen diskrit: Halo semua, sedang mencari litar hidup / mati di jaring. Semua yang saya dapati bukanlah yang saya cari. Saya bercakap dengan diri sendiri, semestinya ada cara untuk itu. Itulah yang saya perlukan.-Hanya satu butang tekan untuk melakukan dan mematikan. -Harus menggunakan
Pad Kekunci 2 Kekunci untuk Osu !: 6 Langkah
Pad Kekunci 2 Kekunci untuk Osu !: Dalam tutorial ini, anda akan mengetahui cara membuat Pad Kekunci 2 untuk osu! Sila ikut arahan
Betulkan Kekunci Papan Kekunci: 5 Langkah (dengan Gambar)
Betulkan Kekunci Papan Kekunci: Saya menjumpai papan kekunci yang hebat di longgokan sampah kami, iaitu Papan Kekunci Microsoft Natural Ergonomik. Ia mempunyai susun atur yang selesa, tetapi hanya ada satu masalah. Kekunci N tidak terlalu responsif. Anda harus benar-benar memukulnya untuk mendapatkannya untuk mendaftar. Sememangnya, ini tidak berlaku
Papan Kekunci Quick and Dirty Das (Papan Kekunci Kosong): 3 Langkah
Papan Kekunci Quick and Dirty Das (Papan Kekunci Kosong): Papan Kekunci Das adalah nama papan kekunci yang paling popular tanpa tulisan pada kekunci (papan kekunci kosong). Papan Kekunci Das dijual pada harga $ 89.95. Instruksional ini akan membimbing anda walaupun membuat sendiri dengan papan kekunci lama yang anda miliki
Pad Kekunci Satu Sentuhan: 4 Langkah (dengan Gambar)
Satu-Sentuh Keypad Masher: Membuang detik berharga menaip kod setiap kali anda perlu membuka pintu? 'Peranti' kecil ini melancarkan proses dengan menekan kekunci kanan untuk anda, dan dapat disembunyikan di telapak tangan anda sehingga anda hanya menghaluskan tangan anda ke papan kekunci dan - aplikasi