Table of Contents

PacMan

Autor: Backa Alisa
Grupa: 334CD

Implementarea generala implica imbinarea unui ecran LCD, unui breadboard, butoane si a unui Arduino Uno pentru recrearea unui mini arcade. Scopul acestui proiect are rolul de a demonstra practic informatiile si conceptele invatate la laborator.

Descriere generală

Proiectul utilizează un microcontroller (Arduino) ca nucleu central pentru controlul tuturor componentelor hardware și rularea logicii software. Mediul de dezvoltare folosit este Arduino IDE, care este o platformă open-source pentru scrierea și încărcarea codului pe plăcile Arduino. Codul este structurat pentru a interacționa cu mai multe module hardware, inclusiv un joystick, butoane, un buzzer pasiv, un LED și un afișaj LCD I2C.

Microcontrollerul (Arduino) este responsabil pentru gestionarea intrărilor de la joystick și butoane, actualizarea afișajului LCD, controlul buzzerului pentru redarea sunetelor și aprinderea/stingerea LED-ului pentru a indica starea jocului.

Joystick-ul este utilizat pentru a controla mișcarea lui Pac-Man pe ecranul LCD. Acesta este conectat la pinii analogici ai microcontrollerului (A1 și A2), care citesc valorile axelor X și Y folosind ADC. Valorile citite sunt utilizate pentru a actualiza poziția lui Pac-Man în joc.

Butoanele (Joystick Button și Reset Button) sunt utilizate pentru pornirea și resetarea jocului. Acestea sunt conectate la pinii digitali ai microcontrollerului (2 și 4) și sunt configurate ca intrări cu rezistențe pull-up interne. Starea butoanelor este citită în bucla principală pentru a porni sau reseta jocul, iar întreruperile externe sunt utilizate pentru a detecta rapid apăsările butoanelor.

Afișajul LCD I2C este utilizat pentru a afișa starea jocului, inclusiv poziția lui Pac-Man, puncte și fantome. Acesta este conectat la microcontroller prin pini I2C (SDA și SCL). Folosește biblioteca LiquidCrystal_I2C pentru a simplifica comunicarea și afișarea informațiilor pe ecran.

Buzzerul pasiv este conectat la un pin digital al microcontrollerului (6) și este configurat ca ieșire. Acesta redă sunete folosind funcția tone() atunci când Pac-Man colectează puncte, oferind feedback auditiv jucătorului.

LED-ul este conectat la un pin digital al microcontrollerului (7) și este configurat ca ieșire. LED-ul este aprins atunci când jocul este în desfășurare și stins când jocul este oprit, oferind un indiciu vizual al stării jocului.

În ceea ce privește algoritmii și structurile implementate, codul include inițializarea pinilor și a afișajului LCD, crearea caracterelor customizate pentru Pac-Man, puncte și fantome, și afișarea unui mesaj de pornire pe LCD. De asemenea, sunt citite valorile de la joystick și butoane, stările acestora fiind folosite pentru a controla logica jocului. Intrările de la joystick sunt utilizate pentru a mișca Pac-Man, iar coliziunile acestuia cu punctele și fantomele sunt gestionate pentru a actualiza starea jocului. Redarea sunetelor și actualizarea afișajului sunt de asemenea gestionate prin funcții dedicate.

Astfel, proiectul integrează componente hardware și software pentru a crea o aplicație de tip joc Pac-Man, care interacționează cu utilizatorul prin intermediul joystick-ului și al afișajului LCD, oferind feedback vizual și auditiv.

nolink|

Hardware Design

  • Listă de piese
    • Arduino UNO
    • Ecran LCD I2C
    • Buzzer Passiv
    • Buton
    • Breadboard
    • Joystick Analog
    • LED
    • Fire

nolink|

Software Design

Descrierea codului aplicaţiei

Inițializarea jocului:Configurarea pinilor și inițializarea afișajului LCD. Crearea caracterelor customizate pentru Pac-Man, puncte și fantome. Afișarea unui mesaj de pornire pe LCD.

Utilizarea ADC (Analog to Digital Converter) pentru a citi poziția joystick-ului pe axe X și Y. Citirea stării butoanelor pentru a porni sau reseta jocul.

Configurarea și utilizarea întreruperilor externe pentru a detecta apăsarea butoanelor.

Inițializarea pozițiilor punctelor și fantomelor într-o matrice 2D. Actualizarea poziției lui Pac-Man în funcție de intrările joystick-ului. Verificarea coliziunilor lui Pac-Man cu punctele și fantomele. Afișarea pe LCD a pozițiilor actualizate ale elementelor din joc.

Funcții pentru redarea sunetelor printr-un buzzer pasiv atunci când Pac-Man colectează un punct. Funcții pentru inițializarea și configurarea întreruperilor externe și a ADC.

Rezultate Obţinute

nolink|

Concluzii

În concluzie, proiectul nostru de implementare a jocului Pac-Man pe un microcontroller Arduino a fost un succes. Am integrat mai multe module hardware, inclusiv un joystick, butoane, un buzzer pasiv, un LED și un afișaj LCD I2C, pentru a crea o experiență interactivă pentru utilizatori. Utilizarea Arduino IDE a facilitat dezvoltarea și testarea codului, iar bibliotecile externe ne-au ajutat să simplificăm implementarea.

Am reușit să implementăm funcționalități esențiale, cum ar fi mișcarea lui Pac-Man, detectarea coliziunilor cu puncte și fantome, și redarea de sunete pentru feedback auditiv. Jocul rulează fără probleme, iar interfața grafică pe LCD este clară și intuitivă.

Prin acest proiect, am aprofundat cunoștințele noastre despre utilizarea microcontrolerelor, programarea în C/C++, și integrarea diverselor componente hardware. De asemenea, am învățat să gestionăm întreruperile externe și să utilizăm convertorul analog-digital (ADC) pentru a citi valorile de la joystick.

În final, proiectul demonstrează cum microcontrolerele pot fi utilizate pentru a crea aplicații interactive complexe, iar experiența dobândită va fi valoroasă pentru proiecte viitoare în domeniul sistemelor embedate și al electronicii.

Download

Descarcă fișierele proiectului

Acest fișier conține tot codul sursă PacMan.ino, fiind fișierul principal al proiectului pentru implementarea jocului. Poate fi deschis și editat cu Arduino IDE.

Jurnal

  • 27.04.2024: Alegere tema proiect
  • 03.05.2024: Realizarea paginii proiectului și a descrierii succinte a acestuia.
  • 10.05.2024: Adaugare schema bloc
  • 11.05.2024: Finalizare Milestone proiect - documentație
  • 14.05.2024: Finalizare Milestone - hardware
  • 22.05.2024: Finalizare Milestone - Software

Bibliografie/Resurse

Export to PDF