Mục lục:

Arduino UNO (tạo menu và chức năng): 4 bước
Arduino UNO (tạo menu và chức năng): 4 bước

Video: Arduino UNO (tạo menu và chức năng): 4 bước

Video: Arduino UNO (tạo menu và chức năng): 4 bước
Video: Arduino | Tạo menu LCD đơn giản | Menu Arduino đơn giản 2024, Tháng bảy
Anonim
Arduino UNO (tạo Menu và Chức năng)
Arduino UNO (tạo Menu và Chức năng)
Arduino UNO (tạo Menu và Chức năng)
Arduino UNO (tạo Menu và Chức năng)

Trong phần hướng dẫn này, chúng ta sẽ khám phá cách tạo menu, đọc nhiệt độ từ cảm biến TC74A0 và hiển thị "giá trị" (trong trường hợp này là số điện thoại di động) theo cách vô hạn, nhưng giới hạn ở bộ nhớ trên bo mạch của arduino.

Chúng tôi sẽ sử dụng

-Arrays

-Màn hình tinh thể lỏng

-Keypad

Hướng dẫn sử dụng bao gồm trong bước cuối cùng.

Bước 1: Các thành phần

Arduino Uno

· Bàn phím 4x4

· Cảm biến nhiệt độ kỹ thuật số TC74A0

· Mô-đun LCD I2c 16x2

· Màn hình tinh thể lỏng 16x2

· Dây nhảy

· Breadboard

· Máy tính cá nhân

· Arduino IDE

· Cáp chuyển

Bước 2: Nối dây thành phần

CẢM BIẾN TEMP VÀ LCD ĐƯỢC KẾT NỐI TRÊN CÙNG MỘT DÒNG ĐẾN SDA VÀ SCL (A4, A5)

LCD (Mô-đun I2c)

o SDA đến A5 trên Arduino

o SCL sang A4 trên Arduino

o VCC đến 5V trên Arduino

o GND sang GND trên Arduino

· Bàn phím 4 x 4

o Chân 1 - 8 trên Bàn phím được kết nối với chân 9 - 2 tương ứng trên Arduino

Cảm biến nhiệt độ TC74A0

o TC74A0 chân 2 đến SDA trên Arduino

o TC74A0 chân 3 đến GND trên Arduino

o TC74A0 chân 4 đến SCL trên Arduino

o TC74A0 chân 5 đến 5V trên Arduino

Bước 3: Mã

#include // Bao gồm các thư viện khi biên dịch

#bao gồm

#bao gồm

#define Password_Lenght 5

#define Command_Lenght 3

#define CellNumber 10

int người dùng = 0;

int Hiển thị = 0;

địa chỉ int = 72; // ĐỊA CHỈ tc74a0

int I = 0;

int USER;

int X = 0;

int XY = 0;

int tạm thời;

int tempPre = 0;

char userNum [10] [10] = {{}, {}, {}};

char Dữ liệu [Mật khẩu_Lenght];

char Master [Password_Lenght] = "5466"; //MẬT KHẨU MỞ KHÓA

char ExitData [Command_Lenght]; //

char Master1 [Command_Lenght] = "**"; //

char MenuItem;

char CELLArrayA [10];

char CELLArrayB [10];

char CELLArrayC [10];

const byte ROWS = 4; // bốn hàng

const byte COLS = 4; // bốn cột

byte rowPins [ROWS] = {5, 4, 3, 2};

byte colPins [COLS] = {9, 8, 7, 6};

byte data_count = 0, master_count = 0;

bool Pass_is_good;

Màn hình LCD LiquidCrystal_I2C (0x26, 16, 2);

char hexaKeys [ROWS] [COLS] = // BẮT ĐẦU BÀN PHÍM

{

{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}

};

Keypad customKeypad = Bàn phím (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);

void setup ()

{

Serial.begin (9600); // điều này tạo ra Serial Monitor

Wire.begin (); // điều này tạo ra một đối tượng Wire

lcd.begin (16, 2);

LCD đèn nền();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Vui lòng đợi 3"); //ĐANG TẢI MÀN HÌNH

chậm trễ (1000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Vui lòng đợi 2");

chậm trễ (1000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Vui lòng đợi 1");

chậm trễ (300);

lcd.clear ();

String myString = "ARDUINO HƯỚNG DẪN";

lcd.setCursor (2, 2);

lcd.print (myString);

chậm trễ (2500);

for (int scrollCounter = 0; scrollCounter <24; scrollCounter ++)

{

lcd.scrollDisplayLeft ();

chậm trễ (300);

}

lcd.clear ();

lcd.print ("Nhập Mật khẩu");

}

void loop ()

{

switch (Hiển thị) // CHÚNG TÔI ĐANG Ở ĐÂU TRONG MENU CHÍNH

{// NGƯỜI DÙNG ĐÃ BÁO A, B, C, D

trường hợp 0:

{

Mật khẩu();

}

nghỉ;

trường hợp 1:

{

lcd.clear ();

lcd.setCursor (0, 1);

lcd.print ("A B C D");

lcd.setCursor (0, 0);

lcd.print ("Menu Chính");

Hiển thị = 2;

chậm trễ (100);

nghỉ;

}

trường hợp 2:

{

char customKey = customKeypad.getKey ();

chuyển đổi (customKey)

{

trường hợp 'A':

{

Serial.println ("A đã được nhấn");

StoreUser ();

nghỉ;

}

trường hợp 'B':

{

Serial.println ("B được nhấn");

if (người dùng == 0) {

lcd.clear ();

lcd.print ("KHÔNG CÓ NGƯỜI DÙNG TIẾT KIỆM");

chậm trễ (3000);

lcd.clear ();

Hiển thị = 1;

nghỉ;

}

DisplayUsers (); nghỉ;

}

trường hợp 'C':

{

Serial.println ("C đã được nhấn"); // KIỂM TRA TRONG THỜI GIAN ĐÃ SỬ DỤNG

int ext = 0;

trong khi (! ext) {

char ch;

temp = TempMenu ();

if (temp! = tempPre) {

lcd.clear ();

lcd.print ("Temparature");

lcd.setCursor (0, 1);

lcd.print (tạm thời);

lcd.print ("C");

tempPre = tạm thời;

chậm trễ (500);

}

ch = customKeypad.getKey ();

if (ch == '*') // THOÁT MENU NHIỆT ĐỘ (if * PRESSED)

{

ext = 1;

lcd.clear ();

Hiển thị = 1;

}

}

nghỉ;

TempMenu ();

nghỉ;

}

trường hợp 'D':

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("NUA PRAC");

lcd.setCursor (0, 1);

lcd.print ("JB SCHOEMAN");

chậm trễ (3000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("THÁNG 5, 2019");

lcd.setCursor (0, 1);

lcd.print ("CC OOSTHUIZEN");

chậm trễ (3000);

lcd.clear ();

Hiển thị = 1;

}

}

}

}

}

// CÁC CHỨC NĂNG TÙY CHỈNH ĐỂ GỌI GIÁ TRỊ HOẶC THỦ TỤC

void Password ()

{

char customKey = customKeypad.getKey ();

if (customKey) // đảm bảo rằng một phím thực sự được nhấn, bằng (customKey! = NO_KEY)

{

Dữ liệu [data_count] = customKey; // lưu trữ char vào mảng dữ liệu

lcd.setCursor (data_count, 1); // di chuyển con trỏ để hiển thị từng ký tự mới

lcd.print ("*"); // in char tại con trỏ đã nói

data_count ++; // tăng mảng dữ liệu lên 1 để lưu trữ các ký tự mới, đồng thời theo dõi số ký tự đã nhập

}

if (data_count == Password_Lenght-1) // nếu chỉ số mảng bằng số ký tự mong đợi, hãy so sánh dữ liệu với cái chính

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Mật khẩu là");

if (! strcmp (Data, Master)) // bằng (strcmp (Data, Master) == 0)

{

lcd.print ("Tốt");

lcd.clear ();

Hiển thị = 1;

}

khác

lcd.print ("Lỗi");

delay (1000); // đã thêm 1 giây trễ để đảm bảo mật khẩu được hiển thị hoàn toàn trên màn hình trước khi bị xóa.

lcd.clear ();

xóa dữ liệu();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Nhập Mật khẩu");

}

}

int TempMenu ()

{

Wire.beginTransmission (địa chỉ);

Wire.write (0);

Wire.endTransmission ();

Wire.requestFrom (địa chỉ, 1);

while (Wire.available () == 0);

int c = Wire.read ();

trả lại c;

}

void clearData ()

{

while (data_count! = 0)

{// Điều này có thể được sử dụng cho bất kỳ kích thước mảng nào, Dữ liệu [data_count--] = 0; // xóa mảng cho dữ liệu mới

}

}

void StoreUser ()

{

int ext = 0;

người dùng int;

char ch;

trong khi (! ext) {

lcd.clear ();

lcd.print ("Nhập Người dùng");

user = người dùng + 1;

lcd.print (người dùng);

int x = 0;

trong khi (! x) {

for (int i = 0; i <10; i ++) {

ch = customKeypad.waitForKey ();

lcd.setCursor (i, 1);

lcd.print (ch);

userNum [user - 1] = ch;

}

chậm trễ (500);

lcd.clear ();

lcd.print ("Tiếp tục");

lcd.setCursor (0, 1);

lcd.print ("* co # khong");

ch = customKeypad.waitForKey ();

if (ch == '*') {

x = 1;

}

if (ch == '#') {

x = 1;

ext = 1;

lcd.clear ();

Hiển thị = 1;

}

}

người dùng ++;

}

}

void DisplayUsers ()

{

lcd.clear ();

for (int i = 0; i <người dùng; i ++) {

lcd.print ("Người dùng đã Lưu");

lcd.print (i + 1);

for (int u = 0; u <10; u ++) {

lcd.setCursor (u, 1);

lcd.print (userNum [u]);

}

chậm trễ (2000);

lcd.clear ();

Hiển thị = 1;

}

}

Bước 4: HƯỚNG DẪN SỬ DỤNG

1. Khi bật dự án, màn hình tải hoặc màn hình chào mừng sẽ xuất hiện.

2. Màn hình “Enter Password” sẽ xuất hiện, màn hình này cho phép bạn nhập 4 ký tự, chữ cái hoặc số, mật khẩu chính xác là: 5466, điều này sẽ cấp cho bạn quyền truy cập vào menu chính.

3. Sau khi nhập đúng mật khẩu, menu chính sẽ xuất hiện với 4 tùy chọn khả thi để điều hướng các chức năng khả dụng khác nhau.

· A - Nhập số điện thoại di động của người dùng.

o Nhập 10 chữ số để lưu người dùng vào hệ thống

o Sau khi nhập xong 10 chữ số, nhấn “*“để thêm người dùng khác hoặc nhấn “#” để quay lại menu chính

· B - Hiển thị người dùng đã lưu

o Người dùng sẽ cuộn qua màn hình, chúng được hiển thị trong 3 giây mỗi lần, ngay sau khi tất cả người dùng được hiển thị, trang sẽ đóng và trở lại menu chính.

o Nếu không có người dùng nào được thêm vào menu tùy chọn A, nó sẽ hiển thị “KHÔNG CÓ NGƯỜI DÙNG TIẾT KIỆM”.

· C - Hiển thị nhiệt độ trực tiếp

o Nhấn “*“để thoát trở lại menu chính

· D - Hiển thị văn bản ngắn

o Hiển thị tên của người sáng tạo và chủ đề được biên soạn cùng với ngày tháng.

Đề xuất: