Daftar Isi:
- Langkah 1: Daftar Bahan
- Langkah 2: Skema dan Cicruit
- Langkah 3: Kode
- Langkah 4: Koreksi Nilai
- Langkah 5: Proyek Setelah Kritik dan Review
- Langkah 6: Setelah Beberapa Pekerjaan Solder
- Langkah 7: Momen Kebenaran
- Langkah 8: Akhir
Video: Satu Pin 4 × 4 Keypad: 10 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:56
Setiap kali saya melihat keypad, itu datang dengan banyak pin, itu membuang-buang pin Arduino Anda, jadi bisakah kita menjalankan keypad dengan satu dan hanya satu pin?. Jawabannya ada di sini.
Langkah 1: Daftar Bahan
Perangkat keras:
01 Arduino UNO
02 Papan tempat memotong roti
01 LCD dengan I2C
16 Tombol tekan
04 resistor 1,5 kΩ
04 resistor 620
04 resistor 220
08 resistor 100
01 resistor 1 kΩ
07 Kabel jumper
Perangkat lunak:
Arduino IDE diinstal pada PC Anda
Langkah 2: Skema dan Cicruit
Idenya adalah bahwa kita memiliki matriks tombol tekan 4*4 yang terhubung secara vertikal ke Ground oleh kabel kanan dan horizontal dengan kabel lainnya (kabel tombol) dan resistor 1,5 kΩ, 620Ω, 220Ω, dan 100Ω, ujung-ujungnya 4 baris dihubungkan oleh empat resistor 100Ω seperti yang ditunjukkan pada skema.
Setiap kali Anda menekan tombol, Anda menutup sirkuit dan arus melewati jalur yang berbeda dan rantai resistor yang berbeda itu sebabnya pin A0 menerima pembacaan analog yang berbeda untuk setiap tombol. Yang Anda butuhkan sekarang hanyalah coding.
Langkah 3: Kode
#termasuk
#termasuk
LiquidCrystal_I2C lcd (0x3f, 20, 4);
int Tombol = A0;
int nilai baca;
batalkan pengaturan()
{
Serial.begin(9600);
lcd.mulai();
pinMode(Tombol, INPUT);
lcd.lampu latar();
lcd.print("Halo Dunia");
penundaan(2000);
lcd.clear();
lcd.print("Keypad 4*4 satu pin");
penundaan(2000); }
lingkaran kosong()
{
readvalue = analogRead(Tombol);
Serial.println(nilai baca);
if (nilai baca==852){lcd.clear();lcd.print("A");}
else{ if (nilai baca==763){lcd.clear();lcd.print("B");}
else{ if (nilai baca==685){lcd.clear();lcd.print("C");}
else{ if (nilai baca==965){lcd.clear();lcd.print("D");}
else{ if (nilai baca==565){lcd.clear();lcd.print("9");}
else{ if (nilai baca==614){lcd.clear();lcd.print("6");}
else{ if (nilai baca==360){lcd.clear();lcd.print("3");}
else{ if (nilai baca==335){lcd.clear();lcd.print("#");}
else{ if (nilai baca==396){lcd.clear();lcd.print("8");}
else{ if (nilai baca==349){lcd.clear();lcd.print("5");}
else{ if (nilai baca==235){lcd.clear();lcd.print("2");}
else{ if (nilai baca==279){lcd.clear();lcd.print("0");}
else{ if (nilai baca==452){lcd.clear();lcd.print("7");}
else{ if (nilai baca==271){lcd.clear();lcd.print("4");}
else{ if (nilai baca==170){lcd.clear();lcd.print("1");}
lain{ if (nilai baca==92){lcd.clear();lcd.print("*");}else{}}}}}}}}}}}}}}} }
Langkah 4: Koreksi Nilai
Ketika Anda membuka serial moniter itu akan menunjukkan nilai 1023, jika Anda menekan tombol itu akan memberi Anda bacaan lain, Anda harus mengambil nilai-nilai itu dan membuat beberapa perubahan dalam kode
Langkah 5: Proyek Setelah Kritik dan Review
Tidak ada keraguan bahwa kita semua di sini untuk belajar dan berbagi pengetahuan kita, berkat beberapa komentar yang ditinggalkan oleh beberapa orang dari komunitas yang sangat membantu, saya memutuskan untuk membuat beberapa penyesuaian dan perbaikan pada proyek saya:
Perangkat keras:
Saya memutuskan untuk menyolder semua komponen dalam PCB untuk menghindari masalah koneksi yang buruk di papan tempat memotong roti.
Kode:
Seorang teman menyarankan saya untuk menggunakan perangkat lunak debouncing dan itu hanya sebuah loop ("untuk" loop misalnya) untuk membuat program mengambil beberapa waktu untuk memilih membaca itu berarti membuat banyak membaca (500 dalam contoh saya) tetapi mengambil hanya yang terakhir.
for (i=1; i<= 500; i++) { // ambil hanya pembacaan analog ke-500
value = analogRead(Button);} // itu membantu untuk meluangkan waktu untuk menghindari pembacaan yang buruk
Seorang teman lain yang berterima kasih kepadanya menyarankan saya untuk membandingkan "nilai baca" dengan rentang nilai bukan satu karena "nilai baca" membutuhkan banyak nilai untuk tombol tekan yang sama. "A" misalnya memberikan pembacaan: 849, 850, 851 852, 853, 854, 855 jadi ini adalah rentang 7 nilai: ambang batas (852) dan 3 nilai kiri dan kanan. yang harus kita lakukan di sini adalah membandingkan nilai absolut dari perbedaan antara "nilai baca" dan "852" dengan "3".
if(abs(readvalue-852)<=8){lcd.clear();lcd.print("A");}
Langkah 6: Setelah Beberapa Pekerjaan Solder
Langkah 7: Momen Kebenaran
Seperti yang Anda lihat, program terkadang membingungkan tombol tetapi masih berfungsi, secara teori tidak ada yang salah dengan rangkaian tetapi kodenya membutuhkan lebih banyak kalibrasi.
Langkah 8: Akhir
Saya harap Anda menyukai proyek ini dan Anda mencoba melakukannya, mungkin Anda akan melakukan lebih baik daripada saya.
Tanya saya jika Anda memiliki pertanyaan, tinggalkan komentar dan, jangan lupa untuk memilih saya jika Anda menyukainya.
Direkomendasikan:
Cara Membaca Beberapa Nilai Analog Menggunakan Satu Pin Analog: 6 Langkah (dengan Gambar)
Cara Membaca Beberapa Nilai Analog Menggunakan Satu Pin Analog: Dalam tutorial ini, saya akan menunjukkan cara membaca beberapa nilai analog hanya dengan menggunakan satu pin input analog
Sirkuit On Off Latch Dengan UC. Satu Tombol Tekan. Satu Pin. Komponen Diskrit.: 5 Langkah
Sirkuit On Off Latch Dengan UC. Satu Tombol Tekan. Satu Pin. Komponen Diskrit.: Halo semuanya, sedang mencari sirkuit on/off di internet. Semua yang saya temukan bukanlah yang saya cari. Saya berbicara pada diri sendiri, pasti ada cara untuk itu. Itulah yang saya butuhkan.-Hanya satu tombol tekan untuk menghidupkan dan mematikan.-Hanya harus menggunakan
100+ Switch dalam Satu Pin Arduino: 6 Langkah (dengan Gambar)
100+ Switch dalam Satu Pin Arduino: PendahuluanApakah Anda kehabisan pin input? Jangan khawatir, berikut adalah solusi tanpa register geser. Dalam video ini, kita akan belajar tentang menghubungkan lebih dari 100 sakelar ke satu pin Arduino
Antarmuka Keypad Dengan 8051 dan Menampilkan Nomor Keypad dalam 7 Segmen: 4 Langkah (dengan Gambar)
Antarmuka Keypad Dengan 8051 dan Menampilkan Nomor Keypad dalam 7 Segmen: Dalam tutorial ini saya akan memberi tahu Anda tentang bagaimana kita dapat menghubungkan keypad dengan 8051 dan menampilkan nomor keypad dalam tampilan 7 segmen
Pena IR Minimalis: Tanpa Solder, Di Bawah Satu Menit, Di Bawah Satu Dolar.: 3 Langkah
Pena IR Minimalis: Tanpa Solder, Di Bawah Menit, Di Bawah Dolar.: Instruksi pertama saya, semoga bermanfaat: Jika Anda ingin menguji JC Lee (JC adalah singkatan dari Johnny Chung, tetapi dia juga melakukan keajaiban. ..) atau program Smoothboard di www.smoothboard.net (tahun cahaya ke depan, karena Boon Jin mulai