Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2024:fstancu:alexandru.trofim [2024/05/05 15:14]
alexandru.trofim
pm:prj2024:fstancu:alexandru.trofim [2024/05/27 20:54] (current)
alexandru.trofim
Line 1: Line 1:
-====== ​Nume proiect ​======+2====== ​Clepsidra Digitala ​======
 ===== Introducere ===== ===== Introducere =====
 Proiectul constă în crearea unei clepsidre digitale care va fi reprezentata de doua matrici 8x8 cu LED-uri. Scopul principal al proiectului este de a crea o reprezentare digitală a clepsidrei clasice, oferind o experiență vizuală atractivă și interactivă. Proiectul constă în crearea unei clepsidre digitale care va fi reprezentata de doua matrici 8x8 cu LED-uri. Scopul principal al proiectului este de a crea o reprezentare digitală a clepsidrei clasice, oferind o experiență vizuală atractivă și interactivă.
 Ideea de bază a pornit de la fascinația pentru clepsidre ca instrumente de măsurare a timpului ​ Ideea de bază a pornit de la fascinația pentru clepsidre ca instrumente de măsurare a timpului ​
-<note tip> +
-Prezentarea pe scurt a proiectului vostru: +
-  * ce face +
-  * care este scopul lui +
-  * care a fost ideea de la care aţi pornit +
-  * de ce credeţi că este util pentru alţii şi pentru voi +
-</​note>​+
 ===== Descriere generală ===== ===== Descriere generală =====
-{{:​pm:​prj2024:​fstancu:​screenshot_2024-05-05_at_15.11.21.png?​600|}} +{{:​pm:​prj2024:​fstancu:​clepsidra_diagram.png?​600|}} 
-<note tip>+
 O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează. O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează.
  
-Exemplu ​de schemă bloc: http://www.robs-projects.com/​mp3proj/​newplayer.html +Proiectul este realizat cu ajutorul unei placute Arduino Nano ATMega328P. Se poate seta timpul ​de rulare al clepsidrei cu ajutorul butoanelorSe va implementa un engine de particule pentru a rula animatia clepsidrei 
-</​note>​+ 
 +Cu ajutorul unui accelerometru vom detecta pozitia in spatiu pentru a determina directia de deplasare a particulelor
  
 ===== Hardware Design ===== ===== Hardware Design =====
 +
 {{:​pm:​prj2024:​fstancu:​screenshot_2024-05-05_at_14.55.56.png?​600|}} {{:​pm:​prj2024:​fstancu:​screenshot_2024-05-05_at_14.55.56.png?​600|}}
