This shows you the differences between two versions of the page.
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> | ||