This is an old revision of the document!


Bomb Defusal Duel

Introducere

Proiectul „Bomb Defusal Duel” reprezintă un joc embedded multiplayer realizat pe platforma ATmega328P Xplained Mini.

Jocul simulează dezamorsarea unei bombe prin introducerea unei secvențe corecte de butoane într-un timp limitat. Proiectul utilizează multiple periferice hardware și software pentru a crea o experiență interactivă completă:

  • LED-uri pentru feedback vizual
  • buzzer pentru efecte sonore
  • display OLED pentru afișarea informațiilor
  • butoane pentru interacțiunea utilizatorului
  • logică multiplayer și sistem de scor

Scopul principal al proiectului este utilizarea integrată a funcționalităților studiate în cadrul laboratoarelor PM pentru realizarea unui sistem embedded interactiv și modular.

Descriere generală

Jocul funcționează în două faze principale:

  1. faza de setare a codului
  2. faza de dezamorsare

La începutul fiecărei runde, unul dintre jucători introduce o secvență secretă formată din 4 culori folosind butoanele disponibile.

După confirmarea secvenței, celălalt jucător trebuie să reproducă secvența corectă înainte de expirarea timpului.

Sistemul oferă:

  • feedback vizual prin LED-uri
  • feedback audio prin buzzer
  • afișarea informațiilor pe display OLED
  • gestionarea rundelor și scorului

Jocul continuă până când unul dintre jucători ajunge la 5 victorii.

Stadiul actual al implementării hardware

În etapa actuală au fost integrate și testate toate componentele hardware principale necesare funcționării jocului.

Au fost realizate:

  • conectarea și testarea LED-urilor
  • conectarea și validarea butoanelor
  • integrarea buzzer-ului pasiv
  • integrarea display-ului OLED prin protocol I2C
  • conectarea butonului suplimentar pentru confirmarea codului
  • implementarea butonului onboard pentru pornirea și oprirea jocului

Toate componentele funcționează simultan și au fost validate individual înainte de integrarea finală.

Componente utilizate

Componentă Rol
ATmega328P Xplained Mini Microcontroler principal
Breadboard Prototipare și interconectare
4 x LED-uri Feedback vizual pentru acțiuni
4 x rezistențe 220Ω Limitarea curentului pentru LED-uri
5 x butoane Introducerea comenzilor
buzzer pasiv Generarea efectelor sonore
display OLED SSD1306 Afișarea informațiilor
fire jumper Realizarea conexiunilor

Configurația pinilor

Componentă Pin microcontroler
LED roșu PB0
LED galben PB1
LED albastru PB2
LED verde PB3
Buton roșu PD2
Buton galben PD3
Buton albastru PD4
Buton verde PD5
Buzzer PD6
Buton confirmare PD7
Buton onboard START/STOP PB7
OLED SDA PC4
OLED SCL PC5

Justificarea utilizării pinilor

Pinii au fost aleși astfel încât să permită organizarea logică și eficientă a componentelor.

LED-urile au fost grupate pe PORTB pentru simplificarea controlului ieșirilor digitale.

Butoanele au fost grupate pe PORTD pentru utilizarea facilă a intrărilor digitale și activarea rezistențelor interne de tip pull-up.

Display-ul OLED utilizează protocolul I2C, fiind conectat la:

  • PC4 (SDA)
  • PC5 (SCL)

conform configurației hardware standard a microcontrolerului ATmega328P.

Schema bloc

  • utilizatorul introduce date prin butoane
  • microcontrolerul procesează logica jocului
  • feedback-ul este transmis prin:
    • LED-uri
    • buzzer
    • display OLED

Funcționalități utilizate din laboratoare

În cadrul proiectului au fost utilizate multiple concepte și funcționalități prezentate în laboratoare:

  • GPIO pentru controlul LED-urilor și citirea butoanelor
  • debounce software pentru butoane
  • protocol I2C pentru comunicarea cu display-ul OLED
  • generarea semnalelor audio utilizând PWM și funcția tone()
  • state machine pentru gestionarea stărilor jocului
  • management software al timpului folosind millis()

Stadiul actual al implementării software

Implementarea software este complet funcțională și include:

  • sistem multiplayer
  • gestionarea rundelor
  • introducerea codului secret
  • verificarea secvențelor
  • countdown în timp real
  • sistem de scor
  • efecte audio și vizuale
  • afișare pe OLED
  • pornire și oprire din buton onboard

Arhitectura proiectului este modulară, funcționalitățile fiind separate în funcții dedicate pentru:

  • afișare
  • sunete
  • efecte LED
  • gestionarea input-urilor
  • logică de joc

Biblioteci utilizate

Bibliotecă Rol
Wire.h Comunicare I2C
Adafruit_GFX.h Funcții grafice pentru display
Adafruit_SSD1306.h Control display OLED SSD1306

Elementul de noutate

Elementul principal de noutate al proiectului este implementarea unui joc multiplayer embedded complet interactiv, utilizând exclusiv resurse hardware limitate ale microcontrolerului.

Proiectul combină:

  • logică multiplayer
  • feedback audio-vizual
  • interfață grafică
  • gestionarea timpului
  • efecte dinamice

pentru a crea o experiență similară unui joc real de tip „bomb defusal”.

Validarea funcționalităților

Fiecare componentă a fost testată individual înainte de integrarea finală:

  • LED-urile au fost validate prin secvențe de aprindere
  • butoanele au fost testate individual
  • OLED-ul a fost validat folosind scanare I2C
  • buzzer-ul a fost testat prin generarea de tonuri
  • funcționalitatea multiplayer a fost testată prin simularea rundelor complete

Validarea finală a constat în rularea completă a jocului cu doi jucători.

Optimizări realizate

Au fost realizate următoarele optimizări:

  • utilizarea funcției millis() în locul delay-urilor lungi
  • reutilizarea funcțiilor pentru LED-uri și sunete
  • organizarea codului în funcții modulare
  • minimizarea utilizării memoriei RAM
  • gruparea logicii în state machine pentru claritate și eficiență

Concluzii

Proiectul demonstrează integrarea eficientă a mai multor periferice hardware și concepte software într-un sistem embedded interactiv.

În cadrul proiectului au fost utilizate noțiuni importante precum:

  • control GPIO
  • comunicare I2C
  • debounce software
  • gestionarea timpului
  • state machine
  • feedback audio-vizual

Rezultatul final este un joc multiplayer complet funcțional și extensibil.

pm/prj2026/theodor_ioan.buliga/diana_andreea.raceu.1779624120.txt.gz · Last modified: 2026/05/24 15:02 by diana_andreea.raceu
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