Differences

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

Link to this comparison view

pm:prj2023:vstoica:bogdan.rizescu [2023/05/28 22:32]
bogdan.rizescu [Software Design]
pm:prj2023:vstoica:bogdan.rizescu [2023/05/28 23:42] (current)
bogdan.rizescu [Download]
Line 40: Line 40:
  
 ===== Software Design ===== ===== Software Design =====
- 
- 
-<note tip> 
-Descrierea codului aplicaţiei (firmware): 
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi 
-  * (etapa 3) surse şi funcţii implementate 
-</​note>​ 
  
 Mediul de dezvoltare pe care l-am utilizat a fost **Arduino IDE**. De asemenea, am utilizat **https://​webwhiteboard.com/​** pentru a desena schema de stari si tranzitii. Mediul de dezvoltare pe care l-am utilizat a fost **Arduino IDE**. De asemenea, am utilizat **https://​webwhiteboard.com/​** pentru a desena schema de stari si tranzitii.
 +
  
 Am folosit, de asemenea, cunostinte din urmatoarele laboratoare de PM: Am folosit, de asemenea, cunostinte din urmatoarele laboratoare de PM:
Line 55: Line 49:
   * Laboratorul 4: **ADC** (pentru a citi valoarea senzorului analogic de temperatura si a o transforma din mV in °C)   * Laboratorul 4: **ADC** (pentru a citi valoarea senzorului analogic de temperatura si a o transforma din mV in °C)
  
-**Design si mod de functionare**:​ 
  
-Initializari:​  +**Design ​si mod de functionare**
-    ​inainte de toate, am initializat 6 variabile pentru fiecare LED in parte, fiecareia corespunzandu-i cate un pin digital de pe placuta Arduino +
-    ​am initializat ​si o variabila pentru senzor cu numarul pinului analogic la care senzorul este conectat +
-    ​+
  
 +**Initializari**: ​
 +    * am initializat 6 variabile pentru fiecare LED in parte, fiecareia corespunzandu-i cate un pin digital de pe placuta Arduino
 +    * am initializat si o variabila pentru senzor cu numarul pinului analogic la care senzorul este conectat (A0)
 +    * utilizez, de asemenea, 2 variabile pentru a seta temporizarea intre starile semaforului (timpul de tranzitie intre toate starile), cat si temporizarea pentru prima schimbare de culori (cat asteapta pietonul sa se schimbe culorile semaforului)
 +    * folosesc enum-ul LightState in care imi definesc starile semaforului (GREEN_RED, YELLOW_REDYELLOW,​ RED_GREEN, REDYELLOW_YELLOW)
  
-**Schema ​de stari si tranzitii**:+**Descriere functii implementate**:​ 
 +  * **setup()** - setez LED-urile in starea lor initiala (verde la masini si rosu la pietoni), atasez intreruperea ​de butonul caruia ii activez rezistenta de PULLUP ​si apelez functia de configurare a timer-ului 
 +  ​* **loop()** - se citesc permanent valorile primite de la senzorul de temperatura si se modifica temporizarea intiala pentru pietoni in functie de ce transmite senzorul; de asemenea, cat timp buton este tratat ca fiind fost apasat, functia changeLights() este apelata, semaforul schimbandu-si starile corespunzator 
 +  * **changeLights()** - in functie de starea curenta in care se afla semaforul (a carei valoare este una definita in enum-ul LightState mentionat), se schimba starea curenta la o noua stare (luand in calcul si daca a trecut suficient timp pentru a putea trece la o alta stare) 
 +  * **configureTimer()** - configureaza Timer1 conform laboratorului de PM, setand OCR1A la o valoarea astfel incat sa am o intrerupere o data pe secunda 
 +  * **ISR(TIMER1_COMPA_vect)** - adun 1000 la variabila seconds (reprezentand 1000ms), functia fiind apelata o data pe secunda 
 +  * **buttonInterrupt()** - functia este apelata in momentul in care butonul este apasat, setand variabila buttonPressed ca fiind true, urmand a fi setata la false in momentul in care semaforul ajunge din nou la starea initiala (verde la masini, rosu la pietoni)
  
 +
 +
 +**Schema de stari si tranzitii**:​
 +{{ :​pm:​prj2023:​vstoica:​traffic_software_states.jpg?​800 |}}
  
  
Line 83: Line 88:
 ===== Download ===== ===== Download =====
  
-{{:​pm:​prj2023:​vstoica:​arhiva_proiect.zip|}} +Arhiva proiect: ​{{:​pm:​prj2023:​vstoica:​traffic_light_controller_rizescu_bogdan-constantin.zip|}}
  
 ===== Jurnal ===== ===== Jurnal =====
pm/prj2023/vstoica/bogdan.rizescu.1685302372.txt.gz · Last modified: 2023/05/28 22:32 by bogdan.rizescu
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