This is an old revision of the document!
Plăcuța va primi input de la:
Output-ul va fi transmis prin:
Ca funcționalitate generală, utilizatorul își poate înregistra un tag (care se prinde de mască printr-un clips) prin apăsarea unui buton pentru a trece în modul “înregistrare” și o pune în slot-ul din cuier care este afișat pe ecran.
Masca trebuie scanată și când este luată din cuier, și când este depozitată în cuier. Programul va incrementa counter-ul de utilizări doar la ridicare și începe cu 1 by default.
În afară de mesajele ajutătoare, ecranul LCD va afișa tot timpul numărul de utilizări per slot.
Cuierul va avea de asemenea și un buton pentru a șterge o anume mască, pentru a putea refolosi tag-ul.
Nume | Numar piese |
---|---|
Arduino Uno | 1 |
Ecran LCD | 1 |
Butoane | 2 |
Cititor RFID-RC522 | 1 |
Stickere NFC | 5 |
Leduri | 7 |
Rezistori | 7 |
Fire tată-tată | - |
Fire mamă-tată | - |
Breadboard | 1 |
Nu știu cât se înțelege din diagramă, deci conexiunile vin astfel:
Pini RFID reader | Pini Arduino |
---|---|
SDA (SS) | 10 |
SCK | 13 |
MOSI | 11 |
MISO | 12 |
IRQ | - |
GND | GND |
RST (reset) | - |
3.3V | 3.3V |
Pini LCD | Pini Arduino |
---|---|
SDA | SDA |
SCL | SCL |
GND | GND |
Vcc | 5V |
Butonul de ștergere este conectat la pinul 4, iar cel de scriere la pinul 2.
Cele 5 led-uri pentru sloturile cuierului sunt conectate la A0, A1, A2, A3, 5.
Cele 2 led-uri care indică dacă ne aflăm în modul de scriere/ștergere sunt conectate la pinii 9 respectiv 7.
O simplificare a codului ar fi diagrama asta de stări:
Ca implementare propriu zisă, am folosit multe structuri de date în care țin informații despre fiecare ID în parte. Am extrem de multe “variabile de stare”, care mă ajută să țin cont de ce s-a întâmplat deja și ce trebuie să se întâmple.
De exemplu, am 2 variabile pentru a ține cont dacă sunt în modul de scriere, ștergere sau citire. Variabilele astea sunt activate de cele 2 butoane, care folosesc întreruperi.
Alte variabilă care m-a ajutat mult ține de LCD. Eu am în loop mereu să se afișeze slot-urile și utilizările. Dacă vreau să afișez un alt mesaj, trebuie să sar peste partea din loop care afișeaza utilizările ca să nu se suprascrie instantaneu mesajul. Variabila se setează desigur când afișez ceva pe LCD și se desetează în 2 moduri:
Am verificat ce stickere NFC am deja, desi trebuie sa mai comand cateva, si am vazut ca au id-uri la fel, deci va trebui sa scriu/citesc date pe stickere ca sa pot identifica in mod unic mastile.