Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
Në këtë udhëzues ne do të eksplorojmë se si të krijojmë menutë, të lexojmë temperaturën nga një sensor TC74A0 dhe të shfaqim "vlerat" (në këtë rast numrat e celularëve) në një mënyrë të pafundme, por të kufizuar në kujtesën e arduino -s në bord.
Ne do të përdorim
-Vendoret
-Ekran me kristale të lëngëta
-Tastiera e tastierës
Udhëzuesi i përdorimit i përfshirë në hapin përfundimtar.
Hapi 1: Përbërësit
Arduino Uno
· Tastiera 4x4
· Sensori dixhital i temperaturës TC74A0
· Modul LCD I2c 16x2
· Ekran me kristale të lëngët 16x2
· Tela kërcyes
· Tabela e bukës
· Kompjuter personal
· Arduino IDE
· Kabllo transferimi
Hapi 2: Lidhja e Komponentit
SENSORI I TEMPIT DHE LCD I LIDHUR N T S NJAMET LIN ME SDA DHE SCL (A4, A5)
LCD (Moduli I2c)
o SDA në A5 në Arduino
o SCL në A4 në Arduino
o VCC në 5V në Arduino
o GND në GND në Arduino
· Tastiera 4 x 4
o Pin 1 - 8 në tastierë të lidhur me pin 9 - 2 në Arduino respektivisht
Sensori i temperaturës TC74A0
o TC74A0 pin 2 në SDA në Arduino
o TC74A0 pin 3 në GND në Arduino
o TC74A0 pin 4 në SCL në Arduino
o TC74A0 pin 5 deri 5V në Arduino
Hapi 3: Kodi
#include // Përfshin bibliotekat gjatë përpilimit
#përfshi
#përfshi
#përcakto fjalëkalimin_gjatësia 5
#përcakto Komandën_Gjetësia 3
#përcaktoni numrin e celulës 10
int përdorues = 0;
int Shfaq = 0;
adresa int = 72; // tc74a0 ADRESA
int I = 0;
int USER;
int X = 0;
int XY = 0;
int temp;
int tempPre = 0;
char userNum [10] [10] = {{}, {}, {}};
char Të dhënat [Fjalëkalimi_Length];
char Master [Fjalëkalimi_Lenght] = "5466"; // FJALA E FJALS
char ExitData [Command_Lenght]; //
char Master1 [Command_Lenght] = "**"; //
char MenuItem;
char CELLArrayA [10];
char CELLArrayB [10];
char CELLArrayC [10];
const byte RRESHA = 4; // katër rreshta
const byte COLS = 4; // katër kolona
byte rowPins [ROWS] = {5, 4, 3, 2};
byte colPins [COLS] = {9, 8, 7, 6};
bajt data_count = 0, master_count = 0;
bool Pass_is_good;
LiquidCrystal_I2C LCD (0x26, 16, 2);
char hexaKeys [RRESHTAT] [COLS] = // Tastiera inicuese
{
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}
};
Keypad customKeypad = Tastiera (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);
void setup ()
{
Serial.filloj (9600); // kjo krijon Serial Monitor
Wire.begin (); // kjo krijon një objekt Wire
lcd.filloni (16, 2);
lcd. backlight ();
lcd.qartë ();
lcd.setCursor (0, 0);
lcd.print ("Ju lutemi Prisni 3"); // EKRONI I NGARKIMIT
vonesa (1000);
lcd.qartë ();
lcd.setCursor (0, 0);
lcd.print ("Ju lutemi prisni 2");
vonesa (1000);
lcd.qartë ();
lcd.setCursor (0, 0);
lcd.print ("Ju lutemi Prisni 1");
vonesë (300);
lcd.qartë ();
String myString = "ARDUINO INSTRUCTABLE";
lcd.setCursor (2, 2);
lcd.print (myString);
vonesë (2500);
për (int scrollCounter = 0; scrollCounter <24; scrollCounter ++)
{
lcd.scrollDisplayLeft ();
vonesë (300);
}
lcd.qartë ();
lcd.print ("Fut fjalëkalimin");
}
lak void ()
{
kaloni (Ekrani) // KU NE MENU KRYESORE JEMI NE
{// A SHTYPI P USRDORUESI A, B, C, D
rasti 0:
{
Fjalëkalimi ();
}
pushim;
rasti 1:
{
lcd.qartë ();
lcd.setCursor (0, 1);
lcd.print ("A B C D");
lcd.setCursor (0, 0);
lcd.print ("Menyja kryesore");
Shfaq = 2;
vonesë (100);
pushim;
}
rasti 2:
{
char customKey = customKeypad.getKey ();
kaloni (customKey)
{
rasti 'A':
{
Serial.println ("A u shtyp");
StoreUser ();
pushim;
}
rasti 'B':
{
Serial.println ("B u shtyp");
nëse (përdoruesit == 0) {
lcd.qartë ();
lcd.print ("JO P USRDORUES T SA KURSUAR");
vonesë (3000);
lcd.qartë ();
Shfaq = 1;
pushim;
}
DisplayUsers (); pushim;
}
rasti 'C':
{
Serial.println ("C u shtyp"); // P USRDORET GJAT TESTIMIT
int ext = 0;
ndërsa (! ekst) {
char ch;
temp = TempMenu ();
nëse (temp! = tempPre) {
lcd.qartë ();
lcd.print ("Temparature");
lcd.setCursor (0, 1);
lcd.print (temp);
lcd.print ("C");
tempPre = temp;
vonesë (500);
}
ch = customKeypad.getKey ();
nëse (ch == ' *') // MENU T EX TEMPERATURES EXIT (nëse * PRESSED)
{
ext = 1;
lcd.qartë ();
Shfaq = 1;
}
}
pushim;
TempMenu ();
pushim;
}
rasti 'D':
{
lcd.qartë ();
lcd.setCursor (0, 0);
lcd.print ("NUA PRAC");
lcd.setCursor (0, 1);
lcd.print ("JB SCHOEMAN");
vonesë (3000);
lcd.qartë ();
lcd.setCursor (0, 0);
lcd.print ("MAJ 2019");
lcd.setCursor (0, 1);
lcd.print ("CC OOSTHUIZEN");
vonesë (3000);
lcd.qartë ();
Shfaq = 1;
}
}
}
}
}
// FUNKSIONET E ZAKONIT P TOR T C THIRRUR VLERAT OSE PROCEDURAT
fjalëkalimi i pavlefshëm ()
{
char customKey = customKeypad.getKey ();
nëse (customKey) // sigurohet që një çelës është shtypur në të vërtetë, i barabartë me (customKey! = NO_KEY)
{
Të dhëna [data_count] = customKey; // ruani char në grupin e të dhënave
lcd.setCursor (data_count, 1); // lëviz kursorin për të shfaqur çdo shenjë të re
lcd.print ("*"); // print char në kursorin në fjalë
numërimi i të dhënave ++; // shtoni grupin e të dhënave me 1 për të ruajtur shenjën e re, gjithashtu mbani shënim numrin e shenjave të futura
}
nëse (data_count == Fjalëkalimi_Lenght-1) // nëse indeksi i grupit është i barabartë me numrin e karaktereve të pritshme, krahasoni të dhënat me masterin
{
lcd.qartë ();
lcd.setCursor (0, 0);
lcd.print ("Fjalëkalimi është");
nëse (! strcmp (Të dhëna, Master)) // e barabartë me (strcmp (Të dhëna, Master) == 0)
{
lcd.print ("Mirë");
lcd.qartë ();
Shfaq = 1;
}
tjeter
lcd.print ("E keqe");
vonesë (1000); // shtoi 1 vonesë të dytë për t'u siguruar që fjalëkalimi të shfaqet plotësisht në ekran para se të pastrohet.
lcd.qartë ();
clearData ();
lcd.qartë ();
lcd.setCursor (0, 0);
lcd.print ("Fut fjalëkalimin");
}
}
int TempMenu ()
{
Wire.beginTransmetimi (adresa);
Wire.write (0);
Wire.endTransmission ();
Tela. Kërkohet Nga (adresa, 1);
ndërsa (Wire.available () == 0);
int c = Wire.read ();
kthimi c;
}
void clearData ()
{
ndërsa (numër_ i të dhënave! = 0)
{// Kjo mund të përdoret për çdo madhësi të grupit, Të dhënat [numërimi_ i të dhënave--] = 0; // grup i qartë për të dhëna të reja
}
}
void StoreUser ()
{
int ext = 0;
int përdorues;
char ch;
ndërsa (! ekst) {
lcd.qartë ();
lcd.print ("Futni Përdoruesin");
përdorues = përdorues + 1;
lcd.print (përdorues);
int x = 0;
ndërsa (! x) {
për (int i = 0; i <10; i ++) {
ch = customKeypad.waitForKey ();
lcd.setCursor (i, 1);
lcd.print (ch);
userNum [përdorues - 1] = ch;
}
vonesë (500);
lcd.qartë ();
lcd.print ("Vazhdo");
lcd.setCursor (0, 1);
lcd.print ("* po # jo");
ch = customKeypad.waitForKey ();
nëse (ch == '*') {
x = 1;
}
nëse (ch == '#') {
x = 1;
ext = 1;
lcd.qartë ();
Shfaq = 1;
}
}
përdoruesit ++;
}
}
shfuqizuesit e pavlefshëm ()
{
lcd.qartë ();
për (int i = 0; i <përdoruesit; i ++) {
lcd.print ("Përdoruesi i ruajtur");
lcd.print (i + 1);
për (int u = 0; u <10; u ++) {
lcd.setCursor (u, 1);
lcd.print (Numri i përdoruesit [u]);
}
vonesa (2000);
lcd.qartë ();
Shfaq = 1;
}
}
Hapi 4: UDHZUES P USR PERRDORIMIN
1. Me ndezjen e projektit, do të shfaqet një ekran ngarkimi ose mirëseardhjeje.
2. Do të shfaqet një ekran "Fut fjalëkalimin", ky ekran ju lejon të futni 4 karaktere, shkronja ose numra, fjalëkalimi i saktë është: 5466, kjo do t'ju japë qasje në menunë kryesore.
3. Me futjen e fjalëkalimit të saktë, menuja kryesore do të shfaqet me 4 opsione të mundshme për të lundruar në funksionet e ndryshme të disponueshme.
· A - Shkruani numrat e telefonit celular të përdoruesit.
o Futni 10 shifra për të ruajtur një përdorues në sistem
o Pasi të keni futur 10 shifra, shtypni " *" për të shtuar më shumë përdorues, ose shtypni "#" për të dalë përsëri në menunë kryesore
· B - Shfaq përdoruesit e ruajtur
o Përdoruesit do të lëvizin pranë ekranit, ata shfaqen për 3 sekonda secili, sapo të shfaqen të gjithë përdoruesit faqja do të mbyllet dhe do të kthehet në menunë kryesore.
o Nëse nuk shtohen përdorues në opsionin A të menusë, ai do të shfaqë "JO PERSRDORUES T SA KURSUAR".
· C - Shfaq temperaturën e drejtpërdrejtë
o Shtypni " *" për të dalë përsëri në menunë kryesore
· D - Shfaq tekst të shkurtër
o Shfaq emrin e krijuesit dhe subjektin për të cilin është përpiluar me një datë.