This is an old revision of the document!
Inspirat de jocul “Keep Talking and Nobody Explodes”, proiectul propus este un joc de simulare a dezamorsării unei bombe. Scopul acestui proiect este de a oferi o experiență captivantă și educativă utilizatorilor, permițându-le să simuleze procesul de dezamorsare într-un mod sigur și interactiv.
Acest proiect este conceput pentru a aduce o contribuție în domeniul divertismentului digital.
Pentru simularea dezamorsării, e nevoie de un microcontroler și mai multe componente hardware pentru a crea o experiență interactivă.
Componente hardware:
1. Microcontroller ESP32: Responsabil pentru controlul și gestionarea tuturor componentelor și interacțiunilor din cadrul jocului.
2. Display: Folosit pentru afișarea informațiilor importante, cum ar fi numărul de secunde rămase până la detonare și diverse instrucțiuni pentru jocurile de dezamorsare.
3. Buzzer: Este utilizat pentru a emite semnale sonore, cum ar fi bipuri, pentru a indica jucătorului cât timp mai are disponibil și pentru a crea o atmosferă tensionată.
4. Senzor de temperatură: Acest senzor monitorizează temperatura ambientală și poate fi integrat într-unul dintre jocurile de dezamorsare pentru a adăuga o componentă de detectare a temperaturii.
5. Senzor giroscopic: Acest senzor măsoară orientarea și accelerația și poate fi utilizat pentru unul dintre jocurile de dezamorsare care implică mișcări specifice ale dispozitivului.
6. Butoane: Acestea sunt folosite pentru a interacționa cu jocurile de dezamorsare și pentru a introduce răspunsuri sau comenzi în sistem.
Lista de piese:
Proiectul include un joc de labirint și un joc cu LED-uri, ambele controlate prin butoane, precum și un timer de bombă cu funcționalitate de alertă sonoră. Codul folosește diverse biblioteci pentru a facilita interfațarea cu hardware-ul și implementează algoritmi de debounce pentru citirea butoanelor, amestecarea secvențelor de butoane și LED-uri și desenarea grafică a labirintului pe afișajul OLED. Aplicația gestionează starea jocului și a bombei, oferind feedback utilizatorului prin intermediul afișajelor și al sunetelor buzzer-ului.
#include <Wire.h> // Biblioteca pentru comunicare I2C.
#include <MPU6050.h> // Biblioteca pentru interfațarea cu senzorul MPU6050.
#include <Adafruit_GFX.h> // Biblioteca grafică pentru afișaje.
#include <Adafruit_SSD1306.h> // Biblioteca pentru afișajul OLED SSD1306.
#include <LiquidCrystal_I2C.h> // Biblioteca pentru afișajul LCD 1602 cu modul I2C.
void setup() // Inițializează sistemul, afișajele și senzorii
void loop() // Rulează în mod continuu pentru a verifica starea butoanelor, actualizează poziția jucătorului, gestionează starea bombei și labirintului
void displaySetup() // Configurează afișajul OLED și inițializează pinurile butoanelor
void updatePlayerPosition() // Actualizează poziția jucătorului pe baza intrărilor de la butoane
void drawMaze(int mazeIndex) // Desenează labirintul pe afișajul OLED
void buzzerSetup() // Configurează pinul pentru buzzer
void bombTick() // Gestionează sunetul buzzer-ului pentru tick-ul bombei
void explosionSound() // Redă sunetul exploziei
void playGameWinningSound() // Redă sunetul de câștig
void timeTick() // Actualizează timpul rămas și afișează pe LCD
void gyroSetup() // Inițializează senzorul MPU6050 și afișajul LCD
void gyroReadings() // Citește valorile de la senzorul MPU6050 și detectează mișcările bruște
void ledGameSetup() // Configurează jocul LED
void ledGameTick() // Gestionează starea jocului LED
void lose() // Funcția apelată când explozia are loc
void displayOkSign() // Desenează un semn "OK" pe afișajul OLED
void win() // Funcția apelată când jocul este câștigat