Differences

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

Link to this comparison view

pm:prj2022:imacovei:alexandru.anica [2022/05/08 17:05]
alexandru.anica [Lista piese:]
pm:prj2022:imacovei:alexandru.anica [2022/05/17 16:41] (current)
alexandru.anica [Download]
Line 32: Line 32:
  
  
-<note tip> +==== Mediu de dezoltare ==== 
-Descrierea codului aplicaţiei (firmware):​ +  * **Arduino IDE** pentru programarea placutei Arduino 
-  * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) +  * **EAGLE** - pentru schema electrica
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib) +
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi +
-  ​(etapa 3) surse şi funcţii implementate +
-</​note>​+
  
-===== Rezultate Obţinute =====+=== Librarii si surse 3rd-party ​=== 
 +  * **Biblioteca FastLED** - pentru programarea matricei de leduri
  
-<note tip> +=== Descrierea codului === 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +== Initializari == 
-</​note>​+Folosesc o serie de variabile globale ce vor fi initializate in setup si folosite mai tarziu in joc: 
 +Pinii folositi pentru componente:​ 
 +  * SW_pin_joystick0 
 +  * X_pin_joystick0 
 +  * Y_pin_joystick0 
 +  * SW_pin_joystick1 
 +  * X_pin_joystick1 
 +  * Y_pin_joystick1 
 +  * buzzerPin
  
-===== Concluzii =====+Variabile ce retin pozitia cursorului (curenta si precedenta):​ 
 +  * cursorX 
 +  * cursorY 
 +  * lastCursorX 
 +  * lastCursorY
  
-===== Download =====+Variabila ce retine playerul ce se afla la turn: **player**
  
-<note warning>​ +Matrici ​de leduri liniarizate ce vorfi folosite ​pe parcursul jocului: 
-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ă ;-).+  * ledsP1Boats 
 +  * ledsP2Boats 
 +  * ledsP1Hits 
 +  * ledsP2Hits 
 +  * ledsP1 
 +  * ledsP2
  
-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**. +Variabile ce reprezinta entitatile ce pot aparea ​pe matrice: 
-</​note>​+  ​boat 
 +  ​empty 
 +  ​hit 
 +  ​miss 
 +  ​cursor 
 +  ​cPlayer0 
 +  ​cPlayer1
  
-===== Jurnal =====+Variabile pentru contorizarea timpului la intreruperi:​ 
 +  * timerPD2 
 +  * timerPD4
  
-<note tip> 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. 
-</​note>​ 
  
 +== Functii folosite ==
 +  * **resetGame** - elibereaza matricele de joc, seteaza random jocul pentru cei 2 playeri, apoi anunta prin buzzer startul de joc
 +  * **debugBoats** - functie folosita in debugging, printeaza matricele de barcute ale celor 2 jucatori pe interfata seriala
 +  * **setDisplay** - matricele liniarizate ledsP1 si ledsP2 sunt folosite pentru a afisa barcile, respectiv punctele lovite de cei doi jucatori, prin setDisplay, se face switch in functie de jucatorul la turn intre cele doua matrici pentru vizualizarea jocului
 +  * **setup** - setez pinii dispozitivelor folosite, pornesc interfata seriala, initializez jocul prin resetGame() si setez cele doua matrici de leduri la pinii corespunzatori
 +  * **play** - in aceasta functie se citesc miscarile joystick-ului de la playerul ce se afla la turn si se muta corespunzator cursorul acestuia. Apasarea joystick-ului anunta faptul ca jucatorul a tintit un anume punct din arena adversarului,​ ce urmeaza sa fie evaluat la hit or miss
 +  * **start** - functia ce va fi folosita in loop-ul programului,​ aceasta face switch intre matricele de joc prin setDisplay si apeleaza functia play cu parametrii necesari jucatorului la turn
 +  * **win** - anunta prin buzzer finalul jocului, pune pe display-ul castigatorului un smiley face si pe cel al pierzatorului un sad face, apoi prin apasarea oricarui buton al joystick-ului reincepe jocul prin functia resetGame
 +  * **checkEnded** - vefica daca vreunul dintre jucatori a castigat (a distrus toate "​barcutele"​ adversarului) si apeleaza functia win daca unul din jucatori a castigat
 +  * **ISR(INT0_vect)** - functie ce controleaza intreruperea INT pe PD2, daca butonul a fost tinut apasat mai mult de 2.5 secunde, se resetaza jocul la urmatoarea mutare
 +  * **ISR(PCINT2_vect)** - functie ce controleaza intreruperea PCINT pe PD4, acelasi efect ca cel de pe PD2
 +
 +
 +===== Rezultate Obţinute =====
 +Demo: [[https://​www.youtube.com/​watch?​v=ci0xViEkQDU]]
 +
 +{{ :​pm:​prj2022:​imacovei:​battleship_fizic_anica_gabriel.jpeg?​800 |}}
 +
 +
 +===== Concluzii =====
 +Am bifat un achievment pe care il am inca din copilarie: sa fac jocuri :)
 +
 +Cred ca am sumarizat destul de bine continutul laboratoarelor de PM.
 +===== Download =====
 +
 +
 +{{:​pm:​prj2022:​imacovei:​333cb_anica_alexandru-gabriel_battleship.zip|}}
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +Laboratoarele de PM 
-Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. + 
-</note>+Biblioteca pentru control led-uri: [[https://​github.com/FastLED/FastLED]]
  
 <​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/prj2022/imacovei/alexandru.anica.1652018744.txt.gz · Last modified: 2022/05/08 17:05 by alexandru.anica
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