Table of Contents

Labyrinth

Email: albert.chirila@stud.acs.pub.ro

Introducere

Descriere

Proiectul constă în realizarea unui joc labirint. Acesta este format dintr-o matrice de leduri 8*8, unde vor fi reprezentate hărțile specifice celor două nivele, 1 și 2. Zidurile labirintului sunt formate din leduri aprinse constant, în timp ce jucătorul va fi un led aprins intermitent și controlat printr-un joystick. Un alt obstacol al labirintului va fi format dintr-o bară atașată de un servomotor și va putea oferi jucătorului posibilitatea de a trece mai departe în labirint. Servomotorul este controlat de un potențiometru. Atât la începutul, respectiv finalul jocului sau al unui nivel, se va aprinde un led verde, respectiv un led rosu.

Scop

Jocul are ca scop stimularea atenției jucătorului, fiind un mod de relaxare plăcut.

Descriere generală

Jucătorul este reprezentat de un led aprins intermitent și poate fi controlat prin intermediul unui joystick. În momentul începerii jocului, se va aprinde un led verde, iar jucatoul va putea fi mișcat. Jocul conține două nivele, iar harțile vor fi reprezentate pe o matrice de leduri 8*8. Pereții labirintului sunt leduri aprinse constant.

Un obstacol prezent în timpul jocului va fi o bară atașată de servomotor. Servomotorul este controlat de către jucător printr-un potențiometru. La finalul fiecărui nivel, se va aprinde un led de culoare roșie.

Schema bloc

Hardware Design

Listă de componente:

Schema electrică

Software Design

Pentru implementarea programului, am folosit biblioteca LedControl.h pentru a putea lucra cu matricea de leduri, dar și Servo.h pentru controlul servomotorului.

La început, am definit toți pinii, desenele ce vor fi afișate și alte variabile. În setup am făcut inițializările acestor și am setat servomotorul.

În loop, logica este segmentată în trei părți. La început sunt tratate cazurile de la începutul jocului sau a unui nivel. Astfel, sunt setate valorile inițiale ale componentelor și afișate harțile specifice. A doua parte constă în mișcarea jucătorului și a servomotorului. Se verifică dacă jucătorul parăsește suprafața harții, dar și dacă acesta intră în coliziune cu pereții labirintului, sau cu peretele virtual controlat prin servomotor. În cazul unor evenimente ca acestea, vor fi afișate diferite desene pe matrice, dar și reluarea jocului. A treia parte prezintă starea jocului în momentul în care jucătorul a pierdut sau a trecut la nivelul următor. De asemenea, la terminarea jocului, jucătorul poate decide să dea restart.

Rezultate Obținute

Se poate observa în poza de mai jos startul jocului.

La trecerea unui nivel se poate observa afișarea.

În momentul terminării jocului, se afișează un față zâmbitoare.

În momentul în care jucătorul pierde jocul(se lovește de un perete al labirintului sau de peretele virtual(pai)), se afișează o față tristă.

La finalul jocului, jucătorul are obțiunea de a da restart.

Pentru a viziona jocul complet, accesati videoul: https://youtu.be/0gGUHTFpNMs

Concluzii

A fost o experiență foarte frumoasă. Mă așteptam să reușesc sa fac partea software destul de repede, dar nu și partea hardware, pe care am reușit, surprinzându-mă, să o implementez foarte repede. Consider că proiectul a fost destul de complex, având piese care trebuie conectate foarte bine împreună, pentru a oferi un joc cât mai bun și mai captivant.

Download

Codul, schema bloc, schema electrică, videoul si pozele pot fi descărcate de aici: proiectlabyrinth.zip

Documentația în format PDF.

Bibliografie/Resurse

https://create.arduino.cc/projecthub/CiferTech/8x8-led-matrix-tutorial-project-code-and-schematic-969e60 - matrice leduri

https://www.tutorialspoint.com/arduino/arduino_servo_motor.htm#:~:text=Advertisements,angular%20position%20of%20the%20shaft. - control servomotor

https://create.arduino.cc/projecthub/MisterBotBreak/how-to-use-a-joystick-with-serial-monitor-1f04f0 - control joystick