Სარჩევი:

Arduino UNO (მენიუებისა და ფუნქციების შექმნა): 4 ნაბიჯი
Arduino UNO (მენიუებისა და ფუნქციების შექმნა): 4 ნაბიჯი

ვიდეო: Arduino UNO (მენიუებისა და ფუნქციების შექმნა): 4 ნაბიჯი

ვიდეო: Arduino UNO (მენიუებისა და ფუნქციების შექმნა): 4 ნაბიჯი
ვიდეო: Начало работы с калькулятором Casio Classwiz FX-991EX FX-87DEX FX-570EX 2024, ივლისი
Anonim
Arduino UNO (მენიუებისა და ფუნქციების შექმნა)
Arduino UNO (მენიუებისა და ფუნქციების შექმნა)
Arduino UNO (მენიუებისა და ფუნქციების შექმნა)
Arduino UNO (მენიუებისა და ფუნქციების შექმნა)

ამ სასწავლო ინსტრუქციაში ჩვენ ვიკვლევთ როგორ შევქმნათ მენიუები, წავიკითხოთ ტემპერატურა TC74A0 სენსორიდან და გამოვაჩინოთ "ღირებულებები" (ამ შემთხვევაში მობილური ტელეფონის ნომრები) ისე უსასრულო, მაგრამ შემოიფარგლება არდუინოს ბორტ მეხსიერებით.

ჩვენ ვიყენებთ

-მასივები

-Თხევად კრისტალური ეკრანი

-კლავიატურა

მომხმარებლის სახელმძღვანელო შედის ბოლო ეტაპზე.

ნაბიჯი 1: კომპონენტები

არდუინო უნო

· 4x4 კლავიატურა

· ციფრული ტემპერატურის სენსორი TC74A0

· I2c 16x2 LCD მოდული

· 16x2 თხევადი ბროლის ჩვენება

· ჯუმბერის მავთულები

· პურის დაფა

· პერსონალური კომპიუტერი

· Arduino IDE

· გადაცემის კაბელი

ნაბიჯი 2: კომპონენტის გაყვანილობა

ტემპერატურის სენსორი და LCD უკავშირდება SDA და SCL– ს იმავე ხაზზე (A4, A5)

LCD (I2c მოდული)

o SDA to A5 არდუინოზე

o SCL– დან A4– მდე არდუინოზე

o VCC– დან 5V– მდე არდუინოზე

o GND to GND არდუინოზე

· 4 x 4 კლავიატურა

o პინ 1 - 8 კლავიატურაზე, რომელიც დაკავშირებულია პინ 9 - 2 შესაბამისად არდუინოსთან

TC74A0 ტემპერატურის სენსორი

o TC74A0 pin 2 SDA არდუინოზე

o TC74A0 pin 3 to GND არდუინოზე

o TC74A0 pin 4 SCL არდუინოზე

o TC74A0 pin 5 დან 5V არდუინოზე

ნაბიჯი 3: კოდი

#მოიცავს // შეიცავს ბიბლიოთეკებს შედგენისას

#ჩართეთ

#ჩართეთ

#განსაზღვრეთ პაროლი_ სიგრძე 5

#განსაზღვრეთ ბრძანება_ სიგრძე 3

#განსაზღვრეთ უჯრედის ნომერი 10

int მომხმარებლები = 0;

int ჩვენება = 0;

int მისამართი = 72; // tc74a0 მისამართი

int I = 0;

int USER;

int X = 0;

int XY = 0;

int ტემპერატურა;

int tempPre = 0;

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

char მონაცემები [Password_Lenngt];

char ოსტატი [Password_Lenght] = "5466"; // PASSWORD

char ExitData [Command_Lenght]; //

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

char MenuItem;

char CELLArrayA [10];

char CELLArrayB [10];

char CELLArrayC [10];

const byte ROWS = 4; // ოთხი რიგი

const byte COLS = 4; // ოთხი სვეტი

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

ბაიტი colPins [COLS] = {9, 8, 7, 6};

ბაიტი data_count = 0, master_count = 0;

bool Pass_ კარგია;

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);

ბათილად დაყენება ()

