สารบัญ:

Arduino UNO (การสร้างเมนูและฟังก์ชัน): 4 ขั้นตอน
Arduino UNO (การสร้างเมนูและฟังก์ชัน): 4 ขั้นตอน

วีดีโอ: Arduino UNO (การสร้างเมนูและฟังก์ชัน): 4 ขั้นตอน

วีดีโอ: Arduino UNO (การสร้างเมนูและฟังก์ชัน): 4 ขั้นตอน
วีดีโอ: สอนการสร้างเมนูแสดงผลบนจอ LCD 2024, พฤศจิกายน
Anonim
Arduino UNO (การสร้างเมนูและฟังก์ชัน)
Arduino UNO (การสร้างเมนูและฟังก์ชัน)
Arduino UNO (การสร้างเมนูและฟังก์ชัน)
Arduino UNO (การสร้างเมนูและฟังก์ชัน)

ในคำแนะนำนี้ เราจะสำรวจวิธีสร้างเมนู อ่านอุณหภูมิจากเซ็นเซอร์ TC74A0 และแสดง "ค่า" (ในกรณีนี้คือหมายเลขโทรศัพท์มือถือ) ในลักษณะที่ไม่มีที่สิ้นสุด แต่จำกัดเฉพาะหน่วยความจำบนบอร์ดของ Arduino

เราจะใช้

-อาร์เรย์

-จอแสดงผลคริสตัลเหลว

-ปุ่มกด

คู่มือผู้ใช้รวมอยู่ในขั้นตอนสุดท้าย

ขั้นตอนที่ 1: ส่วนประกอบ

Arduino Uno

·ปุ่มกด 4x4

· เซ็นเซอร์อุณหภูมิดิจิตอล TC74A0

· โมดูล LCD I2c 16x2

· จอแสดงผลคริสตัลเหลว 16x2

· สายจัมเปอร์

·เขียงหั่นขนม

· คอมพิวเตอร์ส่วนบุคคล

· Arduino IDE

· สายเคเบิลโอน

ขั้นตอนที่ 2: การเดินสายส่วนประกอบ

เซ็นเซอร์อุณหภูมิและ LCD เชื่อมต่อกับสายเดียวกันกับ SDA และ SCL (A4, A5)

จอแอลซีดี (โมดูล I2c)

o SDA เป็น A5 บน Arduino

o SCL ถึง A4 บน Arduino

o VCC ถึง 5V บน Arduino

o GND เป็น GND บน Arduino

· 4 x 4 ปุ่มกด

o พิน 1 – 8 บนปุ่มกดที่เชื่อมต่อกับพิน 9 – 2 บน Arduino ตามลำดับ

TC74A0 เซ็นเซอร์อุณหภูมิ

o TC74A0 พิน 2 ถึง SDA บน Arduino

o TC74A0 พิน 3 ถึง GND บน Arduino

o TC74A0 พิน 4 ถึง SCL บน Arduino

o TC74A0 พิน 5 ถึง 5V บน Arduino

ขั้นตอนที่ 3: รหัส

#include //รวมไลบรารี่เมื่อคอมไพล์

#รวม

#รวม

#define รหัสผ่าน_ความยาว 5

#define Command_Lenght 3

#define CellNumber 10

ผู้ใช้ int = 0;

int จอแสดงผล = 0;

ที่อยู่ int= 72; //tc74a0 ที่อยู่

int ฉัน = 0;

int USER;

int X = 0;

int XY = 0;

อุณหภูมิภายใน;

int tempPre = 0;

ถ่าน userNum[10][10] = {{}, {}, {}};

ถ่านข้อมูล[Password_Lenght];

char Master[Password_Lenght] = "5466"; //รหัสผ่าน

ถ่าน ExitData[Command_Lenght]; //

ถ่าน Master1[Command_Lenght] = "**";//

ถ่าน MenuItem;

ถ่าน CELLArrayA[10];

ถ่าน CELLArrayB[10];

ถ่าน CELLArrayC[10];

ไบต์ const ROWS = 4; //สี่แถว

const ไบต์ COLS = 4; //สี่คอลัมน์

ไบต์ rowPins[ROWS] = {5, 4, 3, 2};

ไบต์ colPins[COLS] = {9, 8, 7, 6};

ไบต์ data_count = 0, master_count = 0;

บูล Pass_is_good;

LiquidCrystal_I2C จอแอลซีดี (0x26, 16, 2);

ถ่าน hexaKeys[ROWS][COLS] = //เริ่มต้นแป้นพิมพ์

{

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

};

ปุ่มกด customKeypad = ปุ่มกด (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);

การตั้งค่าเป็นโมฆะ ()

