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:31]
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: ​ 
-    * 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 
-    *  
  
 +**Design si mod de functionare**
  
-**Schema ​de stari si tranzitii**:+**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)
  
 +**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 82: 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.1685302309.txt.gz · Last modified: 2023/05/28 22:31 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