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
  • Arduino UNO
  • Breadboard
  • Matrice de leduri 8×8 MAX7219
  • Buzzer
  • Rezistențe
  • Senzor optic reflectiv TCRT5000
Detalii de utilizare a componentelor
  • Cele 6 matrice de leduri sunt legate în configurație Daisy Chain.
  • 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
  • Au fost create funcții care efectuează începerea fiecărui nivel, care verifică dacă se poate face trecerea la nivelul următor și care marchează sfârșitul 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

  • A fost unul dintre cele mai interesante proiecte de realizat pentru facultate, având în vedere că am avut libertate totală în alegerea temei și a modului de implementare. Sunt foarte mulțumit de aspectul vizual al proiectului și de faptul că îl pot folosi oricând doresc să mă joc.

Download

Bibliografie/Resurse

pm/prj2021/apredescu/shootout-time-attack.txt · Last modified: 2021/06/02 23:05 by george.constantin99
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