Table of Contents

Miniature Basketball Arcade

Introducere

Proiectul își propune să simuleze, într-un format miniatural, funcționalitatea jocurilor arcade de aruncat la coș. Prin integrarea unui sistem de nivele, afișaj al scorului în timp real și mișcări dinamice ale inelului, utilizatorul poate experimenta într-un mod distractiv și portabil atmosfera unui arcade autentic. Ideea a pornit de la clasicele jocuri de tip „basketball arcade” pe care le găsești în sălile de jocuri. Mi s-a parut interesant să construiesc o versiune mică și portabilă, pe care să o pot avea oriunde. Cred ca proiectul poate fi o sursă de distracție la birou în momentele de pauză.

Descriere generală

Proiectul este controlat de un Arduino Uno (ATmega328P) alimentat de o baterie de 9V, cu posibilitatea de a fi pornit sau oprit printr-un switch mecanic. Pentru detectarea unei aruncări reușite — adică atunci când mingea trece prin inel — este utilizat senzorul TCRT5000. Un timer este folosit pentru gestionarea duratei fiecărui nivel, existând cinci nivele cu dificultate progresivă. În etapele superioare, un servomotor este responsabil de mișcarea dinamică a inelului, adăugând un plus de provocare. Feedbackul vizual și sonor este asigurat printr-un buzzer pasiv și o bandă LED WS2812B, oferind o experiență de joc interactivă. Toate informațiile esențiale — timpul rămas, nivelul curent și scorul — sunt afișate în timp real pe un display LCD 1602.

Fiecare nivel dureaza 60 de secunde si necesita un numar minim de puncte pentru a trece mai departe.

La nivelele 4 si 5 cosul va oscila stanga-dreapta pentru o dificultate mai mare.

La pornire, arcade-ul canta un tune prin intermediul buzzerului

Pentru fiecare coș reușit, scorul va crește automat, iar utilizatorul va primi un feedback printr-o animație luminoasă pe banda LED și un sunet emis de buzzer.

Hardware Design

Pentru ca aveam nevoie de miscare liniara pentru cosul mobil, folosesc un print 3D care transforma servomotorul intr-un mic actuator liniar

Hardware schematic

Piese folosite legate la placa

Proiectul hardware final

Software Design

Mediu de dezvoltare: PlatformIO - VS Code

Fiecare componentă utilizată prezintă un fișier sursă și un fișier header. Pentru contorizarea timpului, utilizez Timerul 2 al microcontrolerului ATmega328P.

Banda RGB comunica pe un protocol ciudat: un bit de 1 presupune trimiterea unui semnal HIGH 6 cicli de ceas, urmat de unul LOW 4 cicli de ceas, respectiv 3 de HIGH si 7 de LOW pentru un bit de 0, se trimit bit cu bit valoarile RGB pentru fiecare led. La nivel de soft, animatia folosita e salvata intr-un vector uint8.

Senzorul IR prezinta debouncing software.

Cum Timerul 2 ATmega328p foloseste un counter pe 8 biti (foarte putin pentru contorizarea unei secunde), folosesc un PRESCALER SOFTWARE care verifica cate intreruperi a generat timerul si executa rutina doar dupa un numar de apeluri.

Github

Repo Github

Concluzii

Download

Repo to download

Bibliografie/Resurse

Optimus - Datasheets

Schematic R3