Air Pong

Autor: Bejan Alexandru-Gabriel

Grupa: 334CC

Introducere

Descriere

Implementarea jocului clasic de Pong dar controlat in aer prin miscarea mainii. Odata inceput un joc acesta va fi afisat printr-un display LCD cu o rezolutie de 84×48. De asemenea, pe un alt display LCD se vor afisa diverse informatii despre jocul curent, iar prin intermediul unui buzzer se vor crea efecte sonore.

Scop

Scopul jocului este acela de relaxare si divertisment.

Descriere generală

Cand consola va fi pornita se va astepta se vor utiliza 3 butoane pentru a naviga prin meniuri si a schimba diferitele setari ale jocului, precum alegerea numarului de puncte cu care se castiga jocul sau timpul limita al unui joc. Jocul va porni cand este aleasa optiunea de “start”.

Odata inceput jocul, paletele se vor putea controla prin miscarea unor palete fizice de ping pong in sus si in jos, folosind 2 senzori de distanta, unul pentru fiecare jucator.

Jocul se va desfasura display-ul de Nokia 5110, fiecare paleta, fiind reprezentata prin dreptunghiuri pozitionate pe verticala, iar mingea printr-un patrat. Scopul jocului este ca mingea sa ajunga in poarta adversarului.

In cadrul jocului, informatii precum scorul sau punctajele vor fi afisate pe display-ul LCD. Buzzer-ul va produce sunete, pentru marcarea unui gol.

Schema bloc

Schema electrica

Hardware Design

Componente

  • Arduino UNO
  • Breadboard
  • Senzori de distanta
  • Butoane
  • Modul LCD 1602
  • Display NOKIA 5110 84×48
  • Buzzer
  • Rezistori
  • Fire

Software Design

Ca mediu de dezvoltare pentru proiect am ales Arduno IDE. Am folosit biblioteca “LiquidCristal_I2C” pentru controlul display-ului LCD 1602 prin I2C. Bibliotecile “SPI.h”, “Adafruit_GFX.h” si “Adafruit_PCD8544.h” au fost folosite pentru controlul display-ului de Nokia, prin protocolul SPI.

Funcționalitatea proiectului a fost spartă in funcții pentru a fi mai usor de urmarit cursul execuției programului.

In loop în funcție de valoarea unei variabile de stare a programului, se poate ajunge în funcția responsabila pentru meniul principal, in diversele meniuri pentru setari ale consolei, in modul de joc sau in ecranul de final al jocului.

Deoarece au fost utilizați toti pinii digitali, nu am putut folosi timere reglate prin registre, cum am făcut si la laborator, de accea am fost nevoit sa folosesc funcția millis pentru a controla rata cu care erau actualizate functiile jocului.

Flow-ul jocului este format din urmatorii:

  • Jocul se actualizează la 50 de milisecunde
  • Se citește pozitia fiecarui jucător
  • Se updateaza display-ul pe baza pozițiilor masurate
  • Se updateaza scorul
  • Se actualizează pozitia mingii
  • Se actualizează sunetul (odată începuta secventa de pasi pentru sunetul de gol marcat, aceasta încrementeaza un counter daca încă mai are cantat)
  • La final se verifică daca jocul s-a teminat si se poate trece in starea pe joc teminat, in care se așteaptă apasarea butonului select, pentru a reveni la meniul principal

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Am reusit sa creez un joc interactiv pentru 2 jucatori, care atrage jucatorii prin maniera mai speciala de control prin miscarea paletelor de ping pong prin aer. De asemenea, am reusit sa combin toate componentele intr-o carcasa, care face jocul mai usor de transporat si are si rolul de suport pentru paletele de ping pong.

Concluzii

Mi s-a parut foarte interesant acest proces prin care am putut sa creez o miniconsola de jocuri. Cu toate acestea, daca ar fi sa o iau de la inceput, nu stiu daca as mai incerca sa fac alt joc deoarece odata cu marirea complexitatii am resimtiti limitarile hardware ale arduinio-ului uno, fiind destul de dificil sa creez o experienta fluida la final.

Download

Fisierele folosite in cadrul proiectului: Arhiva Proiect

Jurnal

  • 14.04.2022: Alegere tema si validare cu laborantul
  • 20.04.2022: Incepere proiect in ThinkerCad, pana la comandarea pieselor
  • 25.04.2022: Creare pagina wiki

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

Pong game wiki page

Laborator SPI

Laborator I2C

Tutorial senzor ultrasonic

Tutorial LCD conectat prin I2C

Tutorial LCD Nokia conectat prin SPI

pm/prj2022/dene/retro-game-console.txt · Last modified: 2022/05/27 22:31 by alexandru.bejan0708
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