תוכן עניינים:
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-13 06:57
במדריך זה נלמד כיצד ליצור תפריטים, לקרוא טמפרטורה מחיישן TC74A0 ולהציג "ערכים" (במקרה זה מספרי טלפונים) באופן אינסופי, אך מוגבל לזיכרון של הארדואינו.
אנו נשתמש
-מערכים
-צג קריסטל נוזלי
-לוח מקשים
מדריך למשתמש כלול בשלב האחרון.
שלב 1: רכיבים
ארדואינו אונו
· לוח מקשים 4x4
· חיישן טמפרטורה דיגיטלי TC74A0
· מודול LCD I2c 16x2
· תצוגת קריסטל נוזלי 16x2
· חוטי מגשר
· לוח לחם
· מחשב אישי
· Arduino IDE
· כבל העברה
שלב 2: חיווט רכיבים
חיישן טמפ 'ו- LCD מחוברים בקו זהה ל- SDA ו- SCL (A4, A5)
LCD (מודול I2c)
o SDA ל- A5 על Arduino
o SCL ל- A4 על Arduino
o VCC עד 5V בארדואינו
o GND ל- GND ב- Arduino
· 4 x 4 לוח מקשים
o פין 1 - 8 בלוח המקשים המחובר לסיכה 9 - 2 בארדואינו בהתאמה
חיישן טמפ 'TC74A0
o סיכה TC74A0 2 ל- SDA ב- Arduino
o סיכה TC74A0 3 ל- GND ב- Arduino
o סיכה TC74A0 4 ל- SCL ב- Arduino
o פין TC74A0 5 עד 5V על Arduino
שלב 3: קוד
#include // כולל ספריות בעת הידור
#לִכלוֹל
#לִכלוֹל
#הגדר סיסמה_אורך 5
#הגדר פקודה_אורך 3
#define CellNumber 10
משתמשי int = 0;
int תצוגה = 0;
int address = 72; // tc74a0 כתובת
int I = 0;
int USER;
int X = 0;
int XY = 0;
int temp;
int tempPre = 0;
char userNum [10] [10] = {{}, {}, {}};
נתוני char [Password_Lenght];
char Master [Password_Lenght] = "5466"; //סיסמה
char ExitData [Command_Lenght]; //
char Master1 [Command_Lenght] = "**"; //
char MenuItem;
char CELLArrayA [10];
char CELLArrayB [10];
char CELLArrayC [10];
שורות const byte = 4; // ארבע שורות
const byte COLS = 4; // ארבע עמודות
בתים rowPins [ROWS] = {5, 4, 3, 2};
בת colPins [COLS] = {9, 8, 7, 6};
בייט data_count = 0, master_count = 0;
bool Pass_is_good;
LiquidCrystal_I2C lcd (0x26, 16, 2);
char 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); // זה יוצר את ה- Monitor Serial
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 INSTRUCTABLE";
lcd.setCursor (2, 2);
lcd.print (myString);
עיכוב (2500);
for (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 ("A B C D");
lcd.setCursor (0, 0);
lcd.print ("תפריט ראשי");
תצוגה = 2;
עיכוב (100);
לשבור;
}
מקרה 2:
{
char customKey = customKeypad.getKey ();
לעבור (customKey)
{
מקרה 'א':
{
Serial.println ("A נלחץ");
StoreUser ();
לשבור;
}
מקרה 'ב':
{
Serial.println ("B נלחץ");
אם (משתמשים == 0) {
lcd.clear ();
lcd.print ("אין משתמשים שנשמרו");
עיכוב (3000);
lcd.clear ();
תצוגה = 1;
לשבור;
}
DisplayUsers (); לשבור;
}
מקרה 'C':
{
Serial.println ("C נלחץ"); // בשימוש במהלך הבדיקה
int ext = 0;
בעוד (! ext) {
char ch;
temp = TempMenu ();
אם (temp! = tempPre) {
lcd.clear ();
lcd.print ("טמפרטורה");
lcd.setCursor (0, 1);
lcd.print (טמפ ');
lcd.print ("C");
tempPre = temp;
עיכוב (500);
}
ch = customKeypad.getKey ();
if (ch == ' *') // יציאה מתפריט טמפרטורה (אם * לחוץ)
{
ext = 1;
lcd.clear ();
תצוגה = 1;
}
}
לשבור;
TempMenu ();
לשבור;
}
מקרה '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;
}
}
}
}
}
// פונקציות מותאמות אישית להתקשרות לערכים או להליכים
סיסמה בטלה ()
{
char customKey = customKeypad.getKey ();
אם (customKey) // מוודא שלוחץ על מקש בפועל, שווה ל- (customKey! = NO_KEY)
{
Data [data_count] = customKey; // לאחסן צ'אר במערך נתונים
lcd.setCursor (data_count, 1); // הזז את הסמן כדי להציג כל תו חדש
lcd.print ("*"); // הדפס צ'אר בסמן האמור
data_count ++; // הגדילו את מערך הנתונים ב -1 לאחסון תווים חדשים, עקבו גם אחר מספר התווים שהוזנו
}
אם (data_count == Password_Lenght-1) // אם אינדקס המערך שווה למספר התווים הצפויים, השווה נתונים למאסטר
{
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("הסיסמה היא");
אם (! strcmp (Data, Master)) // שווה ל- (strcmp (Data, Master) == 0)
{
lcd.print ("טוב");
lcd.clear ();
תצוגה = 1;
}
אַחֵר
lcd.print ("רע");
עיכוב (1000); // הוסיף עיכוב של שנייה אחת כדי לוודא שהסיסמה מוצגת במלואה על המסך לפני שהיא מתנקה.
lcd.clear ();
נקה נתונים();
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("הזן סיסמה");
}
}
int TempMenu ()
{
Wire.beginTransmission (כתובת);
Wire.write (0);
Wire.endTransmission ();
Wire.requestFrom (כתובת, 1);
while (Wire.available () == 0);
int c = Wire.read ();
החזר ג;
}
void clearData ()
{
בעוד (data_count! = 0)
{// ניתן להשתמש בזה לכל גודל מערך, נתונים [data_count--] = 0; // מערך ברור לנתונים חדשים
}
}
void StoreUser ()
{
int ext = 0;
משתמש int;
char ch;
בעוד (! ext) {
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 [user - 1] = ch;
}
עיכוב (500);
lcd.clear ();
lcd.print ("המשך");
lcd.setCursor (0, 1);
lcd.print ("* כן # לא");
ch = customKeypad.waitForKey ();
if (ch == '*') {
x = 1;
}
if (ch == '#') {
x = 1;
ext = 1;
lcd.clear ();
תצוגה = 1;
}
}
משתמשים ++;
}
}
משתמשי DisplayUs ()
{
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 אפשרויות אפשריות לניווט בין הפונקציות הזמינות השונות.
· א - הזן מספרי טלפון ניידים של משתמשים.
o הזן 10 ספרות כדי לשמור משתמש במערכת
o לאחר הזנת 10 ספרות לחץ על " *" כדי להוסיף עוד משתמשים, או הקש על "#" כדי לחזור לתפריט הראשי
· B - הצגת משתמשים שנשמרו
o המשתמשים יגללו על פני המסך, הם מוצגים למשך 3 שניות כל אחד, ברגע שכל המשתמשים יוצגו הדף ייסגר ויחזור לתפריט הראשי.
o אם לא נוספו משתמשים באפשרות התפריט A, הוא יציג "אין משתמשים שנשמרו".
· C - מציג טמפרטורה חיה
o לחץ על " *" כדי לחזור לתפריט הראשי
· D - הצגת טקסט קצר
o מציג את שם היוצר ואת הנושא שאליו נאסף עם תאריך.