This shows you the differences between two versions of the page.
pm:prj2024:mdinica:mihaela.stefan1411 [2024/05/23 19:11] mihaela.stefan1411 [Software Design] |
pm:prj2024:mdinica:mihaela.stefan1411 [2024/05/27 16:23] (current) mihaela.stefan1411 [Rezultate Obţinute] |
||
---|---|---|---|
Line 65: | Line 65: | ||
===== Software Design ===== | ===== Software Design ===== | ||
- | Link pentru repo-ul de GitHub: [[https://github.com/stefanmihaela14/PM_Project|GitHub]] | + | **Link pentru repo-ul de GitHub**: [[https://github.com/stefanmihaela14/PM_Project|GitHub]] |
- | Mediu de dezvoltare: Arduino IDE | + | **Mediu de dezvoltare:** Arduino IDE |
- | Biblioteci utilizate:LiquidCrystal_I2C.h (pentru LCD-ul cu I2C), DHT.h (pentru senzorul de temperatura DHT11) | + | **Biblioteci utilizate:** LiquidCrystal_I2C.h (pentru LCD-ul cu I2C), DHT.h (pentru senzorul de temperatura DHT11) |
- | Software design: | + | **Software design:** |
Codul se afla in fisierul proiect.ino si contine implementarea pentru jocurile de lumini si afisarea datelor pe LCD de la senzorul de temperatura si | Codul se afla in fisierul proiect.ino si contine implementarea pentru jocurile de lumini si afisarea datelor pe LCD de la senzorul de temperatura si | ||
a datelor suplimentare pentru ceas si alarma. | a datelor suplimentare pentru ceas si alarma. | ||
- | Funcția de setup se ocupă cu inițializarea componentelor (Led-uri, ecran LCD si senzor). | + | Funcția de **setup** se ocupă cu inițializarea componentelor (Led-uri, ecran LCD si senzor). |
- | Pentru jocurile de lumini am cate o functie pentru fiecare. Primele doua jocuri de lumini sunt prestabilite (primul un 'trenulet' de lumini si al doilea consta in schimbarea led-urilor simultan intr-o culoare), al treilea este in functie de temperatura camerei: **albastru** pentru temperaturi de mai putin de 20 de grade Celsius, **galben** pentru temperaturi intre 20 si 30 de grade Celsius si **rosu** pentru temperaturi mai mari de 30 de grade Celsius. | + | Pentru **jocurile de lumini** am cate o functie pentru fiecare. Primele doua jocuri de lumini sunt prestabilite (primul un 'trenulet' de lumini si al doilea consta in schimbarea led-urilor simultan intr-o culoare), al treilea este in functie de temperatura camerei: **albastru** pentru temperaturi de mai putin de 20 de grade Celsius, **galben** pentru temperaturi intre 20 si 30 de grade Celsius si **rosu** pentru temperaturi mai mari de 30 de grade Celsius. Am folosit millis() in loc de intreruperi pentru a evita evetualele blocaje cand comunic cu LCD-ul si senzorul. Mai exista functii ajutatoare pentru jcourile de lumini: **setLEDColor** pentru a facilita selectarea led-ului pe care dorim sa il aprindem si culoarea acestuia si o **matrice** in care am definit cateva culori. |
- | <note tip> | + | Pentru **afisarea datelor pe ecranul LCD** am o functie ajutatoare care preia inputul de la utilizator prin seriala. Am initializat ceasul sa porneasca de la 0:0:0, iar utilizatorul poate sa dea urmatoarele comenzi: |
- | Descrierea codului aplicaţiei (firmware): | + | |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * Co:m:s -> C urmat de ora:minut:secunda, pentru a seta ora actuala a ceasului. |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * Ao:m:s -> A urmat de ora:minut:secunda, pentru a seta alarma la ora dorita. Aceasta se va afisa pe ecran pe al doilea rand. |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | * Mnr_mod -> M urmart de numarul modului pentru jocul de lumini. |
- | * (etapa 3) surse şi funcţii implementate | + | * S -> pentru a opri alarma (daca nu este oprita de utilizator, alarma se va opri dupa 60 de secunde). |
- | </note> | + | * R -> pentru a reseta alarma (o sa dispara si de pe ecran alarma). |
+ | |||
+ | Codul pentru ceas l-am facut in loop si tot aici citesc temoeratura de la senzor folosind biblioteca DHT.h | ||
+ | |||
+ | Pe ecran se afiseaza ora curenta pe primul rand in stanga, temperatura pe primul rand in dreapta si alarma pe al doilea rand. | ||
+ | |||
+ | {{:pm:prj2024:mdinica:whatsapp_image_2024-05-23_at_22.19.17.jpeg?600|}} | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | Videoclip prezentare proiect: [[https://youtu.be/apXpaFeYXEU|Video Proiect PM]] |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | |
- | ===== Concluzii ===== | + | Ceasul respecta planul inintial pentru hardware. Carcasa de plexiglas este formata din doua bucati, in partea inferioara se afla arduino-ul, in partea superioara breadboard-ul cu senzorul de temepratura si LED-urile, iar pe carcasa este ecranul LCD. |
- | ===== Download ===== | + | {{:pm:prj2024:mdinica:carcasa_ceas1.jpeg?300|}} |
+ | {{:pm:prj2024:mdinica:carcasa_ceas2.jpeg?300|}} | ||
- | <note warning> | + | Senzorul de temperatura, desi scria ca este DHT11 nu functiona utilizand biblioteca pentru el, dar a mers folosindu-l ca fiind DHT22. Temperatura are o marja de eroare destul de mare, posibil un defect din fabrica, dar tinand cont ca nu trebuia sa fie exacta nu a reprezentat un impediment. |
- | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | + | |
- | Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:pm:prj20??:c?** sau **:pm:prj20??:c?:nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | + | Se pot adauga din cod noi jocuri de lumini sau se poate extinde codul pentru a lasa utilizatorul sa isi creeze propriile jocuri de lumini. |
- | </note> | + | |
- | ===== Jurnal ===== | ||
- | <note tip> | + | |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | |
- | </note> | + | ===== Concluzii ===== |
+ | |||
+ | Am folosit laboratoarele: 1.UART (pentru comunicarea cu laptop-ul), 2.Intreruperi (am folosit intreruperi pentru a realiza ceasul), 6.I2C (pentru LCD-ul cu I2C). | ||
+ | |||
+ | A fost interesant de implementat atat partea software, cat si cea hardware. A durat putin pana am facut schita carcasei ca sa pot sa trag toate firele necesare de la arduinio la breadboard si la lcd, montajul electric nu a durat foarte mult pentru ca am urmat schema electrica. Codul ar putea fi imbunatatit cu o modalitate prin care utilizatorii sa isi poate crea singuri propeiile jocuri de lumini fara sa fie necesar sa se modifice codul. | ||
+ | ===== Download ===== | ||
+ | |||
+ | Arhiva proiect: {{:pm:prj2024:mdinica:proiect_pm_ms.zip|}} | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | <note> | + | **Resurse folosite:** |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | * [[https://www.ti.com/lit/ds/symlink/cd4094b.pdf|Datasheet 8-bit register shifter]] |
- | </note> | + | * [[https://docs.arduino.cc/tutorials/communication/guide-to-shift-out/|Tutorial shift-and-store bus register]] |
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||