Differences

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

Link to this comparison view

pm:prj2024:rvirtan:robert-baceanu [2024/05/23 19:29]
robert.baceanu [Hardware Design]
pm:prj2024:rvirtan:robert-baceanu [2024/05/25 15:34] (current)
robert.baceanu [Software Design]
Line 15: Line 15:
 ===== Descriere generală ===== ===== Descriere generală =====
  
-<​note ​tip>+<​note>​
 Următoarea schemă bloc arată toate modulele proiectului şi descrie modul în care acestea interacţionează. Următoarea schemă bloc arată toate modulele proiectului şi descrie modul în care acestea interacţionează.
 </​note>​ </​note>​
Line 32: Line 32:
 Modulul pentru citirea cardului SD foloseşte protocolul de comunicaţie SPI. Modulul Joystick foloseşte 3 conexiuni, două analogice (pentru măsurarea înclinaţiei joystick-ului pe axele Ox şi Oy, mişcând nava spaţială) şi una digitală (apăsarea butonului joystick-ului,​ ce va face ca nava să tragă cu proiectile). Modulul pentru citirea cardului SD foloseşte protocolul de comunicaţie SPI. Modulul Joystick foloseşte 3 conexiuni, două analogice (pentru măsurarea înclinaţiei joystick-ului pe axele Ox şi Oy, mişcând nava spaţială) şi una digitală (apăsarea butonului joystick-ului,​ ce va face ca nava să tragă cu proiectile).
  
-<​note ​tip>+<​note>​
 Următoarea schemă prezintă conexiunile necesare la nivel de schemă bloc. Următoarea schemă prezintă conexiunile necesare la nivel de schemă bloc.
 </​note>​ </​note>​
Line 38: Line 38:
 {{ :​pm:​prj2024:​rvirtan:​robert-baceanu:​schema_hardware_final.png?​400 |Schema Hardware}} {{ :​pm:​prj2024:​rvirtan:​robert-baceanu:​schema_hardware_final.png?​400 |Schema Hardware}}
  
-<​note ​tip>+<​note>​
 Schema de mai jos prezintă cablajul necesar realizării proiectului. Schema de mai jos prezintă cablajul necesar realizării proiectului.
 </​note>​ </​note>​
Line 44: Line 44:
 {{ :​pm:​prj2024:​rvirtan:​robert-baceanu:​schema_hardware_tinkercad_final.png?​400 |Schema Hardware Tinkercad}} {{ :​pm:​prj2024:​rvirtan:​robert-baceanu:​schema_hardware_tinkercad_final.png?​400 |Schema Hardware Tinkercad}}
  
-<​note ​tip>+<​note>​
 Mai jos, se poate vedea stadiul curent al proiectului la nivel hardware. Mai jos, se poate vedea stadiul curent al proiectului la nivel hardware.
 </​note>​ </​note>​
Line 62: Line 62:
 </​note>​ </​note>​
  
-Detalii despre implementare şi fluxul programului:+== Detalii despre implementare şi fluxul programului ​==
  
 La pornirea jocului, jucătorul este întâmpinat de un title-screen care se glisează din partea dreaptă, în timp ce o scurtă melodie de bun venit este emisă de buzzer-ul pasiv. La pornirea jocului, jucătorul este întâmpinat de un title-screen care se glisează din partea dreaptă, în timp ce o scurtă melodie de bun venit este emisă de buzzer-ul pasiv.
Line 68: Line 68:
 Pentru a naviga în meniu, jucătorul foloseşte joystick-ul. Pentru a naviga în meniu, jucătorul foloseşte joystick-ul.
  
-La alegerea opţiunii "​Leaderboard", ​<​TODO>​.+La alegerea opţiunii "​Leaderboard", ​jucătorului îi vor fi prezentaţi cei mai buni 3 timpi ai săi. Prima pagină afişează cel mai bun timp, în timp ce a doua pagină afişează timpii de pe locurile 2 şi 3. Atunci când jucătorul se află pe prima pagină, apăsarea butonului joystick-ului îl va întoarce în meniul principal. Clasamentul este stocat sub forma unui fişier text pe cardul SD, iar acesta este suprascris cu noile valori la fiecare actualizare.
  
-La alegerea opţiunii "​Play",​ jucătorul va avea de eliminat 5 valuri de nave extraterestre,​ unde fiecare nivel are un nivel de dificultate diferit (mai mulţi inamici/​inamici mai rapizi). La finalul celor 5 valuri, jucătorul primeşte un mesaj de victorie şi îi este calculat timpul în care a reuşit să elimine inamicii.+La alegerea opţiunii "​Play",​ jucătorul va avea de eliminat 5 valuri de nave extraterestre,​ unde fiecare nivel are un grad de dificultate diferit (mai mulţi inamici/​inamici mai rapizi). La finalul celor 5 valuri, jucătorul primeşte un mesaj de victorie şi îi este calculat timpul în care a reuşit să elimine inamicii.
   ​   ​
