This is an old revision of the document!
TicTacToe++ este o consolă handheld care transformă jocul clasic de “X și 0” dintr-o activitate banală pe hârtie într-o experiență electronică interactivă. Dispozitivul utilizează un microcontroler pentru a gestiona logica de joc, afișând grila pe un ecran OLED de înaltă rezoluție și oferind control tactil prin cinci butoane fizice. Față de varianta tradițională, proiectul aduce funcții avansate precum grile variabile (moduri de joc diferite), un sistem de memorare a scorului și feedback sonor polifonic, generat prin melodii 8-bit specifice pentru victorie sau remiză.
Scopul acestui proiect este crearea unui gadget autonom care să ofere divertisment rapid, punând în același timp în valoare puterea sistemelor embedded. Ideea a pornit de la dorința de a digitaliza un joc retro, dar cu un “upgrade” tehnologic semnificativ: înlocuirea creionului cu un algoritm care arbitrează singur meciurile și eliminarea nevoii de ecrane tactile în favoarea butoanelor mecanice. Am vrut să creez ceva ce se simte ca o consolă de jocuri din anii '90, dar care rulează pe un hardware modern și eficient.
Componentele principale pe care le utilizez în proiect sunt:
Microcontroler ATmega328P (Xplained Mini)
Este unitatea centrală de procesare a consolei, responsabilă pentru rularea logicii jocului și coordonarea tuturor perifericelor. Acesta citește semnalele de la butoane, procesează mutările jucătorilor și transmite datele vizuale către ecran și semnalele audio către buzzer. Placa permite programarea facilă prin interfața Micro-USB și oferă suficienți pini I/O pentru extinderi ulterioare.
Display OLED 0.96 inch
Am utilizat un afișaj OLED cu rezoluție de 128×64 pixeli pentru a oferi interfața grafică a jocului TicTacToe++. Acesta comunică cu microcontrolerul prin protocolul I2C (Inter-Integrated Circuit), utilizând doar doi pini de date (SDA și SCL), ceea ce reduce complexitatea cablajului. Ecranul afișează grila de joc, simbolurile “X” și “0”, cursorul de selecție și mesajele de stare (victorie, remiză sau rândul jucătorului).
Butoane Push-Button (Input Control)
Sistemul utilizează un set de 5 butoane tactile pentru controlul interacțiunii: patru butoane pentru navigarea pe grilă (sus, jos, stânga, dreapta) și un buton central pentru confirmarea mutării (Select). Fiecare buton este configurat folosind rezistențele interne de tip pull-up ale microcontrolerului pentru a asigura citiri digitale stabile și pentru a simplifica circuitul electronic pe breadboard.
Buzzer Pasiv
Modulul buzzer pasiv este utilizat pentru a oferi feedback audio în timp real, îmbunătățind experiența de utilizare și accesibilitatea dispozitivului. Spre deosebire de un buzzer activ, acesta permite generarea de frecvențe variabile, oferind posibilitatea de a programa sunete distincte pentru mutări valide, avertizări în cazul mutărilor incorecte și melodii scurte de tip “8-bit” pentru finalul jocului. Acest feedback auditiv permite utilizatorului să confirme acțiunile fără a fi necesară monitorizarea constantă a ecranului.
Breadboard și Fire Jumper (Tată-Tată)
Pentru asamblarea prototipului am utilizat un breadboard de 400 de puncte, care permite conectarea componentelor fără necesitatea lipirii. Comunicarea fizică între componente se realizează prin fire de conexiune de tip “Tată-Tată”, asigurând un sistem modular ce permite depanarea rapidă și modificarea circuitului în timpul dezvoltării software-ului.
Suport de baterii 4xAA
Asigură alimentarea autonomă a consolei la o tensiune de aproximativ 6V, oferind portabilitate sistemului. Alimentarea este conectată la pinul VIN al plăcii de dezvoltare, care reglează tensiunea la 5V pentru a proteja microcontrolerul și perifericele conectate.
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.