This shows you the differences between two versions of the page.
pm:prj2021:agrigore:snake_lcd [2021/05/22 13:18] roxana_elena.stiuca [Bibliografie/Resurse] |
pm:prj2021:agrigore:snake_lcd [2021/05/24 10:04] (current) roxana_elena.stiuca [Software Design] |
||
---|---|---|---|
Line 7: | Line 7: | ||
* La deschiderea programului, va aparea un mesaj de inceput. Apasarea oricarui buton declanseaza inceputul jocului. | * La deschiderea programului, va aparea un mesaj de inceput. Apasarea oricarui buton declanseaza inceputul jocului. | ||
* Scorul va aparea in coltul din stanga sus, in timpul jocului. | * Scorul va aparea in coltul din stanga sus, in timpul jocului. | ||
- | * In caz de gameover va aparea un mesaj cu scorul total acumulat. Apasarea oricarui buton declanseaza inceperea unui joc nou. | + | * In caz de gameover va aparea un mesaj. Apasarea oricarui buton declanseaza inceperea unui joc nou. |
==== Descriere generala ==== | ==== Descriere generala ==== | ||
Line 14: | Line 14: | ||
=== Componente === | === Componente === | ||
- | ^ Nume ^ Numar ^ Link ^ Poza ^ | + | ^ Nume ^ Numar ^ Link ^ |
- | | Arduino Uno | 1 | [[https://www.optimusdigital.ro/en/compatibile-with-arduino-uno/1678-placa-de-dezvoltare-compatibila-cu-arduino-uno-atmega328p-i-ch340.html?search_query=0104110000016997&results=1|click]] | | | + | | Arduino Uno | 1 | [[https://www.optimusdigital.ro/en/compatibile-with-arduino-uno/1678-placa-de-dezvoltare-compatibila-cu-arduino-uno-atmega328p-i-ch340.html?search_query=0104110000016997&results=1|click]] | |
- | | Breadboard | 1 | [[https://www.optimusdigital.ro/en/breadboards/8-breadboard-hq-830-points.html?search_query=0104110000001382&results=1|click]] | | | + | | Breadboard | 1 | [[https://www.optimusdigital.ro/en/breadboards/8-breadboard-hq-830-points.html?search_query=0104110000001382&results=1|click]] | |
- | | Modul LCD SPI 128x160 | 1 | [[https://ardushop.ro/ro/home/865-modul-lcd-spi-128x160.html?search_query=Modul+LCD+SPI+128x160&results=392|click]] | | | + | | Modul LCD SPI 128x160 | 1 | [[https://ardushop.ro/ro/home/865-modul-lcd-spi-128x160.html?search_query=Modul+LCD+SPI+128x160&results=392|click]] | |
- | | Modul bluetooth HC-05 | 1 | [[https://ardushop.ro/ro/home/132-modul-bluetooth-hc-06-cu-3-pini.html?search_query=Modul+bluetooth+HC-05&results=380|click]] | | | + | | Modul bluetooth HC-05 | 1 | [[https://ardushop.ro/ro/home/132-modul-bluetooth-hc-06-cu-3-pini.html?search_query=Modul+bluetooth+HC-05&results=380|click]] | |
- | | Fire | 14 | | | | + | | Fire | 14 | | |
Line 31: | Line 31: | ||
Din perspectiva telefonului, este nevoie de un telefon Android cu o aplicatie de tipul Bluetooth Terminal. Eu am ales aplicatia [[https://play.google.com/store/apps/details?id=com.app.aktham.blueduino&hl=en_US&gl=US|BlueDuino]] care permite conectarea prin Bluetooth la un device, ofera o interfata grafica cu 4 butoane (sus, jos, stanga, dreapta) care pot fi configurate a.i. la apasare sa fie trimis un String ("w", "s", "a", "d"). In Arduino, tot ce trebuie facut este: myblue.read() si verificarea caracterului citit. | Din perspectiva telefonului, este nevoie de un telefon Android cu o aplicatie de tipul Bluetooth Terminal. Eu am ales aplicatia [[https://play.google.com/store/apps/details?id=com.app.aktham.blueduino&hl=en_US&gl=US|BlueDuino]] care permite conectarea prin Bluetooth la un device, ofera o interfata grafica cu 4 butoane (sus, jos, stanga, dreapta) care pot fi configurate a.i. la apasare sa fie trimis un String ("w", "s", "a", "d"). In Arduino, tot ce trebuie facut este: myblue.read() si verificarea caracterului citit. | ||
+ | |||
+ | {{:pm:prj2021:agrigore:snakelcdbt_hard1.jpeg?200 |}} | ||
=== Conectare ecran LCD === | === Conectare ecran LCD === | ||
Line 41: | Line 43: | ||
* A0 -> pinul 9; | * A0 -> pinul 9; | ||
* RESET -> pinul 8. | * RESET -> pinul 8. | ||
+ | |||
+ | {{:pm:prj2021:agrigore:snakelcdbt_hard2.jpeg?200 |}} | ||
==== Software Design ==== | ==== Software Design ==== | ||
=== Mediul de dezvoltare === | === Mediul de dezvoltare === | ||
Line 60: | Line 64: | ||
* initializare ecran; | * initializare ecran; | ||
* umplere ecran cu culoarea de background; | * umplere ecran cu culoarea de background; | ||
- | * afisare mesaj de input. | + | * afisare mesaj de inceput. |
* setup snake: | * setup snake: | ||
* setare limite zona de joc (zona in care personajul se plimba); | * setare limite zona de joc (zona in care personajul se plimba); | ||
Line 80: | Line 84: | ||
* personajul este mutat cu un pas; se verifica de asemenea daca avem coliziune cap sarpe-corp sarpe (caz in care am trece in GAMEOVER) sau coliziuni sarpe-mancare (caz in care actualizam scorul si gasim noi coordonate pentru mancare). | * personajul este mutat cu un pas; se verifica de asemenea daca avem coliziune cap sarpe-corp sarpe (caz in care am trece in GAMEOVER) sau coliziuni sarpe-mancare (caz in care actualizam scorul si gasim noi coordonate pentru mancare). | ||
* GAMEOVER: | * GAMEOVER: | ||
- | * pe ecran apare un mesaj: //"Gameover! Total score: X. Press any button to restart."// | + | * pe ecran apare un mesaj: //"Gameover! Press any button to restart."// |
* se asteapta input (directia initiala pentru noul joc); la primire se trece in READY. | * se asteapta input (directia initiala pentru noul joc); la primire se trece in READY. | ||
Line 99: | Line 103: | ||
Pentru a nu exista un delay din cauza scrierii pe ecran, la fiecare loop prin starea PLAY este desenat doar blocul nou aparut pentru sarpe si este desenat peste blocul din sarpe ce a disparut cu culoarea fundalului. | Pentru a nu exista un delay din cauza scrierii pe ecran, la fiecare loop prin starea PLAY este desenat doar blocul nou aparut pentru sarpe si este desenat peste blocul din sarpe ce a disparut cu culoarea fundalului. | ||
==== Rezultate obtinute ==== | ==== Rezultate obtinute ==== | ||
- | TBA: poza cele 3 ecrane (inceput, joc, gameover) | + | In final, am obtinut un joc simpatic, functional, la care se pierde greu (zona de joc e mare si dureaza pana ajungi la o lungime destul de mare incat sa poata exista coliziuni). |
+ | |||
+ | Prezentare: | ||
+ | {{:pm:prj2021:agrigore:snakelcdbt_cutie.jpeg?200|}} | ||
+ | |||
+ | Ecran inceput: | ||
+ | {{:pm:prj2021:agrigore:snakelcdbt_start.jpeg?200|}} | ||
+ | |||
+ | Ecran joc: | ||
+ | {{:pm:prj2021:agrigore:snakelcdbt_joc.jpeg?200|}} | ||
+ | |||
+ | Gameover: | ||
+ | {{:pm:prj2021:agrigore:snakelcdbt_gameover.jpeg?200|}} | ||
- | TBA: video demo. | + | === Demo === |
+ | [[https://youtu.be/H8UyOqMI5z4|Link Demo Youtube]] | ||
==== Concluzii ==== | ==== Concluzii ==== | ||
* Proiectul este realizat in intregime si functioneaza conform asteptarilor. | * Proiectul este realizat in intregime si functioneaza conform asteptarilor. | ||
Line 108: | Line 125: | ||
* Un feature nou posibil ar fi pastrarea scorurilor maxime intr-o varianta persistenta (ex. in EEPROM) si afisarea acestora la finalul jocului. | * Un feature nou posibil ar fi pastrarea scorurilor maxime intr-o varianta persistenta (ex. in EEPROM) si afisarea acestora la finalul jocului. | ||
==== Download ==== | ==== Download ==== | ||
- | TBA: link cod | + | {{:pm:prj2021:agrigore:snakelcdbt_cod_schematic_roxanastiuca.zip|Fisiere sursa + Schematic}} |
==== Jurnal ==== | ==== Jurnal ==== | ||
* 22/4: alegere tema proiect. | * 22/4: alegere tema proiect. | ||
Line 124: | Line 141: | ||
* https://www.arduino.cc/en/Reference/softwareSerial | * https://www.arduino.cc/en/Reference/softwareSerial | ||
* https://create.arduino.cc/projecthub/akshayjoseph666/interfacing-bluetooth-module-hc-05-with-arduino-uno-f5209b | * https://create.arduino.cc/projecthub/akshayjoseph666/interfacing-bluetooth-module-hc-05-with-arduino-uno-f5209b | ||
+ | * https://ardushop.ro/ro/home/865-modul-lcd-spi-128x160.html?search_query=Modul+LCD+SPI+128x160&results=392 | ||
+ | * https://ardushop.ro/ro/home/132-modul-bluetooth-hc-06-cu-3-pini.html?search_query=Modul+bluetooth+HC-05&results=380 |