This is an old revision of the document!


Simulator de Dezamorsare

Introducere

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.

Descriere generală

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.

Hardware Design

Lista de piese:

  • Adafruit HUZZAH32 cu ESP32
  • Senzor de temperatura ASAIR AM2302
  • LCD 1602 cu Interfata I2C
  • Modul Accelerometru și Giroscop cu 3 Axe MPU6050
  • Buzzer Pasiv 3.3V
  • Modul accelerometru si giroscop GY521
  • Modul Display OLED SPI SSD1306
  • Butoane
  • LED-uri
  • breadboard

Software Design

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.

  • Mediu de dezvoltare folosit: Arduino IDE
  • Librării şi surse 3rd-party:
#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. 
  • Funcții implementate
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

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

pm/prj2024/sseverin/ioan.popescu1910.1716775845.txt.gz · Last modified: 2024/05/27 05:10 by ioan.popescu1910
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