Differences

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

Link to this comparison view

pm:prj2024:ccontasel:irina.pauna0311 [2024/05/04 19:35]
irina.pauna0311 [Hardware Design]
pm:prj2024:ccontasel:irina.pauna0311 [2024/05/25 15:33] (current)
irina.pauna0311 [Concluzii]
Line 12: Line 12:
  
 <note tip> <note tip>
-O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de descriere a acestora precum şi a modului în care interacţionează.+Jocul va fi realizat folosind ​placuta Arduino ​care va avea modul OLED, card SD, speaker, LED-uri si butoane. 
 +Player-ul va misca personajul folosind butonul pentru a evita obstacolele. In timpul jocului, speaker-ul va 
 +face play la theme music, iar LED-ul va indica starea personajului:​ verde - in viata, rosu - mort. 
 +Toate acestea vor fi afisate pe display. 
 + 
 +Schema bloc: 
 + 
 + 
 + 
 +{{:​pm:​prj2024:​ccontasel:​screenshot_2024-05-04_194139.png?​200|}} 
 + 
  
-Exemplu de schemă bloc: http://​www.robs-projects.com/​mp3proj/​newplayer.html 
 </​note>​ </​note>​
  
Line 22: Line 32:
 Lista de piese: Lista de piese:
   *  arduino   *  arduino
-  *  modul LCD+  *  modul OLED
   *  modul Speaker   *  modul Speaker
   *  modul LED-uri   *  modul LED-uri
   *  butoane   *  butoane
   *  modul cititor carduri SD   *  modul cititor carduri SD
 +  * fire
 +
 +Schema electrica:
 +
 +
 +
 +
 +{{:​pm:​prj2024:​ccontasel:​schema_electrica.png?​200|}}
 +
 +
 +Legarea cititor Card SD:
 +Pentru legarea cardului SD, am legat la pinii de la cititor corespunzatori placii arduino MISO - D12, MOSI - D11, SCK - D13, 
 +CS - D10 (am ales eu, nu are un pin corespunzator pe placa), GND-ul e legat la GND si ca tensiunea am ales-o pe cea de 5V.
 +
 +Legare display:
 +Asemanator ca la card SD, am legat la pinii corespunzatori placi: SDA - A4, SCL - A5, GND-ul e legat la GND, iar VCC-ul e legat la tensiunea de 3.3V.
 +
 +La celelalte componente, a fost o legare destul de simpla, fiecare fiind legata la GND si un pin pe care l-am ales.
 +
 +
 +Set-up:
 +
 +
 +{{:​pm:​prj2024:​ccontasel:​setup.jpg?​200|}}
 +
 +
 +Testare componenta:
 +Am ales testarea display-ului prin afisarea unui string.
 +
 +
 +{{:​pm:​prj2024:​ccontasel:​test_display.jpg?​200|}}
 </​note>​ </​note>​
  
Line 38: Line 79:
   * algoritmi şi structuri pe care plănuiţi să le implementaţi   * algoritmi şi structuri pe care plănuiţi să le implementaţi
   * (etapa 3) surse şi funcţii implementate   * (etapa 3) surse şi funcţii implementate
 +
 +Mediul de dezvoltare al proiectului este Arduino IDE.
 +Librarii folosite: U8g2lib, SD, SPI, TMRpcm.
 +Am folosit U82glib pentru a desena pe ecran jocul in sine, iar SD, SPI si TMRpcm sunt folosite pentru a 
 +pune melodii de pe cardul SD in Main Menu.
 +
 +**Concept general:**
 +Jocul functioneaza prin aratarea main menu-ului si incepe propriu-zis o data cu apasarea butonului.
 +In continuarea,​ starea player-ului (adica de viata si moarte) este aratarea prin luminarea LED-ului (verde - in viata,
 +rosu - mort). Player-ul se va deplasa si va trebui prin apasarea butonului sa sara pentru a depasi obstacolele. Daca acesta va interfera cu un obiect, display-ul va arata meniul de Game Over si se va lumina LED-ul rosu.
 +
 +**Algoritmi si functii:**
 +
 +__setup()__
 +
 +In functia, setup se face initializarea piniilor si se va arata mesajul de intro pana la apasarea butonului.
 +
 +__introMessage()__
 +
 +Folosind, u8g2lib se deseneaza meniul principal.
 +
 +__play()__
 +
 +Functia pentru jocul respectiv. Se initializeaza obstacolele,​ player-ul si scorul acestuia. La baza, are un loop din care se iese numai daca se face o coliziune dintre player si obstacol. In loop, mai intai citesc sa vad daca am un input si butonul a fost apasat. Daca da, si momentan player nu este in actiunea de a sari, il fac sa sara.
 +
 +Daca sar, updatez coordonatele player-ului sa sara. Dupa acest pas, verific daca exita o coliziune dintre player si obstacol.
 +Daca exista, ies din acest loop. Altfel, verific sa vad daca obstacolele peste care am sarit au iesit din display si daca da,
 +le voi initializa din nou sa apara pe display.
 +
 +Odata cu pierderea jocului si iesirea din loop, desenez meniul de GameOver si afisez scorul.
 +
 +__gameOver()__
 +
 +Folosind din nou u8g2, voi desena meniul de game over.
 +Pot relua jocul prin apasarea butonului.
 +
 +**Concepte folosite de la laborator**
 +  * GPIO - folosit pentru pinii de input si output: buton, led, buzzer.
 +  * UART - folosit pentru Serial.print(),​ utilizat mai mult pentru debugging.
 +  * I2C - folosit pentru display-ul OLED.
 +  * SPI - folosit pentru card-ul SD.
 </​note>​ </​note>​
  
Line 44: Line 126:
 <note tip> <note tip>
 Care au fost rezultatele obţinute în urma realizării proiectului vostru. Care au fost rezultatele obţinute în urma realizării proiectului vostru.
 +
 +Link video joculet:
 +
 +https://​www.youtube.com/​watch?​v=CPqGosRE6fo
 +
 +
 +Link video buzzer:
 +
 +https://​www.youtube.com/​watch?​v=Q_gELkM0WD4
 +
 +
 </​note>​ </​note>​
  
 ===== Concluzii ===== ===== Concluzii =====
 +
 +Implementarea joculetului a fost una simplistica care a avut cateva dificultati,​ dar a fost un journey dragut. Printe dificultati s-a numarat lipsa memoriei dinamice de pe placa o data cu adaugarea de sunet si faptul ca testul audio care se aude destul de prost, dar acesta functioneaza. Inca o dificultate am putea zice a fost vanatoare de componente. In rest, totul a fost interesant si a fost smooth sailing. Recomand.
  
 ===== Download ===== ===== Download =====
Line 54: Line 149:
  
 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**. 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**.
 +
 +
 +Link Github: https://​github.com/​pauna0311/​ProiectPM
 </​note>​ </​note>​
  
Line 60: Line 158:
 <note tip> <note tip>
 Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.
 +
 +{{:​pm:​prj2024:​ccontasel:​gant_online_pauna.png?​200|}}
 +
 +
 +Grafic Gant pentru planificare.
 +
 +Scopuri de atins:
 +  - Sa fie functional
 </​note>​ </​note>​
  
Line 66: Line 172:
 <​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, eventual grupate pe **Resurse Software** şi **Resurse Hardware**.
 +
 +Surse:
 +https://​kits.plusivo.com/​
 +
 </​note>​ </​note>​
  
 <​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/prj2024/ccontasel/irina.pauna0311.1714840539.txt.gz · Last modified: 2024/05/04 19:35 by irina.pauna0311
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