This shows you the differences between two versions of the page.
pm:prj2022:agmocanu:distancegame [2022/05/25 21:45] andrei.bolozan [Rezultate Obţinute] |
pm:prj2022:agmocanu:distancegame [2022/05/27 22:47] (current) andrei.bolozan [Software Design] |
||
---|---|---|---|
Line 7: | Line 7: | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | {{mspaint_yYXcHJZ3qV.png?800}} | + | {{mspaint_aKfOL7oSMD.jpeg?700}} |
+ | Senzorul distanta trimite prin unul dintre cei 2 "ochi" o raza. Pe celalalt ochi primeste acea raza trimisa mai devreme. Astfel Arduino-ul calculeaza timpul de propagare a razei. Si folosind timpul putem sa calculam distanta. Arduino-ul trimite un semnal la buzzer atunci cand este nevoie. Folosind pini definiti mai jos pentru LCD, Arduino-ul comunica cu acesta pentru a printa diferite mesaje. | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
* Lista cu componentele folosite: | * Lista cu componentele folosite: | ||
Line 32: | Line 33: | ||
|LED Rosu|12| | |LED Rosu|12| | ||
|LED Verde|13| | |LED Verde|13| | ||
+ | |||
+ | {{chrome_6GqHxz4T4S.jpeg?800}} | ||
+ | |||
+ | <note tip> | ||
+ | Deoarece in tinkerCAD nu exista Arduino Nano, Arduino-ul Uno prezentat in imaginea de mai sus este o reprezentare a Arduino-ului folosit de mine. Legaturile dintre pini sunt aceleasi. | ||
+ | </note> | ||
+ | |||
===== Software Design ===== | ===== Software Design ===== | ||
* Librarii folosite | * Librarii folosite | ||
* Am folosit libraria LiquidCrystal.h | * Am folosit libraria LiquidCrystal.h | ||
- | Implementare cod | + | * Implementare cod |
+ | * Am definit un LCD . | ||
+ | * In functie setup am initializat un LCD (16 x 2). | ||
+ | * Am initializat pini folositi. | ||
+ | * Cu ajutorul variabilei globale sceneManager prezentam scena dorita: | ||
+ | * 0 -> openingFrame(este prezentat titlul jocului). | ||
+ | * 1 -> mainMenu(se prezinta instructiunile si se astepta apasarea butonului). | ||
+ | * 2 -> mainGame(rularea jocul). | ||
+ | * openingFrame: Cu ajutorul LCD-ului afisez titlul jocului sit rec la scena urmatoare.\\ | ||
+ | * mainMenu : Cu ajutorul LCD-ului afisez instructiunile jocului si astept ca pe pinul butonului sa se citeasca 1 logic(butonul sa fie apasat). In caz ca da atunci se trece la scena urmatoare.\\ | ||
+ | * mainGame :Initial numarul de secunde alocate primului nivel sunt 15. Cu ajutorul unui for inceracm sa imitam trecerea celor 15 secunde(forul itereaza de la 0 pana la t*10 si de cate ori iterezeaza aplica un delay de 100 de secunde). In acest for citim distanta jucatorului fata de aparat si o afisam alaturi de distanta pe care trb sa o indeplineasca( aceasta este alesa la intamplare la inceputul jocului). Cand se iese din for inseamna ca s-a terminat jocu si verificam ce la ce distanta se afla jucatorul. Daca acesta a reusit sa se plaseze la distanta corecta(+- o variatie deltaDist) atunci afisam un mesaj “Good Job!” pornim buzzer ul si ledul verde pentru 1 secunda si trecem la urmatorul nivel(incrementam score si decrementam timpul de asteptare). Daca acesta nu a reusit atunci aratam pe LCD mesajul “Fail ☹” arata m scorul current pornim buzzerul si ledul rosu pentru 1 secunda si trecem la scena mainGame. In cazul in care jucatorul este bun si ajuns la un nivel in care timpul de reactie este mai mic fata de 7 atunci se afiseaza mesajul “ You win” si se aprind ledurile alternativ si se trece la scena cu mainMenu.\\ | ||
- | * Am definit un LCD . | + | *Codul: |
- | * In functie setup am initializat un LCD (16 x 2). | + | *Se afla in sectiunea de Download a paginii. |
- | * Am initializat pini folositi. | + | |
- | * Cu ajutorul variabilei globale sceneManager prezentam scena dorita: | + | |
- | * 0 -> openingFrame(este prezentat titlul jocului). | + | |
- | * 1 -> mainMenu(se prezinta instructiunile si se astepta apasarea butonului). | + | |
- | * 2 -> mainGame(rularea jocul). | + | |
- | * openingFrame: Cu ajutorul LCD-ului afisez titlul jocului sit rec la scena urmatoare.\\ | + | |
- | * mainMenu : Cu ajutorul LCD-ului afisez instructiunile jocului si astept ca pe pinul butonului sa se citeasca 1 logic(butonul sa fie apasat). In caz ca da atunci se trece la scena urmatoare.\\ | + | |
- | * mainGame :Initial numarul de secunde alocate primului nivel sunt 15. Cu ajutorul unui for inceracm sa imitam trecerea celor 15 secunde(forul itereaza de la 0 pana la t*10 si de cate ori iterezeaza aplica un delay de 100 de secunde). In acest for citim distanta jucatorului fata de aparat si o afisam alaturi de distanta pe care trb sa o indeplineasca( aceasta este alesa la intamplare la inceputul jocului). Cand se iese din for inseamna ca s-a terminat jocu si verificam ce la ce distanta se afla jucatorul. Daca acesta a reusit sa se plaseze la distanta corecta(+- o variatie deltaDist) atunci afisam un mesaj “Good Job!” pornim buzzer ul si ledul verde pentru 1 secunda si trecem la urmatorul nivel(incrementam score si decrementam timpul de asteptare).\\ | + | |
- | Daca acesta nu a reusit atunci aratam pe LCD mesajul “Fail ☹” arata m scorul current pornim buzzerul si ledul rosu pentru 1 secunda si trecem la scena mainGame. In cazul in care jucatorul este bun si ajuns la un nivel in care timpul de reactie este mai mic fata de 7 atunci se afiseaza mesajul “ You win” si se aprind ledurile alternativ si se trece la scena cu mainMenu.\\ | + | |
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
Line 55: | Line 64: | ||
In urma acestui proiect am obtinut un joc competitiv care se poate juca singur sau cu mai multi. Am invatat cum sa lipesc diferite fire cu ciocanul de lipit. | In urma acestui proiect am obtinut un joc competitiv care se poate juca singur sau cu mai multi. Am invatat cum sa lipesc diferite fire cu ciocanul de lipit. | ||
- | ===== Concluzii ===== | + | {{Distance_Game_poza1.jpeg?350}} |
+ | {{Distance_Game_poza2.jpeg?350}} | ||
===== Download ===== | ===== Download ===== | ||
- | <note warning> | + | Repo github: |
- | 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ă ;-). | + | https://github.com/AndreiSlaShh/Distance_Game_v2 |
- | 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> | + | Link-uri: |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | - Senzor distanta : https://create.arduino.cc/projecthub/abdularbi17/ultrasonic-sensor-hc-sr04-with-arduino-tutorial-327ff6 |
- | </note> | + | - Buzzer : https://www.ardumotive.com/how-to-use-a-buzzer-en.html |
+ | - LCD:https://core-electronics.com.au/guides/use-lcd-arduino-uno/#:~:text=Insert%20your%20LCD%20screen%20into,ground%20your%20Backlight%20and%20LCD. | ||
+ | - Buton:https://create.arduino.cc/projecthub/muhammad-aqib/arduino-button-tutorial-using-arduino-digitalread-function-08adb5 | ||
<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> | ||