-Pentru desenarea spaţiului de joc, am împărţit la nivel logic rândurile display-ului în câte două rânduri mai mici, astfel obţinând o hartă de 16x4. La fiecare "​frame",​ este parcursă o matrice de 16x4 a căror valori indică ​daca spaţiul reprezintă nava jucătorului,​ o navă extraterestră,​ un proiectil sau un spaţiu liber.+Pentru desenarea spaţiului de joc, am împărţit la nivel logic rândurile display-ului în câte două rânduri mai mici, astfel obţinând o hartă de 16x4. La fiecare "​frame",​ este parcursă o matrice de 16x4 a căror valori indică ​dacă spaţiul reprezintă nava jucătorului,​ o navă extraterestră,​ un proiectil sau un spaţiu liber.
  
 Logica meniului principal este descrisă în funcţia loop(), care fie afişează meniul curent, fie apelează funcţia play(), unde este implementată logica jocului (funcţie care foloseşte, la rândul ei, alte funcţii menite să modularizeze structura codului pentru a fi uşor de urmărit). Logica meniului principal este descrisă în funcţia loop(), care fie afişează meniul curent, fie apelează funcţia play(), unde este implementată logica jocului (funcţie care foloseşte, la rândul ei, alte funcţii menite să modularizeze structura codului pentru a fi uşor de urmărit).
Line 79: Line 79:
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<​note ​tip+<​note>​ 
-Care au fost rezultatele obţinute în urma realizării ​proiectului ​vostru.+Mai jos puteţi vedea poze ce surprind stadiul final al proiectului.
 </​note>​ </​note>​
  
-===== Concluzii =====+{{ :​pm:​prj2024:​rvirtan:​robert-baceanu:​stadiu_final.jpeg?​400 |Stadiu final}}
  
 +Piesele folosite în realizarea proiectului (placa de dezvoltare, breadboard-ul,​ modulele joystick şi SD) au fost lipite pe o placă de polistiren. În imagine este surprinsă o sesiune de gameplay.
 ===== Download ===== ===== Download =====
  
Line 90: Line 91:
  
 <note tip> <note tip>
-Mai jos este ataşată o arhivă ce conţine fişierul .ino al proiectului ​(<TODO -- variantă intermediară>​).+Mai jos este ataşată o arhivă ce conţine fişierul ​//.ino// al proiectului.
  
-{{:​pm:​prj2024:​rvirtan:​robert-baceanu:​SpaceInvaders-Intermediar.zip|SpaceInvaders-Intermediar}} +{{:​pm:​prj2024:​rvirtan:​robert-baceanu:​spaceinvaderscode.zip|SpaceInvadersCode.zip}}
-</​note>​ +
- +
-===== Jurnal ===== +
- +
-<note tip> +
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.+
 </​note>​ </​note>​
  
Line 104: Line 99:
  
 <​note>​ <​note>​
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**.+Listă cu documente, datasheet-uri,​ resurse Internet folosite.
 </​note>​ </​note>​
  
-<​html><​a class="media mediafile mf_pdf"​ href="?do=export_pdf">​Export to PDF</a></html>+== Resurse hardware ​=
 + 
 +{{:​pm:​prj2024:​rvirtan:​robert-baceanu:​datasheet_atmega328p.pdf|Datasheet ATmega328p}} 
 + 
 +{{:​pm:​prj2024:​rvirtan:​robert-baceanu:​datasheet_lcd.pdf|Datasheet LCD 1602}} 
 + 
 +{{:​pm:​prj2024:​rvirtan:​robert-baceanu:​datasheet_joystick.pdf|Datasheet modul joystick biaxal}} 
 + 
 +{{:​pm:​prj2024:​rvirtan:​robert-baceanu:​datasheet_sd_module.pdf|Datasheet modul citire card microSD}} 
 + 
 +== Resurse software == 
 + 
 +[[https://​docs.arduino.cc/​software/​ide/#​ide-v1|Documentaţie Arduino IDE]] 
 + 
 +[[https://​www.arduino.cc/​reference/​en/​libraries/​liquidcrystal/​|Documentaţie LiquidCrystal.h]] 
 + 
 +[[https://​www.arduino.cc/​reference/​en/​language/​functions/​communication/spi/|Documentaţie SPI.h]]
  
 +[[https://​www.arduino.cc/​reference/​en/​libraries/​sd/​|Documentaţie SD.h]]
pm/prj2024/rvirtan/robert-baceanu.1716481749.txt.gz · Last modified: 2024/05/23 19:29 by robert.baceanu
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