Mục lục:

Bàn phím một pin 4 × 4: 10 bước
Bàn phím một pin 4 × 4: 10 bước

Video: Bàn phím một pin 4 × 4: 10 bước

Video: Bàn phím một pin 4 × 4: 10 bước
Video: Hướng dẫn cách gõ bàn phím bằng 10 ngón tay dành cho người mới bắt đầu - Góc máy tính văn phòng 2024, Tháng mười hai
Anonim
Bàn phím một pin 4 × 4
Bàn phím một pin 4 × 4

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

Hóa đơn nguyên vật liệu
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

Schematic và Cicruit
Schematic và Cicruit
Schematic và Cicruit
Schematic 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ị

Hiệu chỉnh giá trị
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á

Dự án Sau khi Phê bình và Đánh giá
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

Sau một số công việc được bán
Sau một số công việc được bán
Sau một số công việc được bán
Sau một số công việc được bán
Sau một số công việc được bán
Sau một số công việc được bán

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 đó.

Đề xuất: