BÀI LIÊN QUAN
Tiếp tục với chủ đề Arduino, mình giới thiệu các bạn project làm một chiếc máy tính sử dụng vi điều khiển Arduino. Đây là một project khá hay giúp các bạn biết cách thiệt kế mạch cũng như sử dụng thành thạo code Arduino.
Trong project sử dụng các thành phần chính: Arduino UNO, LCD 16*2, bàn phím matrix 4*4.
Bắt đầu thôi!!
Bước 1: Sơ đồ toàn mạch.
Bước 2: Linh kiện trong mạch
- Arduino UNO
- 16 x 2 LCD Display
- 4 x 4 Matrix Keypad Module or 16 Push buttons
- 10 KΩ Potentiometer
- Bread board ( Prototyping board )
- Connecting wires
Bước 3: Giải thích các linh kiện sử dụng
1. Arduino UNO: là trái tim của mạch, nơi nhận lệnh từ bàn phím sau đó xử lý và đưa kết quả ra hiển thị ở LCD
2. LCD 16*2: Là thành phần hiển thị kết quả cũng như phép tính một cách trực quan cho người sử dụng.
3. Bàn phím matrix 4*4: để tạo bàn phím này bạn sử dụng 16 nút nhấn được kết nối với nhau như hình bên dưới vậy là bạn đã tạo ra bàn phím matrix 4*4 rồi đó.
Bước 4: Giải thích nguyên lý mạch
Một máy tính đơn giản được thiết kế trong dự án này sử dụng bảng Arduino UNO và một ma trận bàn phím. Các hoạt động của dự án được giải thích ở đây.
Bàn phím trong dự án bao gồm 4 hàng và 4 cột và cấu trúc tương tự như hình ảnh bên dưới.
Một thư viện đặc biệt gọi là " Keypad.h " được sử dụng để tìm ra phím nào được nhấn. Thư viện này phải được tải riêng và phải được thêm vào Arduino IDE.
Khi phím được xác định, các hoạt động có liên quan như cộng, trừ, nhân và chia có thể được thực hiện. Một màn hình rõ ràng (của màn hình LCD) nút cũng được bao gồm.
Mặc dù thư viện hiện hầu hết công việc, chúng ta có thể hiểu việc xử lý xác định chủ chốt.
Như đã đề cập trong thiết kế mạch, các hàng của bàn phím được kết nối với các chân 13-10 của Arduino và cột của bàn phím được kết nối với các chân 9-6 của Arduino.
Tất cả các chân hàng được kéo cao và tất cả các chân cột được kéo thấp. Từ nay trở đi, các Arduino đợi cho pin cột để trở thành cao, mà sẽ xảy ra nếu một phím được nhấn.
Xem xét, nếu một phím được nhấn, công tắc đóng kết nối giữa các hàng tương ứng và cột. Do dòng điện từ cao đến thấp tiềm năng, các cột sẽ trở thành cao.
Sự thay đổi này trong tiềm năng ở cột, làm cho các Arduino để hiểu rằng chìa khóa tương ứng với các cột cụ thể được nhấn.
Bây giờ là thời gian để tìm hàng. Thay vì cho tín hiệu CAO với tất cả các hàng cùng một lúc, Arduino sẽ cho phép CAO để một hàng tại một thời điểm và kiểm tra xem có một tín hiệu CAO phát hiện trên cột. Nếu không có tín hiệu CAO phát hiện trên các cột tương ứng, Arduino sẽ quét các hàng tiếp theo.
Quá trình này sẽ lặp lại cho đến khi có một tín hiệu CAO phát hiện trên các cột tương ứng. Một khi nếu tín hiệu CAO được phát hiện trên các cột tương ứng, do đó hàng được xác định.
Từ bên ngoài, quá trình phát hiện quan trọng này dường như được dành thời gian dài nhưng thực sự thời gian thực hiện để hoàn thành tất cả các quá trình nêu trên sẽ được trong micro giây. Nhưng thời gian trung bình một người mất để đẩy một nút là trong vài giây milli. Đó là lý do tại sao, quá trình phát hiện chính sẽ bắt đầu khi các phím được nhấn và hoàn thành trước khi phím được phát hành.
Bước 5: Hình ảnh mạch thực tế
Bước 6: Code project
thangbme.com
#includeLiquidCrystal lcd(0, 1, 2, 3, 4, 5); const byte ROWS = 4; const byte COLS = 4; char keys [ROWS] [COLS] = { {'7', '8', '9', '/'}, {'4', '5', '6', '*'}, {'1', '2', '3', '-'}, {'C', '0', '=', '+'} }; byte rowPins[ROWS] = {13 ,12 ,11 ,10}; byte colPins[COLS] = {9, 8, 7, 6}; Keypad myKeypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); boolean presentValue = false; boolean next = false; boolean final = false; String num1, num2; int answer; char op; void setup() { lcd.begin(16,2); lcd.setCursor(0,0); lcd.print("Electronics Hub "); lcd.setCursor(0,1); lcd.print(" Presents "); delay(5000); lcd.setCursor(0,0); lcd.print(" Arduino based "); lcd.setCursor(0,1); lcd.print(" Calculator" ); delay(5000); lcd.clear(); } void loop(){ char key = myKeypad.getKey(); if (key != NO_KEY && (key=='1'||key=='2'||key=='3'||key=='4'||key=='5'||key=='6'||key=='7'||key=='8'||key=='9'||key=='0')) { if (presentValue != true) { num1 = num1 + key; int numLength = num1.length(); lcd.setCursor(15 - numLength, 0); //to adjust one whitespace for operator lcd.print(num1); } else { num2 = num2 + key; int numLength = num2.length(); lcd.setCursor(15 - numLength, 1); lcd.print(num2); final = true; } } else if (presentValue == false && key != NO_KEY && (key == '/' || key == '*' || key == '-' || key == '+')) { if (presentValue == false) { presentValue = true; op = key; lcd.setCursor(15,0); lcd.print(op); } } else if (final == true && key != NO_KEY && key == '='){ if (op == '+'){ answer = num1.toInt() + num2.toInt(); } else if (op == '-'){ answer = num1.toInt() - num2.toInt(); } else if (op == '*'){ answer = num1.toInt() * num2.toInt(); } else if (op == '/'){ answer = num1.toInt() / num2.toInt(); } lcd.clear(); lcd.setCursor(15,0); lcd.autoscroll(); lcd.print(answer); lcd.noAutoscroll(); } else if (key != NO_KEY && key == 'C'){ lcd.clear(); presentValue = false; final = false; num1 = ""; num2 = ""; answer = 0; op = ' '; } }
Mạch Tạo Máy Tính Cầm Tay Sử Dụng Arduino Uno - Thangshare >>>>> Download Now
Trả lờiXóa>>>>> Download Full
Mạch Tạo Máy Tính Cầm Tay Sử Dụng Arduino Uno - Thangshare >>>>> Download LINK
>>>>> Download Now
Mạch Tạo Máy Tính Cầm Tay Sử Dụng Arduino Uno - Thangshare >>>>> Download Full
>>>>> Download LINK Nb