This shows you the differences between two versions of the page.
pm:prj2023:avaduva:vlad_petrovici [2023/05/30 11:50] vlad.petrovici1602 [Concluzii] |
pm:prj2023:avaduva:vlad_petrovici [2023/05/31 20:38] (current) vlad.petrovici1602 [Rezultate Obţinute] |
||
---|---|---|---|
Line 15: | Line 15: | ||
^ Tip componentă ^ Număr piese ^ | ^ Tip componentă ^ Număr piese ^ | ||
- | | Arduino | 1 | | + | | Arduino Uno | 1 | |
| Piezo Buzzer | 1 | | | Piezo Buzzer | 1 | | ||
- | | LCD I2C | 1 | | + | | LCD I2C 16x2 | 1 | |
| Buton | 3 | | | Buton | 3 | | ||
| LED | 3 | | | LED | 3 | | ||
- | | Micro Servo Motor | 1 | | + | | Micro Servo SG90 | 1 | |
{{:pm:prj2023:avaduva:tinkercad_vp.png?500|}} | {{:pm:prj2023:avaduva:tinkercad_vp.png?500|}} | ||
Line 26: | Line 26: | ||
===== Software Design ===== | ===== Software Design ===== | ||
- | Programul va genera un cod random pe care il va sugera prin aprinderea beculețelor. | + | Mediul folosit este Arduino IDE, cu bibliotecile: Servo.h și LiquidCrystal_I2C.h. |
- | User-ul va trebui să deslușească codul din indicii, apoi dacă va apăsa secvența corectă cu ajutorul butoanelor va rezolva una dintre provocări. | + | Programul va genera un cod pe care il va sugera ori prin aprinderea beculețelor, ori prin hint-uri offline. |
- | Timer-ul va fi arătat pe LCD cu I2C, iar dacă acesta se va termina, jocul va fi pierdut, iar comoara blocată. | + | User-ul va trebui să deslușească codul din indicii, apoi dacă va apăsa secvența corectă cu ajutorul butoanelor va rezolva una dintre provocări și avansează la urmatorul nivel. Este folosit în loop-ul programului o mașină de stări în funcție de nivelul la care a ajuns jucătorul. Printr-o variabilă de tip bool, se va afișa o singură dată setup-ul pentru fiecare nivel. De asemenea, input-ul este afișat pe LCD, iar greșelile sunt semnalate de buzzer, dar și trecerea la nivelul următor. Când se apasă un buton, acesta e verificat să fie cel corect din secvență. |
- | Dacă provocările sunt terminate înainte de scurgerea timpului, motorașul se va roti pentru a deschide cufărul folosind PWM. | + | Acest nivel hint-uiește că utilizatorul are un mesaj, iar acesta trebuie să înțeleagă sa verifice PC-ul, adică monitorul serial. De acolo, deslușește misterul și apasă butonul corect. Acesta are 2 încercări pentru a nimeri răspunsul corect, altfel buzzer-ul va cânta o melodie de eșec, iar jocul se va reseta. |
- | ===== Rezultate Obţinute ===== | + | |
- | [[https://drive.google.com/file/d/1YLfr5MNFoQlgk-oqytEVd8Gwz-0S1By8/view?usp=share_link]] | + | Nivelul 3 reprezintă folosirea motorașului pentru a indica ultimele indicii. Acesta este comandat folosing Fast PWM și biblioteca Servo. |
+ | |||
+ | Dacă eșuează, și pierde toate viețile, jocul se va reseta. Toate mesajele principale sunt afișate pe un LCD prin I2C. Pe ecran când se așteaptă input de la jucător, e afișat un cursor care blink-uiește intermitent. Acesta folosește funcția millis() pentru a se afișa doar la un anumit interval de timp. Mesajul secundar din nivelul 2 este afișat în monitorul serial folosing UART. Melodiile sunt create folosind funcția tone() și secvențele de note preluate din referința [1] (figurată în secțiunea aferentă). | ||
+ | |||
+ | Dacă provocările sunt terminate în timp util, motorașul se va roti pentru a deschide cufărul. | ||
+ | ===== Rezultate Obţinute ===== | ||
+ | {{:pm:prj2023:avaduva:puzzle_box_final.png?500|}} | ||
+ | [[https://drive.google.com/file/d/1ZSNrAF6WNEsDdbHpyQNS_if4fDLmGUMT/view?usp=sharing]] (video simulare flow) | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
Line 43: | Line 49: | ||
===== Download ===== | ===== Download ===== | ||
- | <note warning> | + | {{:pm:prj2023:avaduva:puzzle_box.zip|}} (sursa) |
- | 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> | + | |
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== |