This shows you the differences between two versions of the page.
pm:prj2021:amocanu:door_lock_rfid_password [2021/06/03 01:12] ana_maria.milcu |
pm:prj2021:amocanu:door_lock_rfid_password [2021/06/03 01:42] (current) ana_maria.milcu |
||
---|---|---|---|
Line 71: | Line 71: | ||
==Introducerea parolei== | ==Introducerea parolei== | ||
- | * La introducerea parolei LCD-ul afișează pe primul rând mesajul 'Enter password' iar pe al doilea rând va afișa caracterele tastate. Se folosește funcția **readPassword()**. În program există o variabilă numită **count** care reține indexul caracterului la care s-a ajuns cu citirea parolei, și este incrementat la fiecare caracter nou tastat la keypad. Dacă se apasă tasta '*', se va șterge ultimul caracter tastat din memorie, dar și de pe LCD. Acest lucru se realizează cu ajutorul funcției **deleteLastKey()** care decrementează count-ul și șterge de pe ecran ultima tastă. Parola este gata de validare doar atunci când user-ul a tastat 4 caractere și a apăsat '#', care joacă rol de enter. Abia apoi se va verifica egalitatea dintre **password** și **correct_pass**. | + | * La introducerea parolei LCD-ul afișează pe primul rând mesajul 'Enter password' iar pe al doilea rând va afișa caracterele tastate. Se folosește funcția **readPassword()**. În program există o variabilă numită **count** care reține indexul caracterului la care s-a ajuns cu citirea parolei, și este incrementat la fiecare caracter nou tastat la keypad. Dacă se apasă tasta '*', se va șterge ultimul caracter tastat din memorie, dar și de pe LCD. Acest lucru se realizează cu ajutorul funcției **deleteLastKey()** care decrementează count-ul și șterge de pe ecran ultima tastă. Parola este gata de validare doar atunci când user-ul a tastat 4 caractere și a apăsat '#', care joacă rol de enter. Abia apoi se va verifica egalitatea dintre **password** și **correct_pass**. \\ |
+ | |||
+ | ==Înregistrarea unui nou tag RFID== | ||
+ | * Dacă se scanează un tag al cărei UID nu se găsește printre **tag_uids**, utilizatorul este întrebat dacă dorește să înregistreze acest nou tag. Dacă apasă tasta 1 și introduce parola corectă, numărul de tag-uri disponibile va fi incrementat și noul UID se adaugă în lista **tag_uids**.\\ | ||
==State== | ==State== | ||
Line 78: | Line 81: | ||
2) Starea 2 înseamnă că s-a scanat deja un tag înregistrat și acum se așteaptă introducerea parolei corecte, pentru a deschide lacătul. După introducerea parolei, fie se deschide lacătul și LED-ul verde se aprinde în cazul parolei corecte, fie LED-ul roșu se aprinde și se activează sunetul buzzer-ului în cazul parolei greșite. Ulterior se revine în starea 1, se așteaptă deci deblocarea lacătului în continuare. \\ | 2) Starea 2 înseamnă că s-a scanat deja un tag înregistrat și acum se așteaptă introducerea parolei corecte, pentru a deschide lacătul. După introducerea parolei, fie se deschide lacătul și LED-ul verde se aprinde în cazul parolei corecte, fie LED-ul roșu se aprinde și se activează sunetul buzzer-ului în cazul parolei greșite. Ulterior se revine în starea 1, se așteaptă deci deblocarea lacătului în continuare. \\ | ||
3) Starea 3 este cea în care se dorește înregistrarea unui tag nou. Similar ca mai sus, se așteaptă o parolă. Dacă este corectă, tag-ul se înregistrează cu succes și utilizatorul este anunțat prin aprinderea LED-ului verde și print-un mesaj pe LCD, dacă nu, LED-ul roșu se aprinde și sunetul buzzer-ului se activează. \\ | 3) Starea 3 este cea în care se dorește înregistrarea unui tag nou. Similar ca mai sus, se așteaptă o parolă. Dacă este corectă, tag-ul se înregistrează cu succes și utilizatorul este anunțat prin aprinderea LED-ului verde și print-un mesaj pe LCD, dacă nu, LED-ul roșu se aprinde și sunetul buzzer-ului se activează. \\ | ||
+ | |||
+ | ===Alte funcții folosite=== | ||
+ | * **//searchTagUID()//** - funcție care caută prin lista de UID permise tag-ul curent citit de la modulul RFID, returnează 1 dacă găsește o egalitate, 0 dacă nu\\ | ||
+ | * **//allowTag()//** - funcție care anunță utilizatorul că tag-ul scanat este unul permis, activează LED-ul verde\\ | ||
+ | * **//denyTag()//** - funcție care anunță utilizatorul că tag-ul scanat nu este unul permis, activează LED-ul roșu și buzzer-ul; întreabă utilizatorul dacă dorește înregistrarea noului tag și trece programul în state = 3 \\ | ||
+ | * **//permitAccess()//** - funcție care rotește servo-ul cu 90 de grade(deschiderea lacătului) și activează LED-ul verde \\ | ||
+ | * **//denyAccess()//** - funcție care anunță utilizatorul că nu a primit acces, activează LED-ul roșu și buzzer-ul \\ | ||
+ | * **//registerNewTag()//** - funcție care anunță utilizatorul că noul tag s-a adăugat cu succes, adaugă UID-ul noului tag la lista UID-urilor permise și activează LED-ul verde \\ | ||
+ | * **//denyRegisteringNewTag()//** - funcție care anunță utilizatorul că nu parola este eronată deci nu poate înregistra noul tag, activează LED-ul roșu și buzzer-ul \\ | ||
+ | * **//setup()//** - inițializarea variabilelor, state = 1\\ | ||
+ | * **//loop()//** - funcție care ciclează prin cele 3 stări posibile\\ | ||
+ | |||
+ | \\ | ||
===== Rezultate obținute ===== | ===== Rezultate obținute ===== |