This shows you the differences between two versions of the page.
pm:prj2022:arosca:020600 [2022/05/27 02:33] cosmin_viorel.lovin |
pm:prj2022:arosca:020600 [2022/05/27 03:51] (current) cosmin_viorel.lovin [Bibliografie/Resurse] |
||
---|---|---|---|
Line 16: | Line 16: | ||
{{ :pm:prj2022:arosca:block_scheme_clovin.png?700 |}} | {{ :pm:prj2022:arosca:block_scheme_clovin.png?700 |}} | ||
- | ===== Bibliografie/Resurse ===== | + | ===== Design Hardware ===== |
- | <note> | + | Pentru realizarea proiectului am folosit urmatoarele componente: |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | * 2.8' TFT_LCD 240 x 320 RBG TOUCH |
- | </note> | + | * 5 rezistente de 1kOhm |
+ | * cabluri tata-tata | ||
+ | * cabluri mama-tata | ||
+ | * 2 analog sticks | ||
+ | * 2 buzzere | ||
+ | * o placuta Arduino UNO | ||
+ | |||
+ | {{ :pm:prj2022:arosca:breadboard_clovin.png?700 |}} | ||
+ | |||
+ | ==== Schema electrica==== | ||
+ | {{ :pm:prj2022:arosca:schematic_clovin.png?700 |}} | ||
+ | ==== Schema PCB==== | ||
+ | {{ :pm:prj2022:arosca:pcb_clovin.png?700 |}} | ||
+ | |||
+ | ===== Design Software ===== | ||
+ | |||
+ | Programul incepe prin generarea celor 2 serpisor. Dimensiunea serpilor este masurata in pixeli. La inceput fiecare sarpe are dimensiunea de 11 pixeli, urmand ca aceasta sa se mareasca de fiecare data cand serpii "mananca" ceva. Pentru implementarea software am folosit bibliotecile: | ||
+ | * SPI.h | ||
+ | * Ucglib.h (folosita pentru LCD) | ||
+ | * Arduino.h | ||
+ | Pentru implementarea miscarii serpilor si maririi acestora am definit o structura de tip list, respectiv coada pentru miscarea lor. Fiecare | ||
+ | miscare noua, schimbare de directie este introdusa in coada. Celulele au obligatia ca la fiecare schimbare de pozitie, sa verifice daca | ||
+ | cumva trebuie sa modifice directia de miscare, parcurgand coada. Avand in vedere ca miscarea celulelor se face in ordine, de la cap spre coada | ||
+ | sarpelui, fiecare element din coada va retine ultima celula care a efectuat mutarea. | ||
+ | Pentru partea de rewards, de asemenea am implementat o lista. Sunt maxim de 10 reward-uri ce se pot genera odata la 3 secunde. In momentul in care | ||
+ | s-au obtinut 10 reward-uri pe tabla de joc, generarea se opreste pana cand cel putin un reward este capturat de unul din serpi. Jocul se incheie | ||
+ | cand are loc o coliziune dintre doi serpi, pierzator fiind sarpele ce ciocneste cu capul celalat sarpe. In caz ca cei doi se ciocnesc cap in cap, | ||
+ | rezulta egalitate. Implementarea este non-blocanta, iar miscarea serpilor se face treptat, in functie de timpul petrecut in joc. | ||
+ | |||
+ | [[https://github.com/cosminlovin7/SNAKE.io|Cod sursa pentru implementare + schema realizata in Fritzing]] | ||
+ | |||
+ | ===== Jurnal ===== | ||
+ | * **3/05/2022** - Prima comanda pentru piese(LCD, Placuta Arduino, Breadboard, fire, rezistente, led-uri) | ||
+ | * **10/05/2022** - A doua comanda pentru piese(tranzistor de nivel logic, un nou LCD, 2 analog sticks) | ||
+ | * **15/05/2022** - Incepere implementare hardware | ||
+ | * **20/05/2022** - Incepere implementare software | ||
+ | * **23/05/2022** - Finalizare implementare hardware | ||
+ | * **24/05/2022** - Finalizare implementare software | ||
+ | * **27/05/2022** - Finalizare pagina proiect | ||
+ | |||
+ | Lucratul la acest proiect a fost o adevarata provocare. Nu am crezut ca este atat de dificil sa te sincronizezi atat pe partea de hardware cat si pe partea de software. Cred totusi ca am reusit sa trec peste impedimente cu brio, pregatindu-ma pentru orice. Cel mai provocator mi s-a parut de implementat LCD-ul. A fost cu adevarat o tortura si o adevarata aventura. Initial am comandat piesa si am crezut ca tot ce trebuie sa fac este sa conectez pinii, sa folosesc biblioteca si cam atat. Insa s-a dovedit a fi cu totul si cu totul altceva. La 2 zile dupa ce am primit piesa, am observat pe site ca am nevoie de fapt de un tranzistor de nivel logic. Am luat 2, sa fie, si mare mi-a fost mirarea cand a ajuns, ca merge, dar nu prea. LCD-ul cam scartaia, mergea bine cateodata si cateodata primeam mare WHITE SCREEN. Totul a pus capac in seara de 23 mai cand am primit WHITE SCREEN si a ramas asa, forever si atunci am vrut cu adevarat sa renunt la LCD si sa folosesc o matrice de LED-uri 8 x 8. Dar intr-un final dupa lungi cautari si debugging, am reusit sa-l implementez folosind rezistente(thumbs up catre Hoisan Stefan-Alexandru, de la 333CA, de la care m-am inspirat pentru implementarea LCD-ului din proiectul lui din 2021). Partea de software a fost destul de lejera, nu mi-a pus deloc probleme si a mers totul ca la carte. | ||
+ | |||
+ | ===== Concluzii ===== | ||
+ | |||
+ | Proiectul a fost o adevarata provocare. Acum 1 luna aveam ceva in cap si pot spune ca dupa lungi sesiuni de munca am obtinut ceea ce mi-am dorit. Jocul arata si se comporta exact cum imi doream, si ma bucur ca am reusit sa aduc si un plus de competitivitate, avand in vedere ca sunt necesari doi jucatori. Ma bucur ca am lucrat cu Arduino, desi o mai facusem si eram familiar cu el, dar realizarea hardware in mod fizic a proiectului a fost ceva nou si a reprezentat o experienta pe care mi-ar placea sa o mai repet. | ||
+ | |||
+ | [[https://youtu.be/Gi7Qd87Eba4|Demo]] | ||
+ | |||
+ | ===== Bibliografie/Resurse ===== | ||
+ | * https://ocw.cs.pub.ro/courses/pm/prj2021/cghenea/70 - pentru implementare LCD | ||
+ | * https://create.arduino.cc/projecthub/SURYATEJA/use-a-buzzer-module-piezo-speaker-using-arduino-uno-89df45 - conectare buzzere | ||
+ | * https://www.youtube.com/watch?v=MlDi0vO9Evg&ab_channel=Brainy-Bits - conectare analog sticks | ||
<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> | ||