Pong

Nume: Dobre Andreea-Viktorya
Grupa: 331AA

Introducere

Proiectul constă în realizarea jocului clasic Pong, afișat pe un ecran. Jocul este conceput pentru un singur jucator, având la dispoziție două butoane pentru a-și controla platforma vertical (sus și jos). Pe ecran, mingea se deplasează și ricoșează atunci când lovește platformele jucătorilor sau marginile superioare și inferioare ale ecranului. Jocul se termina in momentul in care minge pica. Scopul proiectului este de a oferi un mod simplu și distractiv de a te juca.

Descriere generală

Diagrama bloc

Inițial apare un ecran de start pentru a împiedica începerea automată a jocului când circuitul este alimentat de la USB. Pentru acesta se folosește un buton separat.

O dată apăsat acel buton apar pe ecran: scorul - în partea de sus, plaftorma și mingea. Mingea va incepe să se miste într-o direcție aleatoare pornind din centrul ecranului.

Hardware Design

Hardware desing

  • ecran oled
  • Arduino UNO R3
  • butoane
  • giroscop

Schema Circuit

Bill Of Materials

Imagini componente

Software Design

Laboratoare folosite

  • Laboratorul 0 – GPIO → folosit pentru configurarea pinilor pentru butoane.
  • Laboratorul 1 – UART → folosit pentru a afișa informații de debug în consola serială.
  • Laboratorul 2 – Întreruperi → folosit pentru tratarea apasărilor de buton folosind debouncing.
  • Laboratorul 6 – I2C → folosit pentru afișajul pe ecran.

Motivatia alegerii bibliotecilor:

  • #include <Wire.h>: Giroscopul L3GD20H este conectat prin I2C (pinii SDA si SCL), iar aceasta biblioteca gestionează transmiterea și primirea de date I2C.
  • #include <SPI.h>: Display-ul OLED folosește SPI pentru comunicare, iar biblioteca SPI.h este necesară pentru controlul pinilor MOSI, SCK, CS.
  • #include <Adafruit_GFX.h>: Pentru a folosi funcțiile precum drawPixel(), drawRect(), drawFastVLine(), necesare pentru a desena mingea si paleta.
  • #include <Adafruit_SSD1306.h>: Este necesară pentru a trimite datele către display-ul OLED.
  • #include <Adafruit_L3GD20.h>: Pentru functii precum gyro.begin() și gyro.read() pentru a obține valorile de rotație (în jurul axelor X/Y/Z), folosite pentru a controla paleta din jocul Pong

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

https://randomnerdtutorials.com/arduino-mpu-6050-accelerometer-gyroscope/ https://randomnerdtutorials.com/guide-for-oled-display-with-arduino/

pm/prj2025/eradu/andreea.dobre0508.txt · Last modified: 2025/05/30 09:56 by andreea.dobre0508
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