This is an old revision of the document!
Proiectul este un joc asemănător cu celebrul joc pe Smartphone, Fruit Ninja. Proiectul prezintă un ecran LCD pe care va apărea un fruct la cateva secunde și o direcție din care este indicat ca fructul să fie tăiat. Jucătorul prezintă o sabie, asemănător cu controller-ul Wii, ce prezintă un modul accelerometru/giroscop pentru a înregistra mișcările și direcția de tăiere. În cazul în care jucătorul taie o bombă(obiect de pe ecran), sau sensul tăierii este greșit, unul dintre led-urile ce vor reprezenta viețile jucătorului se va închide, iar buzzer-ul va produce un sunet specific. De asemenea, sabia prezintă un buton de lock pentru a ignora miscările greșite ale utilizatorului.
Scopul este crearea unui joc asemănător cu cele de pe consola Wii care este totodată interactiv.
Am plecat de la dorința de a face un proiect bazat pe înregistrarea mișcărilor folosind senzori de proximitate sau un accelerometru/giroscop.
-distracție
-dezvoltare timp de reacție
Jucătorul va trimite input-uri către Arduino prin intermediul sabiei legată la modul, și prin intermediul butoanelor(exemplu: cel de lock, ca va bloca acceptarea input-urilor de la modul). Aceste inputuri vor fi folosite în cadrul gameplay-ului propriu-zis, de unde, în funcție de rezultate, se va trimite un semnal către buzzer, ori led-ul/led-urile nu va/vor mai primi curent din partea placuței Arduino.
-Arduino
-breadboard
-fire
-2 butoane
-ecran LCD
-1 buzzer
-3 led-uri
-3 rezistente
-modul accelerometru si giroscop
Proiectul a fost realizat în Arduino IDE.
Pentru realizarea proiectului am folosit următoarele biblioteci:
-TFT.h si SPI.h folosite pentru LCD-ul KMR-1.8 SPI
-Wire.h folosit pentru MPU9250
Jocul începe cu un ecran de start joc, definit in setup(). Dacă butonul de reset este apăsat, se apelează funcția reset() ce pornește jocul, împreună cu cele 3 led-uri și generarea fructelor/direcțiilor de tăiere. Pe parcursul funcției loop(), se apelează funcția drawFruit() ce generează un număr random de la 0 la 6(6 fructe) si drawPointer() pentru săgeți. Se citește poziția inițială a accelerometrului și, după un delay de 2 secunde, dacă butonul 2 este apăsat, se preiau, din nou, informații despre accelerometru. În funcție de aceste coordonate se stabilește un boolean cu privire la tăiere, și la tăierea corectă, în funcție de pointer-ul afișat pe ecran. Dacă o bombă este tăiată sau un fruct nu este tăiat pe direcția dată, se pierde o viață, se stinge un led, și se activează sunetul buzzer-ului pentru 0.25 secunde. Când se pierd toate viețile, va apărea pe un ecran cu mesajul “You lost!” și jocul se poate lua de la capăt. Dacă fructul este tăiat corect, jucătorul primește o viață înapoi și pe ecran va aparea o linie pentru fiecare punct din scor. Cand este atins scorul de 40 de puncte, jocul este considerat câștigat.
TODO
TODO
TODO
Documentația în format PDF