This shows you the differences between two versions of the page.
pm:prj2022:rstanescu:mihai.blacioti [2022/05/28 22:48] mihai.blacioti |
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 ===== | ||
Line 5: | Line 6: | ||
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. | 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ă ===== | ||
- | Se începe prin introducerea unui cod de ghicit. Ulterior, jucătorul va interacționa cu un keypad și cu LCD-ul, 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, î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 face sunete odată cu apăsarea keypad-ului. | + | Codul ce trebuie introdus este dinamic, adică 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ă astfel: se î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:tcad_projecy.png?500|}} | + | ==== Schema Tinkercad: ==== |
+ | |||
+ | {{:pm:prj2022:rstanescu:tcad_projecy.png?500|}} | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
Line 26: | Line 29: | ||
* Keypad (4x3, nu 4x4) | * 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 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**. | ||
- | </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> | ||