Mục lục:

Máy tính Arduino: 6 bước
Máy tính Arduino: 6 bước

Video: Máy tính Arduino: 6 bước

Video: Máy tính Arduino: 6 bước
Video: Học lập trình Arduino KHÔNG HỀ KHÓ - Bộ KIT học tập Arduino Uno R3 BLK 2024, Tháng mười một
Anonim
Máy tính Arduino
Máy tính Arduino

Lập trình luôn thú vị và Arduino là một nền tảng tuyệt vời nếu bạn mới bắt đầu với lập trình Nhúng. Trong hướng dẫn này, chúng tôi sẽ xây dựng máy tính của riêng mình với Arduino. Các giá trị có thể được gửi đến thông qua một bàn phím (bàn phím 4 × 4) và kết quả có thể được xem trên màn hình LCD (16 × 2 Dot-matrix). Máy tính này có thể thực hiện các phép toán đơn giản như Cộng, Trừ, Nhân và Chia với các số nguyên. Nhưng một khi bạn hiểu khái niệm, bạn có thể thực hiện các chức năng khoa học thậm chí với các chức năng được tích hợp sẵn của Arduino. Vào cuối dự án này, bạn sẽ biết cách sử dụng màn hình LCD 16x2 và Bàn phím với Arduino và cũng dễ dàng lập trình cho chúng bằng cách sử dụng các thư viện có sẵn. Bạn cũng sẽ hiểu cách lập trình Arduino của mình để hoàn thành một nhiệm vụ cụ thể.

Bước 1: Những điều cần thiết

Arduino Uno (Mọi phiên bản đều hoạt động) Màn hình LCD 16 × 2 Bàn phím 4 × 4 Pin 9VBreadboard và dây kết nối

Bước 2: Sơ đồ mạch

Sơ đồ mạch
Sơ đồ mạch

Bước 3: Chương trình Máy tính Arduino

Chương trình Arduino hoàn chỉnh cho dự án này được đưa ra ở phần cuối của dự án này. Mã được chia thành các đoạn nhỏ có ý nghĩa và được giải thích bên dưới. Như đã nói trước đó, chúng ta sẽ giao diện màn hình LCD và bàn phím với Arduino bằng cách sử dụng các thư viện. Vì vậy, trước tiên hãy thêm chúng vào Arduino IDE của chúng tôi. Thư viện cho LCD đã được bao gồm trong Arduino của bạn theo mặc định, vì vậy chúng tôi không cần phải lo lắng về nó. Đối với thư viện Bàn phím bấm vào liên kết để tải xuống từ Github. Bạn sẽ nhận được một tệp ZIP, sau đó thêm lib này vào Arduino bằng Sketch -> Bao gồm Thư viện -> Thêm tệp. ZIP và trỏ vị trí đến tệp đã tải xuống này. Sau khi hoàn tất, tất cả chúng ta đã sẵn sàng để lập trình. Mặc dù chúng ta đã sử dụng thư viện để sử dụng bàn phím, chúng ta phải đề cập đến một số chi tiết (được hiển thị bên dưới) về bàn phím của Arduino. Biến ROWS và COLS sẽ cho biết bàn phím của chúng ta có bao nhiêu hàng và cột và sơ đồ bàn phím hiển thị thứ tự các phím hiện diện trên bàn phím. Bàn phím mà tôi đang sử dụng trong dự án này trông như thế này dưới đây đối với bản đồ bàn phím cũng thể hiện tương tự. // Bốn hàng biểu tượng byte COLS = 4; // Ba cột // Xác định các khóa Keymapchar [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', ' B '}, {' 7 ',' 8 ',' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; byte rowPins [ROWS] = {0, 1, 2, 3}; // Kết nối bàn phím ROW0, ROW1, ROW2 và ROW3 với các chân Arduino này.byte colPins [COLS] = {4, 5, 6, 7}; // Kết nối bàn phím COL0, COL1 và COL2 với các chân Arduino này. Khi chúng ta đã đề cập đến loại bàn phím chúng ta đang sử dụng và cách kết nối nó, chúng ta có thể tạo bàn phím bằng các chi tiết đó bằng cách sử dụng dòng bên dướiKeypad kpd = Keypad (makeKeymap (các phím), rowPins, colPins, ROWS, COLS); // Tạo bàn phím Tương tự, chúng ta cũng phải biết các chân của Arduino mà LCD được kết nối với. Theo sơ đồ mạch của chúng tôi, các định nghĩa sẽ giống như dưới đây: int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Các chân mà LCD được kết nốiLiquidCrystal lcd (rs, en, d4, d5, d6, d7); // Tạo LCD Bên trong hàm setup, chúng ta chỉ hiển thị tên của dự án và sau đó tiếp tục vòng lặp while nơi dự án chính nằm. những gì đang được nhập và sau đó chuyển đổi nó thành một biến khi nhấn “=”, chúng ta phải tính toán kết quả và cuối cùng hiển thị nó trên màn hình LCD. Đây chính xác là những gì được thực hiện bên trong hàm vòng lặp như hình dưới đâykey = kpd.getKey (); // lưu trữ giá trị của phím được nhấn trong một charif (key! = NO_KEY) DetectButtons (); if (result == true) CalculResult (); DisplayResult (); Điều gì xảy ra bên trong mỗi chức năng được giải thích bằng cách sử dụng các dòng bình luận, hãy xem qua đoạn mã hoàn chỉnh bên dưới, tìm hiểu nó để hiểu nó thực sự hoạt động như thế nào. Nếu bạn có bất kỳ nghi ngờ nào về một dòng cụ thể, hãy sử dụng phần bình luận hoặc diễn đàn.

