![Arduino UNO (მენიუებისა და ფუნქციების შექმნა): 4 ნაბიჯი Arduino UNO (მენიუებისა და ფუნქციების შექმნა): 4 ნაბიჯი](https://i.howwhatproduce.com/images/004/image-9747-10-j.webp)
Სარჩევი:
2025 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2025-01-23 14:50
![Arduino UNO (მენიუებისა და ფუნქციების შექმნა) Arduino UNO (მენიუებისა და ფუნქციების შექმნა)](https://i.howwhatproduce.com/images/004/image-9747-11-j.webp)
![Arduino UNO (მენიუებისა და ფუნქციების შექმნა) Arduino UNO (მენიუებისა და ფუნქციების შექმნა)](https://i.howwhatproduce.com/images/004/image-9747-12-j.webp)
ამ სასწავლო ინსტრუქციაში ჩვენ ვიკვლევთ როგორ შევქმნათ მენიუები, წავიკითხოთ ტემპერატურა 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 აჩვენებს შემოქმედის სახელს და საგანს, რომლისთვისაც იგი შედგენილია თარიღით.
გირჩევთ:
Arduino MIDI კონტროლერის შექმნა: 9 ნაბიჯი (სურათებით)
![Arduino MIDI კონტროლერის შექმნა: 9 ნაბიჯი (სურათებით) Arduino MIDI კონტროლერის შექმნა: 9 ნაბიჯი (სურათებით)](https://i.howwhatproduce.com/images/001/image-2240-j.webp)
Arduino MIDI კონტროლერის მშენებლობა: ეს ინსტრუქცია თავდაპირველად გამოქვეყნდა ჩემს ბლოგში, 2020 წლის 28 ივნისს. მე მსიამოვნებს ისეთი ნივთების მშენებლობა, რომელიც მოიცავს ელექტრონიკას და მე ყოველთვის მინდოდა რაიმე აეშენებინა Arduino– ს გამოყენებით. დამწყებთათვის ერთ -ერთი ყველაზე გავრცელებული ნაგებობა იყო MIDI კონტროლერი
მზის ავტომატური ტრეკერის შექმნა Arduino Nano V2– ით: 17 ნაბიჯი (სურათებით)
![მზის ავტომატური ტრეკერის შექმნა Arduino Nano V2– ით: 17 ნაბიჯი (სურათებით) მზის ავტომატური ტრეკერის შექმნა Arduino Nano V2– ით: 17 ნაბიჯი (სურათებით)](https://i.howwhatproduce.com/images/005/image-13435-j.webp)
აშენების ავტომატური მზის Tracker ერთად Arduino Nano V2: Hi! ეს ინსტრუქცია იგულისხმება, რომ იყოს ჩემი მზის ტრეკერის პროექტის მეორე ნაწილი. იმის ახსნისთვის, თუ როგორ მუშაობს მზის ტრეკერები და როგორ შევქმენი ჩემი პირველი ტრეკერი, გამოიყენეთ ქვემოთ მოცემული ბმული. ეს შესთავაზებს ამ პროექტის კონტექსტს. Https://www.instructables.co
RaspberryPi 3/4 გაფართოების დაფა Raspberry Pi– ს დამატებითი ფუნქციების დასამატებლად: 15 ნაბიჯი (სურათებით)
![RaspberryPi 3/4 გაფართოების დაფა Raspberry Pi– ს დამატებითი ფუნქციების დასამატებლად: 15 ნაბიჯი (სურათებით) RaspberryPi 3/4 გაფართოების დაფა Raspberry Pi– ს დამატებითი ფუნქციების დასამატებლად: 15 ნაბიჯი (სურათებით)](https://i.howwhatproduce.com/images/005/image-14597-j.webp)
RaspberryPi 3/4 გაფართოების დაფა Raspberry Pi– ს დამატებითი მახასიათებლების დასამატებლად: ჩვენ ვიცით, რომ ჟოლო pi 3/4 არ არის ჩამონტაჟებული ADC (ანალოგურ ციფრულ გადამყვანად) და RTC (რეალურ დროში საათი), ამიტომ მე ვამზადებ PCB– ს, რომელიც შეიცავს 16 არხი 12bit ADC, RTC, SIM7600 4G მოდული, ღილაკები, რელეები, USB გამორთვა, 5V გამორთვა, 12V ენერგია
3D ბეჭდვით Arduino სოციალური რობოტის მეგობრის შექმნა: 9 ნაბიჯი
![3D ბეჭდვით Arduino სოციალური რობოტის მეგობრის შექმნა: 9 ნაბიჯი 3D ბეჭდვით Arduino სოციალური რობოტის მეგობრის შექმნა: 9 ნაბიჯი](https://i.howwhatproduce.com/images/001/image-2250-22-j.webp)
3D ბეჭდვით არდუინოს სოციალური რობოტის შექმნა ბადი: ბადი არის 3D ბეჭდვით არდუინოს სოციალური რობოტი. ის ურთიერთობს სამყაროსთან ულტრაბგერითი სენსორის გამოყენებით მისი უშუალო ტერიტორიის დასახატად. როდესაც რაღაც იცვლება მის გარემოში ის რეაგირებს. ის შეიძლება იყოს გაკვირვებული ან ცნობისმოყვარე და ზოგჯერ ცოტა აგრესიულიც
Arduino ტონის გენერატორი ბიბლიოთეკის ან სერიული ფუნქციების გარეშე (შეფერხებებით): 10 ნაბიჯი
![Arduino ტონის გენერატორი ბიბლიოთეკის ან სერიული ფუნქციების გარეშე (შეფერხებებით): 10 ნაბიჯი Arduino ტონის გენერატორი ბიბლიოთეკის ან სერიული ფუნქციების გარეშე (შეფერხებებით): 10 ნაბიჯი](https://i.howwhatproduce.com/images/001/image-2689-38-j.webp)
Arduino ტონის გენერატორი ბიბლიოთეკისა და სერიული ფუნქციების გარეშე (შეფერხებებით): ეს არ არის ის, რასაც ჩვეულებრივ ვისწავლიდი, მე უპირატესობას ვანიჭებ ჩემს მეტალურგიას, მაგრამ რადგანაც მე ვარ ელექტროტექნიკის სტუდენტი და მიკროკონტროლერებზე უნდა გავიარო კლასი ( ჩამონტაჟებული სისტემების დიზაინი), ვიფიქრე, რომ ერთ -ერთ ჩემს გვერდზე გავაკეთებ ინსტრუქციას