This shows you the differences between two versions of the page.
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 o descriere a acestora precum şi a modului în care interacţionează. | + | Jocul va fi realizat folosind o 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> |