สารบัญ:
- ขั้นตอนที่ 1: ส่วนประกอบ
- ขั้นตอนที่ 2: การเดินสายส่วนประกอบ
- ขั้นตอนที่ 3: รหัส
- ขั้นตอนที่ 4: คู่มือผู้ใช้
วีดีโอ: Arduino UNO (การสร้างเมนูและฟังก์ชัน): 4 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
ในคำแนะนำนี้ เราจะสำรวจวิธีสร้างเมนู อ่านอุณหภูมิจากเซ็นเซอร์ 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 แสดงชื่อผู้สร้างและหัวข้อที่รวบรวมไว้พร้อมวันที่
แนะนำ:
อะแดปเตอร์ Arduino Nano เป็น Arduino Uno: 6 ขั้นตอน (พร้อมรูปภาพ)
อะแดปเตอร์ Arduino Nano เป็น Arduino Uno: Arduino Nano เป็นสมาชิกที่ดี ขนาดเล็ก และราคาถูกของตระกูล Arduino มันขึ้นอยู่กับชิป Atmega328 สิ่งที่ทำให้มีประสิทธิภาพเท่ากับ Arduino Uno พี่ชายที่ใหญ่ที่สุดของเขา แต่สามารถรับเงินน้อยกว่า ในอีเบย์ตอนนี้เวอร์ชั่นภาษาจีนสามารถข
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
Arduino 3.3V แบบสแตนด์อโลนพร้อมนาฬิกา 8 MHz ภายนอกที่ถูกตั้งโปรแกรมจาก Arduino Uno ผ่าน ICSP / ISP (พร้อมการตรวจสอบแบบอนุกรม!): 4 ขั้นตอน
Arduino 3.3V แบบสแตนด์อโลนพร้อมนาฬิกา 8 MHz ภายนอกที่ถูกตั้งโปรแกรมจาก Arduino Uno ผ่าน ICSP / ISP (พร้อมการตรวจสอบแบบอนุกรม!): วัตถุประสงค์: เพื่อสร้าง Arduino แบบสแตนด์อโลนที่ทำงานบน 3.3V จากนาฬิกาภายนอก 8 MHz ในการตั้งโปรแกรมผ่าน ISP (หรือที่เรียกว่า ICSP, การเขียนโปรแกรมซีเรียลในวงจร) จาก Arduino Uno (ทำงานที่ 5V) ในการแก้ไขไฟล์ bootloader และเบิร์น th
วิธีอัปโหลดโปรแกรม Arduino Pro Mini 328P โดยใช้ Arduino Uno: 6 ขั้นตอน
วิธีอัปโหลดโปรแกรม Arduino Pro Mini 328P โดยใช้ Arduino Uno: Arduino Pro Mini เป็นชิปบอร์ดที่เล็กที่สุดที่มีพิน I/O 14 อัน ทำงานในแรงดันไฟ 3.3 โวลต์ - 5 โวลต์ DC และง่ายต่อการอัปโหลดโค้ดในอุปกรณ์การเขียนโปรแกรมข้อมูลจำเพาะ: 14 พอร์ตอินพุต/เอาต์พุตดิจิตอล RX, TX, D2~D13, 8 พอร์ตอินพุตอนาล็อก A0~A7 1
Arduino-UNO ที่ทรงพลังกว่า Massduino-UNO: 9 ขั้นตอน
Arduino-UNO ที่ทรงพลังกว่า, Massduino-UNO: Massduino คืออะไร Massduino เป็นสายผลิตภัณฑ์ใหม่ที่รวมเอาการพัฒนาอุปกรณ์ต่อพ่วงแพลตฟอร์ม Arduino ที่หลากหลาย สะดวก และรวดเร็ว ต้นทุนต่ำและง่ายต่อการผลิตได้เปรียบในการผลิตขนาดใหญ่ โค้ด Arduino เกือบทั้งหมดสามารถเป็น