Bước 4:

Bước 5: Làm việc với Máy tính Arduino

Hoạt động của Máy tính Arduino
Hoạt động của Máy tính Arduino

Thực hiện các kết nối theo sơ đồ mạch và tải lên mã bên dưới. Nếu nó hiển thị lỗi, hãy đảm bảo rằng bạn đã thêm thư viện theo hướng dẫn ở trên. Bạn cũng có thể thử mô phỏng để kiểm tra xem vấn đề có phải do phần cứng của bạn hay không. Nếu mọi thứ được thực hiện đúng như dự kiến, thì phần cứng của bạn sẽ trông giống như thế này bên dưới với màn hình LCD hiển thị điều này được liệt kê bên dưới Ký tự trên bàn phím Được coi là “A” Phép cộng (+) “B” Phép trừ (-) “C” Phép nhân (*) “D” Phép chia (/) “*” Xóa (C) “#” Bằng (=) Bạn có thể sử dụng một điểm đánh dấu để viết lên những gì mà mỗi nút thực sự đại diện. Sau khi hoàn thành, bạn có thể trực tiếp bắt đầu sử dụng máy tính. Nhập số và sẽ xuất hiện trên dòng thứ hai, nhấn toán hạng và nhập số thứ hai của bạn, cuối cùng nhấn phím “#” để nhận kết quả. Bạn cũng có thể thử xây dựng máy tính Arduino dựa trên Màn hình cảm ứng này.

Bước 6: Mã

