Proiectul simulează o versiune a bine-cunoscutului joc PONG cu interfață grafică pe un display LCD. Pornirea si resetarea se vor face prin intermediul unor butoane. Controlul “rachetelor” care vor lovi mingea se va face cu un joystick pentru un jucător și cu un senzor de zgomot pentru celălalt. Un potențiometru va controla viteza bilei. Pentru fiecare jucător va exista un LED, care se va aprinde când acesta marchează un punct. Iar dacă un jucător a câștigat, LED-ul corespunzător acestuia se va aprinde și stinge in mod repetat, iar după un timp se resetează jocul. Punctul este înscris când unul dintre jucători nu mai poate lovi bila.
Proiectul propune rememorarea vremurilor când Gaming-ul era doar un simplu concept teoretic. Acest proiect va reaminti de unde a plecat domeniul respectiv. Rezultatul dorit este distracția obținută în urma experimentării unei versiuni de PONG implementată cu noi componente.
Am vrut neapărat să implementez un joc cu componente electronice, pentru a experimenta în ce fel erau făcute când au început să ia amploare. PONG a părut candidatul perfect pentru o astfel de implementare, având în vedere că este primul joc video făcut vreodată.
Proiectul poate fi folosit de oricine dorește să ia o pauză de la activitatea de rutină, reușind să își antreneze reflexele și abilitatea de a lua decizii repede.
Pentru a începe un joc se apasă pe butonul de start. După apăsare, va apărea pe display-ul LCD interfața grafică a jocului PONG cu mingea în mijloc. Direcția în care va pleca mingea se va selecta în funcție de scor. În funcție de cine a marcat, i se va aprinde un LED. Când un jucător va ajunge la 5 puncte marcate, jocul se va termina. Pentru cel care a câștigat, LED-ul se va aprinde și stinge în mod repetat. Jocul poate fi și resetat, printr-un buton. Dacă acel buton este apăsat se revine la starea inițială, și anume: ambii jucători au 0 puncte, mingea este in centrul ecranului și niciun LED nu este aprins. În funcție de valoarea pe care este setat potențiometrul, se va stabili viteza bilei.
1. Arduino Uno
2. 2 Breadboard-uri
3. Fire mamă-tată, tată-tată
4. Joystick
5. Senzor de zgomot
6. 2 LED-uri
7. Potențiometru
8. LCD Nokia 5110
9. 2 butoane
10. Rezistențe
Am lucrat cu Arduino IDE pentru partea de software a acestui proiect.
Bibliotecile externe folosite sunt:
<Arduino.h> - biblioteca de baza pentru funcțiile IDE-ului
<SPI.h> - folosită pentru comunicarea între piesele ce se folosesc de Serial Peripheral Interface
<stdlib.h> - necesară la conversia unui număr într-un șir de caractere (funcția itoa)
“LCD_Functions.h” - bibliotecă pe care am găsit-o pe google, necesară la desenarea figurilor geometrice de pe LCD
Bila se mișcă doar stânga sau dreapta, fără a face unghiuri când se lovește de barele jucătorilor.
Coliziunea are loc dacă barele sunt pe mijlocul axei Oy a ecranului și bila se află fie la începutul axei Ox (unde se află și bara controlată prin
joystick), fie la finalul axei Ox (unde se află și bara controlată prin senzor de zgomot).
LED-ul roșu se aprinde când înscrie jucătorul corespunzător senzorului de sunet.
LED-ul albastru se aprinde când înscrie jucătorul corespunzător joystick-ului.
Lucrând la acest proiect, pot spune că am învățat în sfârșit ceea ce așteptam de foarte mult timp, și anume ce înseamnă cu adevărat să lucrezi cu materiale hardware. Am învățat să nu subestimez puterea curentului electric (motiv pentru care mi-am cumpărat din start mai multe LED-uri deși am folosit doar două pentru proiect) și să tratez cu grijă cuplarea firelor cu restul pieselor (am rupt capetele la 4 fire). Din punct de vedere practic, am învățat cum poți dicta unor piese hardware ce să facă prin scrierea de cod într-un IDE specific.
https://ocw.cs.pub.ro/courses/pm/prj2021/dbrigalda/pong
Documentația PDF: https://ocw.cs.pub.ro/courses/pm/prj2021/dbrigalda/pong?do=export_pdf
Biblioteca pentru desenarea figurilor geometrice:
https://robojax.com/learn/arduino/LCD_Functions.h
Laboratoare OCW: https://ocw.cs.pub.ro/courses/pm