-<note tip> + 
-Aici puneţtot ce ţine de hardware design: + 
-  * listă de piese +=== Piese necesare pentru acest proiect === 
-  * scheme electrice ​(se pot lua şi de pe Internet şi din datasheet-urie.g. http://www.captain.at/​electronic-atmega16-mmc-schematic.png+ 
-  * diagrame de semnal ​ +==== Arduino Nano ATmega328P ====  
-  * rezultatele simulării + 
-</​note>​+Controlerul principal al proiectului. Arduino Nano va coordona funcționarea tuturor componentelor conectate, inclusiv afișarea pe matricele LED, citirea datelor de la accelerometru șgestionarea intrărilor ​de la butoane. 
 + 
 +==== MODUL MATRICE LED MAX7219 ====  
 + 
 +Afișează "​nisipul"​ clepsidrei digitale. Fiecare modul matrice LED de 8x8 va afișa o jumătate a clepsidrei. 
 + 
 +**Pinii utilizati:​** 
 +  * VCC: Conectat la alimentare(5v). 
 +  * GND: Conectat la masa. 
 +  * DI: Pinul pentru transferul datelor conectat la pinul D4 al microcontrolerului. 
 +  * CS: Pinul pentru selectarea chipului conectat la pinul D6 al microcontrolerului. 
 +  * CLK: Pinul pentru semnalul ​de ceas  conectat la pinul D5 al microcontrolerului. 
 + 
 + 
 +==== Butoane ====  
 + 
 +Permite utilizatorului să interacționeze cu clepsidra digitalăde exemplu, pentru a seta timpul de rulare. 
 + 
 +**Pinii utilizati:** 
 +Am conectat butoanele la pinii D2, D3 si la GND. 
 + 
 +==== Modul accelerometru si giroscop MPU6050 ====  
 + 
 +Detectează orientarea și mișcarea dispozitivuluiFolosit pentru a simula efectul de întoarcere al clepsidrei. 
 + 
 +**Pinii utilizati:​** 
 +  * VCC și GND: Alimentare (3.3V sau 5V și masă). 
 +  * SCL (Serial Clock Line): Conectat la pinul A5 (SCL) al Arduino Nano. 
 +  * SDA (Serial Data Line): Conectat la pinul A4 (SDA) al Arduino Nano. 
 + 
 + 
 +==== Breadboard ====  
 +Facilitarea conexiunilor electrice între componente fără a fi nevoie de lipire permanentă. Mi-as dori sa   ​printez la o imprimanta 3d o carcasa pentru clepsidra pentru un aspect estetic mai placut. 
 + 
 +{{:​pm:​prj2024:​fstancu:​clepsidra_2.jpg?​600|}} 
 + 
 +{{:​pm:​prj2024:​fstancu:​clepsidra_3.jpg?​600|}}
  
 ===== Software Design ===== ===== Software Design =====
  
 +==== Biblioteci folosite ==== 
  
-<note tip> +Pentru realizarea proiectului am folosit biblioteci pentru ​ 
-Descrierea codului aplicaţiei (firmware): +a facilita interactiunea cu accelerometrul si matricile LED. 
-  * mediu de dezvoltare ​(if any) (e.gAVR StudioCodeVisionAVR) +  * **Adafruit_MPU6050 si Adafruit_Sensor**,​ pentru interactiunea cu accelerometrul MPU6050 
-  * librării şi surse 3rd-party (e.gProcyon AVRlib) +  * **LedControl**,​ pentru a controla matricile LED MAX7219 
-  * algoritmi şi structuri ​pe care plănuiţi să le implementaţi +  * De asemenea, din cauza faptului ca proiectul este Software heavy, 
-  * (etapa 3surse şi funcţii implementate +am folosit biblioteci pentru timere(**Timer.h**), interactiunea cu butoanele(*EncButton*),​  
-</​note>​+pentru a abstractiza lucrul cu acestea si a scadea din complexitatea codului. 
 +  
 +==== Elementul de noutateEngine de particule ==== 
 + 
 +Am mai vazut video-uri pe internet cu implementari de astfel de clepsidre digitaleinsa acestea aveau implementata miscarea particulelor de nisip foarte simplist, care nu semana deloc cu comportamentul nisipului in viata reala. De aceea elementul de noutate al proiectului il constituie engine-ul de particule, care incearca sa replice un comportament mai realist al nisipului digital. 
 + 
 +===== Detalii de implementare ===== 
 + 
 +Reprezentarea logica nisipului in programul meu, este realizata printr-un array de bytes, 
 +fiecare byte reprezentand o linie din matricea 8x8 al matricei de LED-uri. 
 +Ideea de la care am pornit a fost de a detecta directia in care este inclinata clepsidra 
 +si de a misca particulele de nisip in directia respectiva, tinand cont de coliziunea dintre particule.  
 +Numarul optim de directii pe care le detecteaza accelerometrul este 16.  
 +Astfel putem obtine o miscare cat de cat fluida a particulelor.  
 + 
 +{{:​pm:​prj2024:​fstancu:​clepsidra_1.jpg?​600|}} 
 + 
 +Pentru asigurare miscarii impredictibile a particulelor,​ atunci cand o particula poate 
 +merge in mai multe celule se alege aleator urmatoarea pozitie. 
 + 
 +==== Functii implementate ====  
 + 
 +  * Pentru setarea timpului de scurgere a clepsidrei am folosit doua butoane si am implementat o functia **printDig**,​ care printeaza orice cifra la o pozitia data in matriceDe asemenea avem functia changeTime, pentru a modifica timpul de scurgere a clepsidrei
 +  * Din cauza ca matricea este de fapt un array de bytes, am implementat niste functii pentru interactiunea cu aceasta: setXY, getXY, goDir, canGoDir, clearMatrix,​ fillMatrix, clearMatrix. 
 +  * Pentru interpretarea datelor de pe accelerometru si determinarea directiei de deplasare al particulelor am definit functiile: getRightDirByAngle,​ getLeftDirByAngle,​ getDownDirByAngle 
 +  * Pentru rularea engine-ului de particule am implementat functiile: fall(functia care permite scurgerea nisipului dintr-o matrice in alta), updateMatrix si resetSand.
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
 +In continuare voi prezenta cum functioneaza clepsidra.
 +
  
-<note tip> 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. 
-</​note>​ 
  
 ===== Concluzii ===== ===== Concluzii =====
  
 ===== Download ===== ===== Download =====
 +Repository: https://​github.com/​alexandru-trofim/​arduino-hourglass
 <note warning> <note warning>
 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ă ;-). 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ă ;-).
pm/prj2024/fstancu/alexandru.trofim.1714911289.txt.gz · Last modified: 2024/05/05 15:14 by alexandru.trofim
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0