{

Serial.begin(9600); // สิ่งนี้สร้าง Serial Monitor

Wire.begin(); //สิ่งนี้สร้างวัตถุ Wire

lcd.begin(16, 2);

LCD.backlight();

lcd.clear();

lcd.setCursor(0, 0);

lcd.print("กรุณารอ 3"); //กำลังโหลดหน้าจอ

ล่าช้า (1000);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print("กรุณารอ 2");

ล่าช้า (1000);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print("กรุณารอ 1");

ล่าช้า (300);

lcd.clear();

String myString = "คำแนะนำของ ARDUINO";

lcd.setCursor(2, 2);

lcd.print (myString);

ล่าช้า (2500);

สำหรับ (int scrollCounter=0;scrollCounter<24;scrollCounter++)

{

lcd.scrollDisplayLeft();

ล่าช้า (300);

}

lcd.clear();

lcd.print("ใส่รหัสผ่าน");

}

วงเป็นโมฆะ ()

{

สวิตช์ (แสดงผล) // เราอยู่ที่ไหนในเมนูหลัก

{ // ผู้ใช้กด A, B, C, D

กรณีที่ 0:

{

รหัสผ่าน();

}

หยุดพัก;

กรณีที่ 1:

{

lcd.clear();

lcd.setCursor(0, 1);

lcd.print("เอ บี ซี ดี");

lcd.setCursor(0, 0);

lcd.print("เมนูหลัก");

จอแสดงผล = 2;

ล่าช้า (100);

หยุดพัก;

}

กรณีที่ 2:

{

ถ่าน customKey = customKeypad.getKey();

สวิตช์ (คีย์กำหนดเอง)

{

กรณี 'A':

{

Serial.println("กด A");

StoreUser();

หยุดพัก;

}

กรณี 'B':

{

Serial.println("กด B");

ถ้า (ผู้ใช้ == 0) {

lcd.clear();

lcd.print("ไม่มีผู้ใช้ที่บันทึกไว้");

ล่าช้า (3000);

lcd.clear();

แสดงผล = 1;

หยุดพัก;

}

ผู้ใช้ดิสเพลย์(); หยุดพัก;

}

กรณี 'C':

{

Serial.println("กด C"); //ใช้ระหว่างการทดสอบ

int ต่อ = 0;

ในขณะที่ (!ต่อ) {

ถ่าน ch;

อุณหภูมิ = TempMenu ();

ถ้า (temp != tempPre) {

lcd.clear();

lcd.print("อุณหภูมิ");

lcd.setCursor(0, 1);

lcd.print (อุณหภูมิ);

lcd.print (" C");

tempPre = อุณหภูมิ;

ล่าช้า (500);

}

ch = customKeypad.getKey();

if (ch == '*') //EXIT TEMPERATURE MENU (ถ้า * กด)

{

ต่อ = 1;

lcd.clear();

แสดงผล = 1;

}

}

หยุดพัก;

เมนูชั่วคราว();

หยุดพัก;

}

กรณี 'D':

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print("NUA PRAC");

lcd.setCursor(0, 1);

lcd.print ("JB SCHOEMAN");

ล่าช้า (3000);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print("พฤษภาคม 2019");

lcd.setCursor(0, 1);

lcd.print("CC OOSTHUIZEN");

ล่าช้า (3000);

lcd.clear();

แสดงผล = 1;

}

}

}

}

}

// ฟังก์ชั่นที่กำหนดเองเพื่อเรียกค่าหรือขั้นตอน

รหัสผ่านเป็นโมฆะ ()

{

ถ่าน customKey = customKeypad.getKey();

if (customKey) // ตรวจสอบให้แน่ใจว่ามีการกดปุ่มจริง เท่ากับ (customKey != NO_KEY)

{

ข้อมูล[data_count] = customKey; // เก็บถ่านไว้ใน data array

lcd.setCursor(data_count, 1); // เลื่อนเคอร์เซอร์เพื่อแสดงอักขระใหม่แต่ละตัว

lcd.print("*"); // พิมพ์อักขระที่เคอร์เซอร์ดังกล่าว

data_count++; // เพิ่มอาร์เรย์ข้อมูลขึ้น 1 เพื่อเก็บถ่านใหม่ และติดตามจำนวนตัวอักษรที่ป้อน

}

if(data_count == Password_Lenght-1) // ถ้าดัชนีอาร์เรย์เท่ากับจำนวนอักขระที่คาดไว้ ให้เปรียบเทียบข้อมูลกับต้นแบบ

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print("รหัสผ่านคือ");

if(!strcmp(Data, Master))) // เท่ากับ (strcmp(Data, Master) == 0)

