Shootout Time Attack
Autor: Constantin George, 336CA
Introducere
Proiectul constă în crearea unui joc Single Player prin utilizarea unui mini hoop.
Prin urmare, jucătorul va arunca la un coș pe care se află atașat un senzor, obiectivul
acestuia fiind atingerea unui scor cât mai mare. Jocul va fi format din 3 nivele; avansarea de la
un nivel la cel următor este condiționată de atingerea unui scor limită într-un anumit interval de
timp setat.
Descriere generală
Senzorul detectează dacă o aruncare a fost reușită sau nu;
Scorul și timpul rămas vor fi afișate pe mai multe matrice de leduri 8×8;
Fiecare coș marcat va fi echivalentul a două puncte, cu excepția celor marcate în ultimele 24 de secunde, acestea valorând trei puncte;
Începutul, respectiv sfârșitul fiecărui nivel, și reușirea fiecărei aruncări vor fi semnalate de câte un buzzer.
Hardware Design
Componentele utilizate
Detalii de utilizare a componentelor
Pentru ca senzorul să ofere rezultate satisfăcătoare, la anodul emițărului infraroșu a fost legată în serie o rezistență de 100Ω. De asemenea, la emitorul fototranzistorului a fost legată o rezistență de 150KΩ cu scopul de a mări tensiunea de ieșire a acestuia.
Schema electrică
Software Design
Afișarea pe matricea de leduri
Manipularea datelor pe cele 6 matrice de leduri este realizată cu ajutorul bibliotecii LedControl. Astfel, fiecare matrice are un index propriu care este dat de poziția pe care se află legată în configurație.
Fiecare cifră și literă care poate fi afișată este reprezentată de câte o codificare specifică.
Funcția care aprinde corespunzător ledurile unei matrice se numește setRow. Aceasta primește ca parametri indexul (adresa) matricei, linia și codificarea liniei pe care se vor aprinde ledurile.
Pentru ca timpul să fie actualizat la trecerea fiecărei secunde, s-a utilizat timerul 1 în modul CTC. Rutina de tratare a întreruperii este reprezentată de funcția care realizează afișarea timpului pe cele 3 matrice dedicate acestuia.
Interpretarea datelor întoarse de senzor
Prima măsurătoare citită de la senzor se realizează înainte de începerea jocului, aceasta având rolul de a înregistra influența luminii ambientale asupra acestuia.
Detectarea unei aruncări reușite se face prin calcularea diferenței dintre măsurătoarea menționată anterior și valoarea curentă returnată de senzor. Această diferență este apoi comparată cu o valoare de prag determinată experimental pentru a elimina detectările fals pozitive.
Utilizarea buzzerelor
Pentru buzzerul care emite sunete la începutul și la sfârșitul nivelului se utilizează funcția tone care folosește un timer implicit și astfel nu blochează execuția procesorului.
Deoarece există un anumit timp de ordinul secundelor între două aruncări consecutive, pentru buzzerul care emite sunete la reușirea fiecărei aruncări se utilizează funcția myTone. În acest caz, funcția tone nu se poate utiliza, deoarece aceasta poate reda sunete doar unui singur buzzer la un moment de timp.
Logica jocului
Rezultate obținute
Senzorul detectează precis trecerea mingii prin coș.
Matricea de leduri afișează corect atât timpul rămas și scorul, cât și începutul și sfârșitul fiecărui nivel.
Marcarea fiecărui coș, startul și finalizarea fiecărui nivel sunt marcate de sunetele buzzerelor.
Pentru montajul final, am înlocuit breadboard-ul cu o placă de test pe care am replicat traseele de pe breadboard.
Toate acestea, împreună cu montajul și amplasarea acestuia realizează întocmai ideea și finalitatea proiectului.
-
Concluzii
Download
Bibliografie/Resurse