2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-13 06:57
Selles juhendis uurime, kuidas luua menüüsid, lugeda temperatuuri TC74A0 andurilt ja kuvada väärtusi (antud juhul mobiiltelefoninumbrid) lõpmatul viisil, kuid piirduda arduino pardamäluga.
Me hakkame kasutama
-Massiivid
-Vedelkristallekraan
-Klaviatuur
Kasutusjuhend on lisatud viimasesse etappi.
Samm: komponendid
Arduino Uno
· 4x4 klahvistik
· TC74A0 digitaalne temperatuuriandur
· I2c 16x2 LCD -moodul
· 16x2 vedelkristallkuvar
· Jumper juhtmed
· Leivalaud
· Personaalarvuti
· Arduino IDE
· Edastuskaabel
Samm: komponentide juhtmestik
TEMP -ANDUR JA LCD ON SAMAL JOONEL ÜHENDATUD SDA JA SCL -iga (A4, A5)
LCD (I2c moodul)
o SDA kuni A5 Arduino
o SCL kuni Arduino A4
o Arduino VCC kuni 5V
o GND kuni GND Arduino'is
· 4 x 4 klaviatuur
o Nupud 1 - 8 klaviatuuril, mis on ühendatud vastavalt Arduino kontaktiga 9 - 2
TC74A0 temperatuuriandur
o TC74A0 tihvt 2 SDA -le Arduinos
o TC74A0 tihvt 3 GND -le Arduinos
o TC74A0 tihvt 4 Arduino SCL -i külge
o TC74A0 tihvt 5 kuni 5 V Arduino peal
3. samm: kood
#include // Sisaldab koostamisel raamatukogusid
#kaasake
#kaasake
#define Password_Lenght 5
#define Command_Lenght 3
#defineeri CellNumber 10
int kasutajad = 0;
int Ekraan = 0;
int aadress = 72; // tc74a0 AADRESS
int I = 0;
int USER;
int X = 0;
int XY = 0;
int temp;
int tempPre = 0;
char userNum [10] [10] = {{}, {}, {}};
char Andmed [Password_Lenght];
char Master [Password_Lenght] = "5466"; // PAROOL
char ExitData [Command_Lenght]; //
char Master1 [Command_Lenght] = "**"; //
char MenuItem;
char CELLArrayA [10];
char CELLArrayB [10];
süsi CELLArrayC [10];
const bait RIDA = 4; // neli rida
const bait COLS = 4; // neli veergu
bait rowPins [ROWS] = {5, 4, 3, 2};
bait colPins [COLS] = {9, 8, 7, 6};
baitide andmete arv = 0, põhiarv = 0;
bool Pass_is_good;
LiquidCrystal_I2C LCD (0x26, 16, 2);
char hexaKeys [ROWS] [COLS] = // Klaviatuuri alustamine
{
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}
};
Klahvistik customKlaviatuur = Klaviatuur (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);
tühine seadistus ()
{
Seriaalne algus (9600); // see loob jadamonitori
Wire.begin (); // see loob traadi objekti
lcd.algus (16, 2);
lcd.taustavalgus ();
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Palun oodake 3"); // LAADIMISEKRAAN
viivitus (1000);
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Palun oodake 2");
viivitus (1000);
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Palun oodake 1");
viivitus (300);
lcd.clear ();
String myString = "ARDUINO INSTRUCTABLE";
lcd.setCursor (2, 2);
lcd.print (myString);
viivitus (2500);
jaoks (int scrollCounter = 0; scrollCounter <24; scrollCounter ++)
{
lcd.scrollDisplayLeft ();
viivitus (300);
}
lcd.clear ();
lcd.print ("Sisesta parool");
}
tühine tsükkel ()
{
lüliti (Ekraan) // KUS PEAMENÜÜ ON MEIE
{// KAS KASUTAJA VAJAS A, B, C, D
juhtum 0:
{
Parool ();
}
murda;
juhtum 1:
{
lcd.clear ();
lcd.setCursor (0, 1);
lcd.print ("A B C D");
lcd.setCursor (0, 0);
lcd.print ("Peamenüü");
Ekraan = 2;
viivitus (100);
murda;
}
juhtum 2:
{
char customKey = customKeypad.getKey ();
lüliti (customKey)
{
juhtum "A":
{
Serial.println ("A vajutati");
StoreUser ();
murda;
}
juhtum „B”:
{
Serial.println ("B vajutati");
kui (kasutajad == 0) {
lcd.clear ();
lcd.print ("EI SALVESTA KASUTAJAT");
viivitus (3000);
lcd.clear ();
Ekraan = 1;
murda;
}
DisplayUsers (); murda;
}
juhtum „C”:
{
Serial.println ("C vajutati"); // KASUTATUD KATSETAMISE AJAL
int ext = 0;
samas (! ext) {
char ch;
temp = TempMenu ();
kui (temp! = tempPre) {
lcd.clear ();
lcd.print ("Temparature");
lcd.setCursor (0, 1);
lcd.print (temp);
lcd.print ("C");
tempPre = temp;
viivitus (500);
}
ch = customKeypad.getKey ();
if (ch == ' *') // VÄLJU TEMPERATUURIMENÜÜ (kui * VAJATATUD)
{
ekst = 1;
lcd.clear ();
Ekraan = 1;
}
}
murda;
TempMenu ();
murda;
}
juhtum "D":
{
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("NUA PRAC");
lcd.setCursor (0, 1);
lcd.print ("JB SCHOEMAN");
viivitus (3000);
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("MAI 2019");
lcd.setCursor (0, 1);
lcd.print ("CC OOSTHUIZEN");
viivitus (3000);
lcd.clear ();
Ekraan = 1;
}
}
}
}
}
// VÄÄRTUSTE VÕI KORD
tühine parool ()
{
char customKey = customKeypad.getKey ();
if (customKey) // tagab, et klahvi on tegelikult vajutatud, võrdne (customKey! = NO_KEY)
{
Andmed [andmete_arv] = customKey; // salvesta char andmemassiivi
lcd.setCursor (andmete_arv, 1); // liiguta kursorit iga uue sümboli kuvamiseks
lcd.print ("*"); // prindi sümbol nimetatud kursori juurde
andmete_arv ++; // suurendage andmemassiivi 1 võrra uue sümboli salvestamiseks, jälgige ka sisestatud märkide arvu
}
if (data_count == Password_Lenght-1) // kui massiiviindeks on võrdne eeldatavate märkide arvuga, võrrelge andmeid põhiga
{
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Parool on");
if (! strcmp (Data, Master)) // võrdne (strcmp (Data, Master) == 0)
{
lcd.print ("Hea");
lcd.clear ();
Ekraan = 1;
}
muidu
lcd.print ("Halb");
delay (1000); // lisas 1 sekundilise viivituse, et veenduda, et parool kuvatakse ekraanil täielikult enne selle kustutamist.
lcd.clear ();
clearData ();
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Sisesta parool");
}
}
int TempMenu ()
{
Wire.beginTransmission (aadress);
Wire.write (0);
Wire.endTransmission ();
Wire.requestFrom (aadress, 1);
while (Wire.available () == 0);
int c = Wire.read ();
tagasitulek c;
}
tühine clearData ()
{
samas (data_count! = 0)
{// Seda saab kasutada mis tahes suurusega massiivide puhul, Andmed [andmete_arv--] = 0; // tühjendage massiiv uute andmete jaoks
}
}
tühine StoreUser ()
{
int ext = 0;
int kasutaja;
char ch;
samas (! ext) {
lcd.clear ();
lcd.print ("Sisesta kasutaja");
kasutaja = kasutajad + 1;
lcd.print (kasutaja);
int x = 0;
samal ajal (! x) {
jaoks (int i = 0; i <10; i ++) {
ch = customKeypad.waitForKey ();
lcd.setCursor (i, 1);
lcd.print (ch);
userNum [kasutaja - 1] = ch;
}
viivitus (500);
lcd.clear ();
lcd.print ("Jätka");
lcd.setCursor (0, 1);
lcd.print ("* jah # ei");
ch = customKeypad.waitForKey ();
kui (ch == '*') {
x = 1;
}
kui (ch == '#') {
x = 1;
ekst = 1;
lcd.clear ();
Ekraan = 1;
}
}
kasutajad ++;
}
}
tühised DisplayUsers ()
{
lcd.clear ();
(int i = 0; i <kasutajad; i ++) {
lcd.print ("Salvestatud kasutaja");
lcd.print (i + 1);
jaoks (int u = 0; u <10; u ++) {
lcd.setCursor (u, 1);
lcd.print (kasutajaNumber [u]);
}
viivitus (2000);
lcd.clear ();
Ekraan = 1;
}
}
Samm 4: KASUTAJA JUHEND
1. Projekti sisselülitamisel ilmub laadimis- või tervituskuva.
2. Ilmub “Enter Password” ekraan, see ekraan võimaldab teil sisestada 4 tähemärki, tähte või numbrit, õige parool on: 5466, see annab teile juurdepääsu peamenüüle.
3. Õige parooli sisestamisel ilmub peamenüü koos 4 võimaliku funktsiooniga navigeerimiseks.
· A - sisestage kasutaja mobiiltelefoni numbrid.
o Kasutaja süsteemi salvestamiseks sisestage 10 numbrit
o Pärast 10 numbri sisestamist vajutage kasutajate lisamiseks “*” või peamenüüsse naasmiseks “#”
· B - Kuva salvestatud kasutajad
o Kasutajad kerivad ekraanist mööda, neid kuvatakse 3 sekundit, niipea kui kõik kasutajad kuvatakse, suletakse leht ja naaseb peamenüüsse.
o Kui menüüvalikusse A ei lisatud ühtegi kasutajat, kuvatakse ekraanile kiri „NO SAVED USERS”.
· C - kuvab reaalajas temperatuuri
o Põhimenüüsse naasmiseks vajutage “*”
· D - Kuva lühike tekst
o Kuvab looja nime ja teema, mille jaoks see kuupäevaga koostati.