Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2026:theodor_ioan.buliga:diana_andreea.raceu [2026/05/03 18:53]
diana_andreea.raceu created
pm:prj2026:theodor_ioan.buliga:diana_andreea.raceu [2026/05/24 22:29] (current)
diana_andreea.raceu
Line 1: Line 1:
-====== Bomb Defusal ​Game ======+====== Bomb Defusal ​Duel ======
  
-===== Descriere ​=====+===== Introducere ​=====
  
-Proiectul ​consta in implementarea unui joc embedded de tip „Bomb Defusal” pe platforma ATmega328P Xplained Mini.+Proiectul „Bomb Defusal ​Duel” reprezintă un joc embedded multiplayer realizat ​pe platforma ATmega328P Xplained Mini.
  
-Utilizatorul trebuie sa dezamorseze o „bomba” ​prin introducerea unei secvente ​corecte de butoane ​intr-un timp limitat. ​Sistemul ofera feedback vizual (LED-uri) si auditiv (buzzer), simuland un scenariu ​de dezamorsare.+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 proiectului ​=====+Scopul ​principal al proiectului ​este utilizarea integrată a funcționalităților studiate în cadrul laboratoarelor PM pentru realizarea unui sistem embedded interactiv și modular.
  
-Scopul proiectului este utilizarea perifericelor microcontrolerului pentru realizarea unui sistem interactiv care implica: 
-  * citirea input-urilor (butoane) 
-  * controlul output-urilor (LED-uri și buzzer) 
-  * gestionarea timpului (countdown) 
-  * implementarea unei logici de tip state machine 
  
 +===== Descriere generală =====
  
-===== Componente utilizate =====+Jocul funcționează în două faze principale:
  
-  ​* ATmega328P Xplained Mini +  ​- faza de setare a codului 
-  ​* 4 x LED-uri (rosu, galben, albastru, verde) +  - faza de dezamorsare
-  * 4 x butoane +
-  * rezistente 220Ω +
-  * buzzer pasiv +
-  * breadboard + fire de conexiune +
-  * display OLED SSD1306 (I2C)+
  
 +La începutul fiecărei runde, unul dintre jucători introduce o secvență secretă formată din 4 culori folosind butoanele disponibile.
  
-===== Functionalitati =====+După confirmarea secvenței, celălalt jucător trebuie să reproducă secvența corectă înainte de expirarea timpului.
  
-  * afisarea unui countdown +Sistemul oferă:
-  * introducerea unei secvente de butoane +
-  * validarea corectitudinii secventei+
   * feedback vizual prin LED-uri   * feedback vizual prin LED-uri
-  * feedback audio prin buzzer: +  * feedback audio prin buzzer 
-    * sunet de „tick” +  afișarea informațiilor pe display OLED 
-    * sunet de eroare +  * gestionarea rundelor și scorului
-    * sunet de explozie +
-    ​sunet de succes +
-  * reset+
  
-===== Arhitectura =====+Jocul continuă până când unul dintre jucători ajunge la 5 victorii.
  
-Proiectul este organizat in mai multe module logice:+===== Stadiul actual al implementării hardware =====
  
-  * Input: butoane (PD2–PD5) +În etapa actuală au fost integrate și testate toate componentele hardware principale necesare funcționării jocului.
-  * Output: LED-uri (PB0–PB3),​ buzzer (PD6) +
-  * Timer: implementat software prin delay-uri +
-  * Logica: state machine pentru verificarea secventei+
  
-Fluxul principal+Au fost realizate
-  * citire buton +  * conectarea și testarea LED-urilor 
-  * verificare stare +  * conectarea și validarea butoanelor 
-  * actualizare progres +  * integrarea buzzer-ului pasiv 
-  * generare feedback+  * integrarea display-ului OLED prin protocol I2C 
 +  * conectarea butonului suplimentar pentru confirmarea codului 
 +  * implementarea butonului onboard pentru pornirea și oprirea jocului
  
-===== Pasi de implementare =====+Toate componentele funcționează simultan și au fost validate individual înainte ​de integrarea finală.
  
-  ​test LED-uri +=== Imagine ansamblu hardware === 
-  - test butoane +{{ :​pm:​prj2026:​theodor_ioan.buliga:​photo-2026-05-24-15-17-59.jpg?​300 |}} 
-  - integrare ​input-output + 
-  - implementare secventa +===== Componente utilizate ===== 
-  - implementare countdown + 
-  - adaugare ​buzzer +^ Componentă ^ Rol ^ 
-  - testare finala+| 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 | 
 + 
 +=== OLED funcțional === 
 +{{ :​pm:​prj2026:​theodor_ioan.buliga:​photo-2026-05-24-22-19-48_2.jpg?​300 |}} 
 +{{ :​pm:​prj2026:​theodor_ioan.buliga:​photo-2026-05-24-22-19-48.jpg?​300 |}} 
 + 
 +===== 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 
 +{{ :​pm:​prj2026:​theodor_ioan.buliga:​captură_de_ecran_din_2026-05-24_la_14.57.50.png |}} 
 + 
 +===== Schema electrică ===== 
 +{{ :​pm:​prj2026:​theodor_ioan.buliga:​captură_de_ecran_din_2026-05-24_la_15.04.20.png?​300 |}} 
 +===== 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ță 
 + 
 +===== Demo video ===== 
 +[[https://​youtu.be/​SMri4l_4zwc]]
  
 ===== Concluzii ===== ===== Concluzii =====
  
-Proiectul ​demonstreaza utilizarea eficienta ​perifericelor unui microcontroler pentru realizarea unui sistem interactiv.+Proiectul ​demonstrează integrarea eficientă ​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. 
 + 
 +===== Resurse ===== 
 +  * datasheet ATmega328P 
 +  * documentație SSD1306 
 +  * biblioteci Adafruit 
  
-S-au aplicat concepte precum lucrul cu GPIO, debounce pentru butoane, generarea de semnale audio si implementarea unei logici de tip state machine. 
pm/prj2026/theodor_ioan.buliga/diana_andreea.raceu.1777823589.txt.gz · Last modified: 2026/05/03 18:53 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