Differences

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

Link to this comparison view

pm:prj2023:apredescu:17 [2023/05/17 17:46]
mihnea.mitroi
pm:prj2023:apredescu:17 [2023/05/28 13:14] (current)
mihnea.mitroi
Line 34: Line 34:
  
 === Schema electrică === === Schema electrică ===
 +{{ :​pm:​prj2023:​apredescu:​schema_electrica_eagle_semafor.png?​600 |}}
 +
 +=== Schemă Tinkercad===
 {{ :​pm:​prj2023:​apredescu:​schema_electrica_semafor.png?​600 |}} {{ :​pm:​prj2023:​apredescu:​schema_electrica_semafor.png?​600 |}}
  
 ===== Software Design ===== ===== Software Design =====
  
-<note tip> +Mediul ​de dezvoltare ​folosit în realizarea proiectului:​ Arduino IDE.
-Descrierea codului aplicaţiei (firmware):​ +
-  * mediu de dezvoltare ​(if any) (e.g. AVR Studio, CodeVisionAVR) +
-  * librării şi surse 3rd-party (e.gProcyon AVRlib) +
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi +
-  * (etapa 3) surse şi funcţii implementate +
-</​note>​+
  
 +=== Descrierea codului aplicaţiei (firmware) ===
 +
 +void setup() - inițializează culorile LED-urilor în starea inițială, apelează funcțiile de configurare pentru întreruperi,​ timer și ADC și configurează magistrala serială.
 +  * void configureInterrupt0() - configurează întreruperea externă 0 pentru apăsarea butonului conectat la PD2; 
 +  * void configureADC() - configurează citirea analogică de pe PA0;
 +  * void configureTimer1() - configurează Timer-ul 1 să genereze o întrerupere la 0.5s;
 +  * Serial.begin() - configurează comunicarea pe magistrala serială cu baud-rate 9600;
 +  * ISR(INT0_vect) - întrerupere generată la apăsarea butonului conectat la PD2 ce facilitează trecerea pietonului care a apăsat butonul;
 +  * ISR(TIMER1_COMPA_vect) - întrerupere generată de Timer-ul 1 care incrementează contorul de timp;
 +  ​
 +void loop() - verifică daca valorea luminozității permite trecerea în modul de noapte, altfel implementează logica unui automat finit cu stări ce realizează tranziții la momente de timp predefinite. Stările celor două semafoare sunt în complementaritate (atunci când un semafor este în prima parte a ciclului de tranziții, cel de-al doilea este în partea a doua, iar apoi rolurile se inversează).
 +  * uint16_t analogAdcRead() - citește valoarea luminozității (valoare analogică între 0 și 1024) de pe PA0;
 +  * void greenYellow(),​ yellowRed(),​ pedRedGreen(),​ pedGreenRed(),​ redYellow(),​ yellowGreen() - funcții ce realizază trecerea sistemului dintr-o stare în alta;
 +  * Serial.available(),​ Serial.read(),​ Serial.write() - funcții utilizate pentru a realiza comunicarea și sincronizarea dintre cele două plăcuțe Arduino pe magistrala serială;
 +  ​
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip+<html
-Care au fost rezultatele obţinute în urma realizării proiectului vostru+  <​iframe  
-</note>+    src="​https://​www.youtube.com/​embed/​q9DNmfMmjqE"​ 
 +    title="​YouTube video pl{{:​pm:​prj2023:​apredescu:​surse_sistem_semaforizare.zip|https://​ocw.cs.pub.ro/​courses/​lib/​images/​toolbar/​linkextern.png}}ayer"​  
 +    frameborder="​0"​  
 +    allow="​accelerometer;​ autoplay; clipboard-write;​ encrypted-media;​ gyroscope; picture-in-picture;​ web-share"​  
 +    allowfullscreen 
 +    style="​aspect-ratio:​ 16/9; width: 100%;"​ 
 +  ></​iframe>​ 
 +</html>
  
 ===== Concluzii ===== ===== Concluzii =====
 +
 +Cred că a fost o experiență plăcută și foarte utilă, mai ales că a fost primul meu proiect de hardware. A fost destul de dificil să fac ca întregul sistem să se comporte în cel mai realist mod posibil, dar în final sunt mulțumit de ceea ce am obținut.
  
 ===== Download ===== ===== Download =====
- +{{:pm:prj2023:apredescu:surse_sistem_semaforizare.zip|Surse sistem semaforizare}}
-<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ă ;-). +
- +
-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**. +
-</​note>​+
  
 ===== Jurnal ===== ===== Jurnal =====
  
-  * 04.05 - Crearea paginii de proiect și scrierea documentației +  * 04.05 - Crearea paginii de proiect și scrierea documentației ​(M1) 
-  * 17.05 - Adăugare Hardware Design+  * 17.05 - Adăugare Hardware Design ​(M2) 
 +  * 28.05 - Adăugare Software Design (M3)
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +Datasheet ATmega328P: https://​ocw.cs.pub.ro/​courses/​_media/​pm/​atmel-7810-automotive-microcontrollers-atmega328p_datasheet.pdf 
-Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**+ 
-</note>+Biblioteca Serial: https://​www.arduino.cc/​reference/​en/​language/​functions/​communication/​serial/
  
 <​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>​
  
pm/prj2023/apredescu/17.1684334809.txt.gz · Last modified: 2023/05/17 17:46 by mihnea.mitroi
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