{

სერიული.დაწყება (9600); // ეს ქმნის სერიულ მონიტორს

Wire.begin (); // ეს ქმნის მავთულის ობიექტს

lcd. დასაწყისი (16, 2);

lcd. განათება ();

lcd. წმინდა ();

lcd.setCursor (0, 0);

lcd.print ("გთხოვთ დაელოდოთ 3"); // ჩამტვირთავი ეკრანი

დაგვიანება (1000);

lcd. წმინდა ();

lcd.setCursor (0, 0);

lcd.print ("გთხოვთ დაელოდოთ 2");

დაგვიანება (1000);

lcd. წმინდა ();

lcd.setCursor (0, 0);

lcd.print ("გთხოვთ დაელოდოთ 1");

დაგვიანება (300);

lcd. წმინდა ();

სიმებიანი myString = "ARDUINO INSTRUCTABLE";

lcd.setCursor (2, 2);

lcd.print (myString);

დაგვიანება (2500);

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

{

lcd.scrollDisplayLeft ();

დაგვიანება (300);

}

lcd. წმინდა ();

lcd.print ("შეიყვანეთ პაროლი");

}

ბათილი მარყუჟი ()

{

გადართვა (ჩვენება) // სად ვართ ჩვენ მთავარ მენიუში

{// გააკეთა თუ არა მომხმარებელმა პრესა A, B, C, D

შემთხვევა 0:

{

პაროლი ();

}

შესვენება;

შემთხვევა 1:

{

lcd. წმინდა ();

lcd.setCursor (0, 1);

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

lcd.setCursor (0, 0);

lcd.print ("მთავარი მენიუ");

ჩვენება = 2;

დაგვიანება (100);

შესვენება;

}

შემთხვევა 2:

{

char customKey = customKeypad.getKey ();

გადართვა (customKey)

{

შემთხვევა 'A':

{

Serial.println ("A იყო დაჭერილი");

StoreUser ();

შესვენება;

}

საქმე "B":

{

Serial.println ("B იყო დაჭერილი");

თუ (მომხმარებლები == 0) {

lcd. წმინდა ();

lcd.print ("NO SAVED USERS");

დაგვიანება (3000);

lcd. წმინდა ();

ჩვენება = 1;

შესვენება;

}

DisplayUsers (); შესვენება;

}

საქმე 'C':

{

Serial.println ("C იყო დაჭერილი"); // გამოიყენება ტესტირების დროს

int ext = 0;

სანამ (! ექსტ) {

char ch;

temp = TempMenu ();

თუ (temp! = tempPre) {

lcd. წმინდა ();

lcd.print ("ტემპერატურა");

lcd.setCursor (0, 1);

lcd.print (temp);

lcd.print ("C");

tempPre = ტემპი;

დაგვიანება (500);

}

ch = customKeypad.getKey ();

თუ (ch == ' *') // ტემპერატურის მენიუდან გასვლა (თუ * დაჭერილი)

{

ექსტ = 1;

lcd. წმინდა ();

ჩვენება = 1;

}

}

შესვენება;

TempMenu ();

შესვენება;

}

საქმე 'D':

{

lcd. წმინდა ();

lcd.setCursor (0, 0);

lcd.print ("NUA PRAC");

lcd.setCursor (0, 1);

lcd.print ("JB SCHOEMAN");

დაგვიანება (3000);

lcd. წმინდა ();

lcd.setCursor (0, 0);

lcd.print ("MAY 2019");

lcd.setCursor (0, 1);

lcd.print ("CC OOSTHUIZEN");

დაგვიანება (3000);

lcd. წმინდა ();

ჩვენება = 1;

}

}

}

}

}

// ღირებულებების ან პროცედურების გამოძახების პერსონალური ფუნქციები

ბათილია პაროლი ()

{

char customKey = customKeypad.getKey ();

თუ (customKey) // დარწმუნებულია, რომ გასაღები ფაქტობრივად დაჭერილია, ტოლია (customKey! = NO_KEY)

{

მონაცემები [data_count] = customKey; // შეინახეთ char მონაცემთა მასივში

lcd.setCursor (data_count, 1); // კურსორის გადატანა თითოეული ახალი სიმბოლოს საჩვენებლად

lcd.print ("*"); // დაბეჭდე char აღნიშნულ კურსორზე

მონაცემთა_თვლა ++; // მონაცემების მასივის გაზრდა 1 -ით ახალი სიმბოლოების შესანახად, ასევე თვალყური ადევნეთ შეყვანილი სიმბოლოების რაოდენობას

}

თუ (data_count == Password_Lenght-1) // თუ მასივის ინდექსი ტოლია მოსალოდნელი სიმბოლოების რაოდენობას, შეადარეთ მონაცემები მასტერს

{

lcd. წმინდა ();

lcd.setCursor (0, 0);

lcd.print ("პაროლი არის");

თუ (! strcmp (მონაცემები, სამაგისტრო)) // უდრის (strcmp (მონაცემები, სამაგისტრო) == 0)

{

lcd.print ("კარგი");

lcd. წმინდა ();

ჩვენება = 1;

}

სხვა

lcd.print ("ცუდი");

შეფერხება (1000); // დაამატა 1 წამიანი დაყოვნება, რათა დარწმუნდეთ, რომ პაროლი მთლიანად არის ნაჩვენები ეკრანზე, სანამ არ გასუფთავდება.

lcd. წმინდა ();

clearData ();

lcd. წმინდა ();

lcd.setCursor (0, 0);

lcd.print ("შეიყვანეთ პაროლი");

}

}

int TempMenu ()

{

Wire.begin გადაცემა (მისამართი);

Wire.write (0);

Wire.endTransmission ();

მავთული. მოთხოვნა (მისამართი, 1);

ხოლო (Wire.available () == 0);

int c = Wire.read ();

დაბრუნება გ;

}

void clearData ()

{

ხოლო (data_count! = 0)

{// ეს შეიძლება გამოყენებულ იქნას მასივის ნებისმიერი ზომისთვის, მონაცემები [data_count--] = 0; // სუფთა მასივი ახალი მონაცემებისთვის

}

}

ბათილი StoreUser ()

{

int ext = 0;

int მომხმარებელი;

char ch;

სანამ (! ექსტ) {

lcd. წმინდა ();

lcd.print ("შეიყვანეთ მომხმარებელი");

მომხმარებელი = მომხმარებლები + 1;

lcd.print (მომხმარებელი);

int x = 0;

სანამ (! x) {

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

ch = customKeypad.waitForKey ();

lcd.setCursor (i, 1);

lcd. ბეჭდვა (ch);

userNum [მომხმარებელი - 1] = ch;

}

დაგვიანება (500);

lcd. წმინდა ();

lcd.print ("გაგრძელება");

lcd.setCursor (0, 1);

lcd.print ("* დიახ # არა");

ch = customKeypad.waitForKey ();

თუ (ch == '*') {

x = 1;

}

თუ (ch == '#') {

x = 1;

ექსტ = 1;

lcd. წმინდა ();

ჩვენება = 1;

}

}

მომხმარებლები ++;

}

}

void DisplayUsers ()

{

lcd. წმინდა ();

for (int i = 0; i <მომხმარებლები; i ++) {

lcd.print ("შენახული მომხმარებელი");

lcd.print (i + 1);

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

lcd.setCursor (u, 1);

lcd.print (userNum [u]);

}

დაგვიანება (2000);

lcd. წმინდა ();

ჩვენება = 1;

}

}

ნაბიჯი 4: მომხმარებლის სახელმძღვანელო

1. პროექტის ჩართვისას გამოჩნდება ჩატვირთვის ან მისასალმებელი ეკრანი.

2. გამოჩნდება ეკრანი "შეიყვანეთ პაროლი", ეს ეკრანი გაძლევთ საშუალებას შეიყვანოთ 4 სიმბოლო, ასო ან რიცხვი, სწორი პაროლი არის: 5466, ეს მოგცემთ წვდომას მთავარ მენიუში.

3. სწორი პაროლის შეყვანისთანავე გამოჩნდება მთავარი მენიუ 4 შესაძლო ვარიანტით, სხვადასხვა ფუნქციის ნავიგაციისთვის.

· A - შეიყვანეთ მომხმარებლის მობილური ტელეფონის ნომრები.

o შეიყვანეთ 10 ციფრი მომხმარებლის სისტემაში შესანახად

o 10 ციფრის შეყვანის შემდეგ დააჭირეთ " *" მეტი მომხმარებლის დასამატებლად, ან დააჭირეთ "#" მთავარ მენიუში დასაბრუნებლად

· B - ჩვენების შენახული მომხმარებლების ჩვენება

o მომხმარებლები გადადიან ეკრანის გასწვრივ, ისინი ნაჩვენებია თითოეული 3 წამის განმავლობაში, როგორც კი ყველა მომხმარებელი გამოჩნდება გვერდი დაიხურება და დაუბრუნდება მთავარ მენიუს.

o თუ მენიუს A ვარიანტში არცერთი მომხმარებელი არ არის დამატებული, ის გამოჩნდება "არ არის დაზოგული მომხმარებელი".

· C - აჩვენებს ცოცხალ ტემპერატურას

o დააჭირეთ " *" მთავარ მენიუში დასაბრუნებლად

· D - მოკლე ტექსტის ჩვენება

o აჩვენებს შემოქმედის სახელს და საგანს, რომლისთვისაც იგი შედგენილია თარიღით.

გირჩევთ: