Differences

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

Link to this comparison view

pm:prj2022:rstanescu:mihai.blacioti [2022/05/15 23:32]
mihai.blacioti created
pm:prj2022:rstanescu:mihai.blacioti [2022/05/29 22:50] (current)
mihai.blacioti [Bibliografie/Resurse]
Line 1: Line 1:
 ====== Bomb Mini-game 💣 ====== ====== Bomb Mini-game 💣 ======
 +
 ===== Introducere ===== ===== Introducere =====
  
-Proiectul are la bază dezamorsarea unei ”bombe” introducând un cifru/o combinație (apăsarea butoanelor într-o anumită ordine pentru a forma fie un cuvânt ​simplu, fie un nume etc.). Timpul până la detonare va fi contorizat de un LED care v-a pâlpâi ​din ce în ce mai tare asemănător unei bombe reale. Intrucțiunile de descifrare vor fi afișate pe un LCD, iar fiecare greșeală va fi taxată prin reducerea timpului ​de dezamorsare rămas. +Proiectul are la bază dezamorsarea unei ”bombe” introducând un cifru/o combinație (apăsarea butoanelor într-o anumită ordine pentru a forma cod simplu. Timpul până la detonare va fi contorizat de un LED care v-a pâlpâi ​acompaniat de un bipait ​asemănător unei bombe reale. Intrucțiunile de descifrare vor fi oferite ​de către mineiar introducerea unui cifru incorect ​va duce la pierderea jocului.
- +
-Am decis să implementez 3 cifruri (unul ușorunul mediu și unul dificil); schimbarea între acestea se va face printr-un buton. Am ales acest proiect, deoarece mi-a plăcut ideea de a face un puzzle-game și de a vedea câți oameni vor reuși să dezamorseze bomba în toate cele 3 nivele.+
  
 +Am ales acest proiect, deoarece mi-a plăcut ideea de a face un puzzle-game și de a vedea câți oameni vor reuși să dezamorseze bomba.
  
 ===== Descriere generală ===== ===== Descriere generală =====
  
-Jucătorul va interacționa cu cele 4 butoane de pe board și cu LCD-uliar cele 2 LED-uri vor reprezenta reușita sau înfrângerea. Primul buton va alege dificultatea cifrului, iar celelate 3 vor fi folosite pentru ”scrierea” propriu-zisă a acestoraLCD-ul are rolul de a oferi indicații despre cifru.+Codul ce trebuie introdus este dinamicadică poate fi schimbat la începutul fiecărui joc (nu este necesară modificarea codului)Timpul până la detonare este static (fiind declarat în cod).
  
-==== Schema bloc====+Jocul funcționează astfelse începe prin introducerea unui cod de ghicit (constituit din 4 cifre). Ulterior, după o mică perioadă de acomodare și de confirmare a codului introdus anterior, jucătorul va interacționa cu un keypad și cu LCD-ul (citirea instrucțiunilor de pe acesta), iar LED-urile vor reprezenta reușita sau înfrângerea (împreună cu afișarea unui mesaj pe LCD). Există posibilitatea de a șterge caracterele introduse (folosind tasta *), însă odată introduse 4 caractere plăcuța va verifica în totalitate codul (deci ultima cifră trebuie aleasă atent). Pentru a face lucrurile mai interesante,​ am adăugat un buzzer care va scoate sunete odată cu interacțiunea cu keypadul.
  
-{{:​pm:​prj2022:​tinkercad.png?500|}}+==== Schema Tinkercad: ==== 
 + 
 +{{:​pm:​prj2022:​rstanescu:​tcad_projecy.png?500|}}
  
 ===== Hardware Design ===== ===== Hardware Design =====
Line 21: Line 23:
  
   * Arduino UNO Rev.3   * Arduino UNO Rev.3
-  * LCD +  * LCD (I2C) 
-  * Rezistente +  * Rezistențe 
-  * Diverse tipuri de LED-uri+  * LED-uri
   * Fire   * Fire
-  * Butoane+  * Keypad (4x3, nu 4x4)
   * Breadboard   * Breadboard
 +  * Buzzer
  
 ===== Software Design ===== ===== Software Design =====
  
 +  * Mediu de dezvlotare: Arduino IDE
 +
 +  * Librării şi surse 3rd-party: ​
 +        * Tone.h -> [[https://​github.com/​bhagman/​Tone|Tone]]
 +        * Keypad.h ->​[[https://​github.com/​Chris--A/​Keypad|Keypad]]
 +        * LiquidCrystal_I2C.h -> [[https://​www.arduinolibraries.info/​libraries/​liquid-crystal-i2-c|LCD_I2C]]
 +  * Algoritmi și structuri:
 +        * Timer -> [[https://​create.arduino.cc/​projecthub/​hugonator/​simple-lcd-timer-with-arduino-uno-ff3376|Timer]]
 +        * Keypad -> [[https://​www.optimusdigital.ro/​en/​others/​11396-sparkfun-qwiic-keypad-12-button.html?​search_query=keypad&​results=20|Keypad_Col/​Row Usage]]
  
-<note tip> 
-Descrierea codului aplicaţiei (firmware): 
-  * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) 
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib) 
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi 
-  * (etapa 3) surse şi funcţii implementate 
-</​note>​ 
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
 <note tip> <note tip>
-Care au fost rezultatele obţinute în urma realizării proiectului ​vostru.+În urma finalizării proiectului ​am decis să îmi pun la încercare colegii, rugându-i să ghicească diverse cifruri (după ce le-am oferit instrucțiui). 
 +Aceste teste au dus la setarea timlului de ghicire la un standard de 2 minute și la crearea unei legende pentru cifrele simple (de exemplu pentru cifra 6 avem hint-ul ... din 49).
 </​note>​ </​note>​
  
 ===== Concluzii ===== ===== Concluzii =====
 +Acest proiect are rolul de a dovedi că îmbinând concepte simple de Arduino se poate crea un joc destul de interesant. De asemenea, evidențiează interacțiunea dintre componente simple precum: buzzer + LED, Keypad + LCD; astfel făcându-l un proiect bun de început pentru toți pasionații de Arduino.
 ===== Download ===== ===== Download =====
  
-<note warning>​ +Codul este disponibil ​în următoarea arhivă: {{:​pm:​prj2022:​rstanescu:​bomb_mini-game.zip|Boom_Boom}}
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute ​în urma realizării proiectuluisurse, 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**. 
-</​note>​ 
- 
-===== Jurnal ===== 
- 
-<note tip> 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. 
-</​note>​ 
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
 <​note>​ <​note>​
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**.+Listă cu documente, datasheet-uri,​ resurse Internet folosite.
 </​note>​ </​note>​
 +    * [[https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab2-2022|Laboratorul nr. 2 PM]] 
 +    * [[https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab6-2022|Laboratorul nr. 6 PM]] 
 +    * [[https://​arduinogetstarted.com/​tutorials/​arduino-keypad|Keypad Tutorial]] 
 +    * [[https://​www.arduino.cc/​reference/​en/​language/​functions/​advanced-io/​tone/​|Buzzer]] 
 +    * [[https://​www.youtube.com/​watch?​v=CwImS9wPHOk|CS_GO Bomb]] 
 +    * [[https://​www.instructables.com/​Arduino-defuseable-bomb-perfect-for-airsoft-games-/​|Easy Bomb Project]] 
 +    * [[https://​www.circuitbasics.com/​arduino-basics-controlling-led/#:​~:​text=To%20turn%20on%20an%20LED,​wired%20to%20digital%20pin%2013.|LED basics]]
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
pm/prj2022/rstanescu/mihai.blacioti.1652646770.txt.gz · Last modified: 2022/05/15 23:32 by mihai.blacioti
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