This is an old revision of the document!


Labirint

Introducere

Proiectul meu este o interpretare a unui joc fizic, in care există un labirint, iar scopul este de a duce o minge dintr-un punct de plecare până în alt punct stabilit. Problema care apare este faptul că într-un astfel de joc fizic, labirintul nu poate fi schimbat des, așa că introducerea unei variante digitalizate ar putea să varieze mult mai des labirintul.

Descriere generală

Jocul va începe prin apăsarea unui buton. Mingea va fi afișată pe ecran pe o poziție inițială și utilizatorul poate să înceapă să o miște. Acest lucru se face prin mișcarea fizică a ecranului. Pentru a prelua informațiile asupra poziției și unghiului de inclinare din mediul extern, voi folosi un giroscop și accelerometru. Datele vor fi transmise și poziția mingii pe ecran se va modifica corespunzător. Astfel, jucătorul poate manipula poziția mingii și să o ducă în punctul final. De asemenea, în cazul coliziunii cu un perete al labirintului, mingea nu va fi lăsată să pătrundă în acea porțiune. Jocul se va desfășura într-un timp limită, iar la final, după expirarea acestuia sau după câștigul jucătorului, se va afișa un mesaj corespunzător.

Hardware Design

Piesele folosite pentru acest proiect sunt:

  • Arduino UNO (ATMega328p)
  • Ecran LCD 2.8' TFT 240×320
  • Giroscop și Accelerometru MPU6050
  • Breadboard
  • Buton
  • Fire de legătură

În cazul de față, am conectat LCD-ul, giroscopul și butonul la Arduino Uno. Deoarece modelul de LCD folosit operează la 3.3 V, am folosit niște rezistențe de 10k. Modulul MPU6050 folosește protocolul I2C.

Software Design

Jocul se imparte in patru stari de joc:

  • initializare: se randează background-ul de start cu textul “PRESS BUTTON TO BEGIN!”
  • draw labyrinth: la apăsarea butonului de pe plăcuță, va avea loc o întrerupere prin intermediul căreia se intră din starea de inițializare la starea de creare a labirintului și poziționare a mingii
  • start game: jocul efectiv începe, iar giroscop-ul transmite constant date despre unghiul în care se află. Pe baza acestuia, se randează poziția mingii, adăungând la poziția mingii un echivalent pentru unghiul în care se află. În cazul coliziunilor, jocul este pierdut și se trece în starea finală. Dacă ajunge la punctul final, jocul este câștigat.
  • end game: va arăta rezultatul jocului pe baza unei variabile.

Pentru implementare, am folosit două biblioteci:

  • MPU6050_tockn.h - pentru a obține datele de la giroscop și a le folosi ulterior
  • LCDWIKI_GUI.h - pentru a lucra cu LCD-ul

Rezultate Obţinute

Concluzii

Download

Jurnal

Bibliografie/Resurse

pm/prj2023/iotelea/labirint.1685377052.txt.gz · Last modified: 2023/05/29 19:17 by ioana_theodora.popa
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