Mục lục:
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-13 06:58
Mỗi khi tôi nhìn thấy một bàn phím, nó có rất nhiều chân cắm, thật lãng phí số lượng chân cắm Arduino của bạn, vậy chúng ta có thể chạy bàn phím với một và chỉ một chân không? Câu trả lời là đây.
Bước 1: Hóa đơn nguyên vật liệu
Phần cứng:
01 Arduino UNO
02 bảng bánh mì
01 LCD với I2C
16 nút ấn
04 điện trở 1,5 kΩ
04 điện trở 620 Ω
04 điện trở 220 Ω
08 điện trở 100 Ω
01 điện trở 1 kΩ
07 dây nhảy
Phần mềm:
Arduino IDE được cài đặt trên PC của bạn
Bước 2: Sơ đồ và Cicruit
Ý tưởng tất cả là chúng ta có ma trận 4 * 4 của các nút nhấn được kết nối theo chiều dọc với Mặt đất bằng dây dẫn bên phải và theo chiều ngang của dây dẫn khác (dây dẫn nút) và các điện trở 1,5 kΩ, 620Ω, 220Ω và 100Ω, các đầu của 4 hàng được kết nối bằng bốn điện trở 100Ω như trong sơ đồ.
Mỗi khi bạn nhấn một nút, bạn sẽ đóng mạch và dòng điện đi qua một đường khác và chuỗi điện trở khác nhau, đó là lý do tại sao chân A0 nhận được một số đọc tương tự khác nhau cho mỗi nút nhấn. Tất cả những gì bạn cần bây giờ là mã hóa.
Bước 3: Mã
#bao gồm
#bao gồm
Màn hình LCD LiquidCrystal_I2C (0x3f, 20, 4);
int Nút = A0;
int readvalue;
void setup ()
{
Serial.begin (9600);
lcd.begin ();
pinMode (Nút, NGÕ VÀO);
LCD đèn nền();
lcd.print ("Xin chào Thế giới");
chậm trễ (2000);
lcd.clear ();
lcd.print ("Một bàn phím 4 * 4");
chậm trễ (2000); }
void loop ()
{
readvalue = analogRead (Nút);
Serial.println (giá trị đọc);
if (readvalue == 852) {lcd.clear (); lcd.print ("A");}
else {if (readvalue == 763) {lcd.clear (); lcd.print ("B");}
else {if (readvalue == 685) {lcd.clear (); lcd.print ("C");}
else {if (readvalue == 965) {lcd.clear (); lcd.print ("D");}
else {if (readvalue == 565) {lcd.clear (); lcd.print ("9");}
else {if (readvalue == 614) {lcd.clear (); lcd.print ("6");}
else {if (readvalue == 360) {lcd.clear (); lcd.print ("3");}
else {if (readvalue == 335) {lcd.clear (); lcd.print ("#");}
else {if (readvalue == 396) {lcd.clear (); lcd.print ("8");}
else {if (readvalue == 349) {lcd.clear (); lcd.print ("5");}
else {if (readvalue == 235) {lcd.clear (); lcd.print ("2");}
else {if (readvalue == 279) {lcd.clear (); lcd.print ("0");}
else {if (readvalue == 452) {lcd.clear (); lcd.print ("7");}
else {if (readvalue == 271) {lcd.clear (); lcd.print ("4");}
else {if (readvalue == 170) {lcd.clear (); lcd.print ("1");}
else {if (readvalue == 92) {lcd.clear (); lcd.print ("*");} else {}}}}}}}}}}}}}}}}}
Bước 4: Hiệu chỉnh giá trị
Khi bạn mở moniter nối tiếp, nó sẽ hiển thị giá trị là 1023, nếu bạn nhấn một nút, nó sẽ cung cấp cho bạn một lần đọc khác, bạn phải lấy các giá trị đó và thực hiện một số thay đổi trong mã
Bước 5: Dự án Sau khi Phê bình và Đánh giá
Không nghi ngờ gì khi tất cả chúng ta ở đây để học hỏi và chia sẻ kiến thức của mình, nhờ một số nhận xét của một số người trong cộng đồng rất hữu ích, tôi quyết định thực hiện một số điều chỉnh và cải tiến cho dự án của mình:
Phần cứng:
Tôi quyết định hàn tất cả các thành phần trong PCB để tránh vấn đề kết nối kém trong bảng mạch.
Mật mã:
Một người bạn khuyên tôi nên sử dụng phần mềm gỡ lỗi và nó chỉ là một vòng lặp (ví dụ: vòng lặp "for") để làm cho chương trình mất một khoảng thời gian để chọn một bài đọc. chỉ cái cuối cùng.
for (i = 1; i <= 500; i ++) {// chỉ lấy chuỗi tương tự thứ 500
value = analogRead (Button);} // điều đó giúp bạn bớt chút thời gian để tránh việc đọc sai
Một người bạn khác nhờ anh ta khuyên tôi nên so sánh "giá trị đọc" với một phạm vi giá trị không phải là một vì "giá trị đọc" nhận rất nhiều giá trị cho cùng một nút nhấn. Ví dụ "A" cho giá trị là: 849, 850, 851 852, 853, 854, 855 vì vậy nó là một phạm vi gồm 7 giá trị: một ngưỡng (852) và 3 giá trị trái và phải. những gì chúng ta phải làm ở đây là so sánh giá trị tuyệt đối của sự khác biệt giữa "giá trị đọc" và "852" với "3".
if (abs (readvalue-852) <= 8) {lcd.clear (); lcd.print ("A");}
Bước 6: Sau một số công việc bán ra
Bước 7: Khoảnh khắc của sự thật
Như bạn có thể thấy chương trình đôi khi nhầm lẫn các nút nhưng nó vẫn hoạt động, về lý thuyết thì mạch không có vấn đề gì nhưng mã cần hiệu chỉnh thêm.
Bước 8: Kết thúc
Tôi hy vọng bạn thích dự án này và bạn cố gắng thực hiện nó, có thể bạn sẽ làm tốt hơn tôi.
Hãy hỏi tôi nếu bạn có thắc mắc, hãy để lại bình luận và đừng quên bình chọn cho tôi nếu bạn thích điều đó.