{

lcd.print("ดี");

lcd.clear();

แสดงผล = 1;

}

อื่น

lcd.print("แย่");

ล่าช้า (1000); // เพิ่มการหน่วงเวลา 1 วินาทีเพื่อให้แน่ใจว่ารหัสผ่านจะแสดงบนหน้าจออย่างสมบูรณ์ก่อนที่จะถูกล้าง

lcd.clear();

ข้อมูลชัดเจน();

lcd.clear();

lcd.setCursor(0, 0);

lcd.print("ใส่รหัสผ่าน");

}

}

int อุณหภูมิเมนู()

{

Wire.beginการส่ง(ที่อยู่);

Wire.write(0);

Wire.endTransmission();

Wire.requestFrom(ที่อยู่ 1);

ในขณะที่ (Wire.available() == 0);

int c = Wire.read();

กลับค;

}

เป็นโมฆะ clearData()

{

ในขณะที่ (data_count !=0)

{ // สามารถใช้กับอาร์เรย์ขนาดใดก็ได้

ข้อมูล[data_count--] = 0; //ล้างอาร์เรย์สำหรับข้อมูลใหม่

}

}

เป็นโมฆะ StoreUser()

{

int ต่อ = 0;

ผู้ใช้ int;

ถ่าน ch;

ในขณะที่ (!ต่อ) {

lcd.clear();

lcd.print("ป้อนผู้ใช้");

ผู้ใช้ = ผู้ใช้ + 1;

lcd.print (ผู้ใช้);

int x = 0;

ในขณะที่ (!x) {

สำหรับ (int i = 0; i < 10; i++) {

ch = customKeypad.waitForKey();

lcd.setCursor(i, 1);

lcd.print(ch);

userNum[ผู้ใช้ - 1] = ch;

}

ล่าช้า (500);

lcd.clear();

lcd.print("ดำเนินการต่อ");

lcd.setCursor(0, 1);

lcd.print("* ใช่ # ไม่ใช่");

ch = customKeypad.waitForKey();

ถ้า (ch == '*') {

x = 1;

}

ถ้า (ch == '#') {

x = 1;

ต่อ = 1;

lcd.clear();

แสดงผล = 1;

}

}

ผู้ใช้++;

}

}

เป็นโมฆะ DisplayUsers()

{

lcd.clear();

สำหรับ (int i = 0; i < users; i++) {

lcd.print("ผู้ใช้ที่บันทึกไว้");

lcd.print(i + 1);

สำหรับ (int u = 0; u < 10; u++) {

lcd.setCursor(u, 1);

lcd.print(userNum[u]);

}

ล่าช้า (2000);

lcd.clear();

แสดงผล = 1;

}

}

ขั้นตอนที่ 4: คู่มือผู้ใช้

1. เมื่อเปิดโปรเจ็กต์ หน้าจอการโหลดหรือหน้าจอต้อนรับจะปรากฏขึ้น

2. หน้าจอ "ป้อนรหัสผ่าน" จะปรากฏขึ้น หน้าจอนี้ให้คุณป้อนอักขระ 4 ตัว ตัวอักษรหรือตัวเลข รหัสผ่านที่ถูกต้องคือ 5466 ซึ่งจะให้คุณเข้าถึงเมนูหลักได้

3. เมื่อป้อนรหัสผ่านที่ถูกต้อง เมนูหลักจะปรากฏขึ้นพร้อมตัวเลือกที่เป็นไปได้ 4 ตัวเลือกเพื่อนำทางไปยังฟังก์ชันต่างๆ ที่มี

· A – ป้อนหมายเลขโทรศัพท์มือถือของผู้ใช้

o กรอกตัวเลข 10 หลักเพื่อบันทึกผู้ใช้เข้าระบบ

o หลังจากป้อน 10 หลักแล้ว ให้กด “* “เพื่อเพิ่มผู้ใช้ หรือกด “#” เพื่อออกจากเมนูหลัก

· B – แสดงผู้ใช้ที่บันทึกไว้

o ผู้ใช้จะเลื่อนผ่านหน้าจอ โดยจะแสดงครั้งละ 3 วินาที ทันทีที่ผู้ใช้ทั้งหมดปรากฏ หน้าจะปิดและกลับสู่เมนูหลัก

o หากไม่มีการเพิ่มผู้ใช้ในตัวเลือกเมนู A จะแสดง "NO SAVED USERS"

· C – แสดงอุณหภูมิสด

o กด “* “เพื่อออกจากเมนูหลัก

· D – แสดงข้อความสั้น

o แสดงชื่อผู้สร้างและหัวข้อที่รวบรวมไว้พร้อมวันที่

แนะนำ: