Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
Bu təlimatda menyuların necə yaradılacağını, TC74A0 sensorundan temperaturun necə oxunacağını və "dəyərləri" (bu halda cib telefonu nömrələrini) sonsuz, lakin arduino yaddaş yaddaşı ilə məhdudlaşdırılacaq şəkildə göstərməyi öyrənəcəyik.
İstifadə edəcəyik
-Dairələr
-Maye kristal ekran
-Klaviatura
İstifadəçi təlimatı son mərhələyə daxil edilmişdir.
Addım 1: Komponentlər
Arduino Uno
· 4x4 klaviatura
· TC74A0 rəqəmsal temperatur sensoru
· I2c 16x2 LCD Modulu
· 16x2 maye kristal ekran
· Atlama telləri
· Çörək lövhəsi
· Şəxsi kompüter
· Arduino IDE
· Transfer kabeli
Addım 2: Komponent Kablolama
TEMP SENSORU və LCD SDA VƏ SCL (A4, A5) Eynilə Xəttdə Bağlandı
LCD (I2c Modulu)
o Arduino -da SDA -dan A5 -ə qədər
o Arduino -da A4 -ə SCL
o Arduinoda 5V -ə VCC
o Arduinoda GND -dən GND -ə
· 4 x 4 klaviatura
o Klaviaturada 1 - 8 Pin, müvafiq olaraq Arduino'da 9 - 2 pininə bağlıdır
TC74A0 temperatur sensoru
o TC74A0 pin 2, Arduino -da SDA -ya
o TC74A0 pin 3, Arduinoda GND -ə
o TC74A0 pin 4, Arduino üzərindəki SCL -ə
o Arduinoda TC74A0 pin 5 - 5V
Addım 3: Kod
#include // Tərtib edərkən kitabxanalar daxildir
#daxil edin
#daxil edin
#Şifrəni təyin edin_Uzunluğu 5
#təyin Komanda_Uzunluğu 3
#CellNumber 10 təyin edin
int users = 0;
int Display = 0;
int ünvanı = 72; // tc74a0 ÜNVAN
int I = 0;
int İSTİFADƏÇİ;
int X = 0;
int XY = 0;
int tempi;
int tempPre = 0;
char userNum [10] [10] = {{}, {}, {}};
char Məlumatları [Password_Lenght];
char Master [Password_Lenght] = "5466"; // ŞİFRƏ
char ExitData [Command_Lenght]; //
char Master1 [Command_Lenght] = "**"; //
char MenuItem;
char CELLArrayA [10];
char CELLArrayB [10];
char CELLArrayC [10];
const bayt ROWS = 4; // dörd sıra
const baytı COLS = 4; // dörd sütun
bayt rowPins [ROWS] = {5, 4, 3, 2};
bayt colPins [COLS] = {9, 8, 7, 6};
bayt data_count = 0, master_count = 0;
bool Pass_is_good;
LiquidCrystal_I2C lcd (0x26, 16, 2);
char hexaKeys [ROWS] [COLS] = // BAŞLAYAN Klaviatura
{
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}
};
Klaviatura xüsusiKeypad = Klaviatura (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);
boş quraşdırma ()
{
Serial.begin (9600); // bu Serial Monitoru yaradır
Wire.begin (); // bu Wire obyekti yaradır
lcd.begin (16, 2);
lcd.lightlight ();
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Xahiş edirik 3 Gözləyin"); // EKRAN YÜKLƏNİR
gecikmə (1000);
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Xahiş edirik 2 Gözləyin");
gecikmə (1000);
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Zəhmət olmasa 1 Gözləyin");
gecikmə (300);
lcd.clear ();
String myString = "ARDUINO INSTRUCTABLE";
lcd.setCursor (2, 2);
lcd.print (myString);
gecikmə (2500);
for (int scrollCounter = 0; scrollCounter <24; scrollCounter ++)
{
lcd.scrollDisplayLeft ();
gecikmə (300);
}
lcd.clear ();
lcd.print ("Şifrə daxil edin");
}
boşluq döngəsi ()
{
keçid (Ekran) // ANA MENÜDƏ HARADA BİZ
{// İSTİFADƏÇİ A, B, C, D BASDI
hal 0:
{
Şifrə ();
}
fasilə;
hal 1:
{
lcd.clear ();
lcd.setCursor (0, 1);
lcd.print ("A B C D");
lcd.setCursor (0, 0);
lcd.print ("Əsas Menyu");
Ekran = 2;
gecikmə (100);
fasilə;
}
hal 2:
{
char customKey = customKeypad.getKey ();
keçid (xüsusi açar)
{
hal 'A':
{
Serial.println ("A basıldı");
StoreUser ();
fasilə;
}
hal 'B':
{
Serial.println ("B basıldı");
əgər (istifadəçilər == 0) {
lcd.clear ();
lcd.print ("QEYDİYYATDAN İSTİFADƏÇİLƏR YOXDUR");
gecikmə (3000);
lcd.clear ();
Ekran = 1;
fasilə;
}
DisplayUsers (); fasilə;
}
hal 'C':
{
Serial.println ("C basıldı"); // SINAŞDAN İSTİFADƏ EDİLİR
int ext = 0;
isə (! ext) {
char ch;
temp = TempMenu ();
əgər (temp! = tempPre) {
lcd.clear ();
lcd.print ("Temperatur");
lcd.setCursor (0, 1);
lcd çap (temp);
lcd.print ("C");
tempPre = temp;
gecikmə (500);
}
ch = customKeypad.getKey ();
if (ch == ' *') // SICAKLIQ MENÜSÜNDƏN ÇIX (əgər * BASILIR)
{
daxili = 1;
lcd.clear ();
Ekran = 1;
}
}
fasilə;
TempMenu ();
fasilə;
}
hal 'D':
{
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("NUA PRAC");
lcd.setCursor (0, 1);
lcd.print ("JB SCHOEMAN");
gecikmə (3000);
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("MAY 2019");
lcd.setCursor (0, 1);
lcd.print ("CC OOSTHUIZEN");
gecikmə (3000);
lcd.clear ();
Ekran = 1;
}
}
}
}
}
// DƏYƏRLƏRİ VƏ QAYDALARI ZƏNG EDƏN FƏRDİ FUNKSİYALAR
etibarsız parol ()
{
char customKey = customKeypad.getKey ();
əgər (customKey) // (customKey! = NO_KEY) -ə bərabər olan bir düymənin həqiqətən basıldığından əmin olur.
{
Məlumat [data_count] = customKey; // char -ı məlumat silsiləsində saxla
lcd.setCursor (data_count, 1); // hər yeni simvolu göstərmək üçün kursoru hərəkət etdirin
lcd.print ("*"); // qeyd olunan kursorda char yazdırın
data_count ++; // yeni simvol saxlamaq üçün məlumat dizisini 1 artırın, daxil edilən işarələrin sayını da izləyin
}
əgər (data_count == Password_Lenght-1) // sıra indeksi gözlənilən simvolların sayına bərabərdirsə, məlumatları master ilə müqayisə edin
{
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Şifrədir");
if (! strcmp (Data, Master)) // bərabərdirsə (strcmp (Data, Master) == 0)
{
lcd.print ("Yaxşı");
lcd.clear ();
Ekran = 1;
}
başqa
lcd.print ("Pis");
gecikmə (1000); // şifrənin təmizlənmədən əvvəl ekranda tamamilə göründüyündən əmin olmaq üçün 1 saniyə gecikmə əlavə etdi.
lcd.clear ();
clearData ();
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Şifrə daxil edin");
}
}
int TempMenu ()
{
Wire.beginTransmission (ünvan);
Wire.write (0);
Wire.endTransmission ();
Wire.requestFrom (ünvan, 1);
while (Wire.available () == 0);
int c = Wire.read ();
qayıt c;
}
void clearData ()
{
isə (data_count! = 0)
{// Bu hər hansı bir sıra ölçüsü üçün istifadə edilə bilər, Məlumat [data_count--] = 0; // yeni məlumatlar üçün silinən massiv
}
}
boş StoreUser ()
{
int ext = 0;
int istifadəçi;
char ch;
isə (! ext) {
lcd.clear ();
lcd.print ("İstifadəçi daxil edin");
istifadəçi = istifadəçilər + 1;
lcd.print (istifadəçi);
int x = 0;
isə (! x) {
üçün (int i = 0; i <10; i ++) {
ch = customKeypad.waitForKey ();
lcd.setCursor (i, 1);
lcd çap (ch);
userNum [user - 1] = ch;
}
gecikmə (500);
lcd.clear ();
lcd.print ("Davam et");
lcd.setCursor (0, 1);
lcd.print ("* bəli # yox");
ch = customKeypad.waitForKey ();
əgər (ch == '*') {
x = 1;
}
əgər (ch == '#') {
x = 1;
daxili = 1;
lcd.clear ();
Ekran = 1;
}
}
istifadəçilər ++;
}
}
boş DisplayUsers ()
{
lcd.clear ();
üçün (int i = 0; i <istifadəçilər; i ++) {
lcd.print ("Saxlanılan İstifadəçi");
lcd.çap (i + 1);
üçün (int u = 0; u <10; u ++) {
lcd.setCursor (u, 1);
lcd.print (istifadəçiSayı [u]);
}
gecikmə (2000);
lcd.clear ();
Ekran = 1;
}
}
Addım 4: İstifadəçi bələdçisi
1. Layihəni işə saldıqdan sonra yükləmə və ya qarşılama ekranı görünəcək.
2. "Şifrə daxil et" ekranı görünəcək, bu ekran 4 simvol, hərf və ya rəqəm daxil etməyinizə imkan verir, düzgün parol: 5466, bu sizə əsas menyuya giriş imkanı verəcək.
3. Doğru şifrəni daxil etdikdən sonra, mövcud olan müxtəlif funksiyaları gəzmək üçün 4 mümkün variantla əsas menyu görünəcək.
· A - İstifadəçinin mobil telefon nömrələrini daxil edin.
o İstifadəçini sistemə saxlamaq üçün 10 rəqəm daxil edin
o 10 rəqəm daxil edildikdən sonra daha çox istifadəçi əlavə etmək üçün " *" düyməsini, ya da əsas menyuya qayıtmaq üçün "#" düyməsini basın.
· B - Saxlanılan istifadəçiləri göstərin
o İstifadəçilər ekranın yanından keçəcək, hər biri 3 saniyə ərzində göstəriləcək, bütün istifadəçilər görünən kimi səhifə bağlanacaq və ana menyuya qayıdacaq.
o A menyu seçiminə heç bir istifadəçi əlavə edilmədikdə, "QEYDİYYATDAN İSTİFADƏÇİLƏR" göstəriləcək.
· C - Canlı temperaturu göstərir
o Əsas menyuya qayıtmaq üçün " *" düyməsini basın
· D - Qısa mətni göstərin
o Yaradıcının adını və tarixlə tərtib olunduğu mövzunu göstərir.