This shows you the differences between two versions of the page.
|
pm:prj2021:amocanu:ball_maze [2021/06/02 16:41] rares.badita [Descrierea Generala] |
pm:prj2021:amocanu:ball_maze [2021/06/02 18:21] (current) rares.badita [Rezultate obtinute] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Ball Maze ====== | + | ====== Ball Maze🏀 ====== |
| ===== Autor ===== | ===== Autor ===== | ||
| [[rares.badita@stud.acs.pub.ro|Badita Rares-Octavian]] | [[rares.badita@stud.acs.pub.ro|Badita Rares-Octavian]] | ||
| Line 6: | Line 6: | ||
| Proiectul implementeaza un joc format dintr-un labirint ce trebui parcurs cu o minge. | Proiectul implementeaza un joc format dintr-un labirint ce trebui parcurs cu o minge. | ||
| Imputul este dat printr-un joystick ce controleaza inclinatia labirintului. | Imputul este dat printr-un joystick ce controleaza inclinatia labirintului. | ||
| - | Scopul jocului este de aduce migea din punctul A in punctul B folosind doar inclinatia labirintului. | + | Scopul jocului este de aduce migea din punctul A in punctul B si inapoi in A folosind doar inclinatia labirintului. |
| ===== Descrierea Generala ===== | ===== Descrierea Generala ===== | ||
| Line 34: | Line 34: | ||
| {{pm:prj2021:amocanu:poza-deasupra-baditarares.jpeg?800|800}} | {{pm:prj2021:amocanu:poza-deasupra-baditarares.jpeg?800|800}} | ||
| + | |||
| + | Designul este unul modular (labirintul poate fi dat jos usor prin desfacerea celor 2 piulite si desurubarea senzorului de lumina), ceea ce face ca labirintul sa poata fi inlocuit usor cu designuri noi. | ||
| ===== Software Design ===== | ===== Software Design ===== | ||
| Un ciclu in functia loop() are urmatorii pasi: | Un ciclu in functia loop() are urmatorii pasi: | ||
| Line 45: | Line 47: | ||
| Asadar am ales functia de gradul 1 : //f(x) = 30 / 1024 * x//, unde x este valoare de la joystick pe una dintre cele 2 axe, pentru a transforma inputul in output pentru servo motoare. | Asadar am ales functia de gradul 1 : //f(x) = 30 / 1024 * x//, unde x este valoare de la joystick pe una dintre cele 2 axe, pentru a transforma inputul in output pentru servo motoare. | ||
| Intucat outputul este de formt int, functia nu este discreta si se comporta defapt ca //parte_intreaga_inferoara( 30 / 1024 * x )//. | Intucat outputul este de formt int, functia nu este discreta si se comporta defapt ca //parte_intreaga_inferoara( 30 / 1024 * x )//. | ||
| + | |||
| + | Pentru a inregistra timpul de parcurgere al jocului, variabila //game_state// se poate afla in 2 stari posibile: //ongoing// sau //finished//. | ||
| + | Starea //ongoing// este asociata citirii valorii 0 de la senzorul de lumina (lumina nu este blocata de bila), iar starii //finished// ii este asociata valoarea 1. | ||
| + | |||
| + | Un joc nou este terminat daca //game_state// este //ongoing// iar de la senzor se citeste starea //finished//. | ||
| + | Un nou joc este inceput daca //game_state// este //finished// iar la senzor se citeste //ongoing// timp de minim 5 secunde consecutive. | ||
| + | Timpul in joc este calculat ca diferenta intere valorii millis() la finalul si inceputul jocului. | ||
| ===== Rezultate obtinute ===== | ===== Rezultate obtinute ===== | ||
| - | [[https://www.youtube.com/watch?v=FRgoBYZ7KT0| Videoclip cu jocul]] jucat de mine. | + | [[https://www.youtube.com/watch?v=FRgoBYZ7KT0| Prezentarea unui demo al jocului.]] |
| Afisarea timpilor la interfata seriala dupa fiecare joc inregistrat: | Afisarea timpilor la interfata seriala dupa fiecare joc inregistrat: | ||
| Line 53: | Line 62: | ||
| {{pm:prj2021:amocanu:timpibaditarares.png?800|800}} | {{pm:prj2021:amocanu:timpibaditarares.png?800|800}} | ||
| ===== Concluzie ===== | ===== Concluzie ===== | ||
| + | Montajul tehnic a fost cea mai grea parte a proiectului. | ||
| + | |||
| + | Din punct de vedere al softwareului am ajuns la concluzia ca 30 de grade de miscare pe fiecare axa este alegerea optima. | ||
| ===== Resurse ===== | ===== Resurse ===== | ||
| Linkuri utile: | Linkuri utile: | ||