תוכן עניינים:

ארדואינו UNO (יצירת תפריטים ופונקציות): 4 שלבים
ארדואינו UNO (יצירת תפריטים ופונקציות): 4 שלבים

וִידֵאוֹ: ארדואינו UNO (יצירת תפריטים ופונקציות): 4 שלבים

וִידֵאוֹ: ארדואינו UNO (יצירת תפריטים ופונקציות): 4 שלבים
וִידֵאוֹ: ESP32 Tutorial 3 - Resistor, LED, Bredboard and First Project: Hello LED -ESP32 IoT Learnig kit 2024, יולי
Anonim
Arduino UNO (יצירת תפריטים ופונקציות)
Arduino UNO (יצירת תפריטים ופונקציות)
Arduino UNO (יצירת תפריטים ופונקציות)
Arduino UNO (יצירת תפריטים ופונקציות)

במדריך זה נלמד כיצד ליצור תפריטים, לקרוא טמפרטורה מחיישן 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 מציג את שם היוצר ואת הנושא שאליו נאסף עם תאריך.

מוּמלָץ: