Përmbajtje:
Video: Arduino UNO (krijimi i menyve dhe funksioneve): 4 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:20
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ë.
Recommended:
Gjenerator i funksioneve portativ në WiFi dhe Android: 10 hapa
Gjenerator i funksioneve portativ në WiFi dhe Android: Afër fundit të shekullit të 20 -të, u shfaqën risi të ndryshme teknologjike, veçanërisht në fushën e komunikimit; por jo vetem Për ne, përdoruesit, konsumatorët dhe inxhinierët dolën në dritë me zhvillimin e shpejtë të pajisjeve elektronike, që mund të na bëjnë jetën
Krijimi i një kontrolluesi alternativ MIDI duke përdorur Makey-Makey dhe ujë: 6 hapa
Krijimi i një kontrolluesi alternativ MIDI duke përdorur Makey-Makey dhe ujë: Përdorimi i Makey-Makey për të krijuar hyrje me porosi dhe krijuese është tepër e lehtë! Ndërsa shumë njerëz që përdorin harduerin krijojnë instrumentin e tyre duke përdorur inputet në Makey-Makey për të shkaktuar tinguj ose shënime, ne vendosëm që mund të bënim edhe më shumë.
Krijimi-Sinjalizimi-Përdorimi-Ubidots-ESP32+Sensori i Tempit dhe Lagështisë: 9 Hapa
Krijimi-Paralajmërimi-Përdorimi-Ubidots-ESP32+Sensori i Temp dhe Lagështisë: Në këtë tutorial, ne do të masim të dhëna të ndryshme të temperaturës dhe lagështisë duke përdorur sensorin Temp dhe lagështi. Ju gjithashtu do të mësoni se si t'i dërgoni këto të dhëna në Ubidots. Kështu që ju mund ta analizoni nga kudo për aplikime të ndryshme. Gjithashtu duke krijuar emai
Gjenerator i funksioneve të thjeshta: 5 hapa
Gjenerator i funksionit të thjeshtë: Në udhëzuesin tim të fundit ju tregova se si të krijoni gjenerator sinjali pwm dhe e kam përdorur atë për të filtruar disa forma të tjera valësh prej tij. Në këtë udhëzues do t'ju tregoj se si të bëni funksion të thjeshtë/gjenerator frekuence, si të drejtoni stafetë me të dhe si të
Gjenerator i funksioneve portativ në Arduino: 7 hapa (me fotografi)
Gjeneratori Portativ i Funksioneve në Arduino: Gjeneratori i funksioneve është një mjet shumë i dobishëm, veçanërisht kur po shqyrtojmë testimin e përgjigjes së qarkut tonë ndaj një sinjali të caktuar. Në këtë udhëzues do të përshkruaj sekuencën e ndërtimit të gjeneratorit të vogël, të lehtë për t'u përdorur, të funksionit portativ. Karakteristikat e