This shows you the differences between two versions of the page.
pm:prj2023:vstoica:bogdan.rizescu [2023/05/28 22:30] 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 | ||
- | * ADAUG MAI TARZIU | ||
- | </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 56: | 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 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 ===== |