/ * * Chương trình máy tính bàn phím Arduino * / # bao gồm // Tệp tiêu đề cho màn hình LCD từ https://www.arduino.cc/en/Reference/LiquidCrystal#include // Tệp tiêu đề cho Bàn phím từ https://github.com/ Chris - A / Keypadconst byte ROWS = 4; // Bốn hàng biểu tượng byte COLS = 4; // Ba cột // Xác định các khóa Keymapchar [ROWS] [COLS] = {{'7', '8', '9', 'D'}, {'4', '5', '6', ' C '}, {' 1 ',' 2 ',' 3 ',' B '}, {' * ',' 0 ',' # ',' A '}}; byte rowPins [ROWS] = {0, 1, 2, 3}; // Kết nối bàn phím ROW0, ROW1, ROW2 và ROW3 với các chân Arduino này.byte colPins [COLS] = {4, 5, 6, 7}; // Kết nối bàn phím COL0, COL1 và COL2 với các chân Arduino này. Keypad kpd = Keypad (makeKeymap (phím), rowPins, colPins, ROWS, COLS); // Tạo Keypadconst int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Các chân mà LCD được kết nốiLiquidCrystal lcd (rs, en, d4, d5, d6, d7); dài Num1, Num2, Number; phím char, hành động; boolean result = false; void setup () {lcd.begin (16, 2); // Chúng tôi đang sử dụng màn hình LCD 16 * 2 lcd.print ("Máy tính tự làm"); // Hiển thị thông báo giới thiệu lcd.setCursor (0, 1); // đặt con trỏ ở cột 0, dòng 1 lcd.print ("- CircuitDigest"); // Hiển thị độ trễ tin nhắn giới thiệu (2000); // Chờ màn hình hiển thị thông tin lcd.clear (); // Sau đó làm sạch nó} void loop () {key = kpd.getKey (); // lưu trữ giá trị của phím được nhấn trong một charif (key! = NO_KEY) DetectButtons (); if (result == true) CalculResult (); DisplayResult (); } void DetectButtons () {lcd.clear (); // Sau đó làm sạch nó if (key == '*') // Nếu nút hủy được nhấn {Serial.println ("Nút Hủy"); Số = Num1 = Num2 = 0; result = false;} if (key == '1') // Nếu Nút 1 được nhấn {Serial.println ("Nút 1"); if (Số == 0) Số = 1; else Số = (Số * 10) + 1; // Được nhấn 2 lần} if (key == '4') // Nếu Nút 4 được nhấn {Serial.println ("Nút 4"); if (Số == 0) Số = 4; else Số = (Số * 10) + 4; // Được nhấn 2 lần} if (key == '7') // Nếu Nút 7 được nhấn {Serial.println ("Nút 7"); if (Số == 0) Số = 7; else Số = (Số * 10) + 7; // Được nhấn hai lần} if (key == '0') {Serial.println ("Nút 0"); // Nút 0 được nhấn if (Number == 0) Number = 0; else Số = (Số * 10) + 0; // Được nhấn 2 lần} if (key == '2') // Nút 2 được nhấn {Serial.println ("Nút 2"); if (Số == 0) Số = 2; else Số = (Số * 10) + 2; // Được nhấn hai lần} if (key == '5') {Serial.println ("Nút 5"); if (Số == 0) Số = 5; else Số = (Số * 10) + 5; // Được nhấn hai lần} if (key == '8') {Serial.println ("Nút 8"); if (Số == 0) Số = 8; else Số = (Số * 10) + 8; // Được nhấn hai lần} if (key == '#') {Serial.println ("Nút bằng"); Num2 = Số; kết quả = true; } if (key == '3') {Serial.println ("Nút 3"); if (Số == 0) Số = 3; else Số = (Số * 10) + 3; // Được nhấn hai lần} if (key == '6') {Serial.println ("Nút 6"); if (Số == 0) Số = 6; else Số = (Số * 10) + 6; // Được nhấn hai lần} if (key == '9') {Serial.println ("Nút 9"); if (Số == 0) Số = 9; else Số = (Số * 10) + 9; // Được nhấn hai lần} if (key == 'A' || key == 'B' || key == 'C' || key == 'D') // Phát hiện các nút trên cột 4 {Num1 = Number; Số = 0; if (key == 'A') {Serial.println ("Phép cộng"); action = '+';} if (key == 'B') {Serial.println ("Phép trừ"); hành động = '-'; } if (key == 'C') {Serial.println ("Phép nhân"); action = '*';} if (key == 'D') {Serial.println ("Devesion"); action = '/';} delay (100); }} void InformResult () {if (action == '+') Number = Num1 + Num2; if (action == '-') Number = Num1-Num2; if (action == '*') Number = Num1 * Num2; if (action == '/') Number = Num1 / Num2; } void DisplayResult () {lcd.setCursor (0, 0); // đặt con trỏ ở cột 0, dòng 1 lcd.print (Num1); lcd.print (hành động); lcd.print (Num2); if (kết quả == true) {lcd.print ("="); lcd.print (Number);} // Hiển thị kết quả lcd.setCursor (0, 1); // đặt con trỏ đến cột 0, dòng 1 lcd.print (Number); // Hiển thị kết quả}

Đề xuất: