This is an old revision of the document!
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.
Hardware Design
Arduino UNO R3 (ATmega328p)
Micro Servomotor SG90 180°
Suport pentru baterie de 9V
Conectori de Fire PCT-8-118
Conectori de fire LT-211(SPL-1)
Modul Buzzer Pasiv
Bară de LED-uri RGB WS2812 cu 8 LED-uri
Comutator LED KCD1-101N
Senzor de Obstacole Digital Infraroșu
LCD 1602 cu Interfata I2C si Backlight Albastru
Fire 28 AWG
Hardware schematic
Piesle conectate la placa (designul 3D e in lucru)
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.
actuator (servomotor) (PB2) - controlat prin Fast PWM
screen lcd - controlat prin I2C
senzor IR (PD2) - un trailing edge activeaza o intrerupere,
banda led rgb (PD6) - controlata prin bit-banging
buzzer (PB0) - controlat prin PWM prin GPIO bit-banging
timer - Timer2 folosit pentru cronometrare
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
Rezultate Obţinute
Care au fost rezultatele obţinute în urma realizării proiectului vostru.
Concluzii
Download
O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună

.
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.
Jurnal
Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.
Bibliografie/Resurse
Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.
Export to PDF