This shows you the differences between two versions of the page.
pm:prj2022:dene:laser_whackamole [2022/04/28 23:35] robert_eugen.damian |
pm:prj2022:dene:laser_whackamole [2022/06/03 22:16] (current) robert_eugen.damian |
||
---|---|---|---|
Line 14: | Line 14: | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | Cand consola va fi pornita, pe ecranul principal, format din cele 4 module cu matrice de LED-uri de 8X8, se va infroma utilizatorul ca trebuie sa selecteze, prin intermediul butoanelor, un joc afisat pe ecranul LCD. Odata selectat un joc se va astepta apasarea butonului de start pentru inceperea jocului. Momentan jocurile pe care ma gandesc sa le implemnetez sunt Snake si Pong. | + | Jucatorul va putea controla o tureta laser cu ajutorul unui joystick. Cu aceasta va tinti la un grid format din LED-uri care se vor aprinde in pozitii aleatorii la un interval de timp. La terminarea jocului dupa un anumit timp, jucatorul va putea sa-si vizualizeze scorul din jocul precedent si sa apese butonul de reset pentru a incepe un joc nou. |
- | + | ||
- | In cadrul jocurilor informatii precum scorul sau puncatajele vor fi afisate pe display-ul LCD, buzzer-ul producand diferite sunete, evenimente precum marcarea unui gol in pong, expirarea timpului, pierderea unui joc de Snake si alte cazuri pe care le voi considera potrivite. | + | |
==== Schema bloc ==== | ==== Schema bloc ==== | ||
+ | {{:pm:prj2022:dene:laser_schema_bloc.png}} | ||
+ | |||
+ | ==== Layout ==== | ||
+ | {{:pm:prj2022:dene:layout_laser.png?800|}} | ||
+ | |||
+ | ==== Schema electrica ==== | ||
+ | {{:pm:prj2022:dene:lasersketch1_schem.png?800|}} | ||
- | {{:pm:prj2022:dene:pm_proj_diagram.png?600|}} | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
==== Componente ==== | ==== Componente ==== | ||
- | * Placuta arduino | + | * Placuta arduino |
- | * Breadboard | + | * Breadboard |
- | * LCD | + | * Servomotoare |
- | * Servomotoare | + | * Rezistente |
- | * Rezistente | + | * Fire de legatura |
- | * Fire de legatura | + | * LED-uri |
- | * Buzzer | + | * Receptoare laser |
- | * LED-uri | + | * Dioda laser |
- | * Receptoare laser | + | * Joystick |
- | * Dioda laser | + | * 2 module MUX/DEMUX |
- | * Joystick | + | * Modul Pan/Tilt |
- | * Porti NAND pentru a reduce numarul de intrari/iesiri din Arduino | + | |
===== Software Design ===== | ===== Software Design ===== | ||
- | + | Proiectul a fost dezvoltat cu ajutorul IDE-ului Arduino IDE. | |
- | <note tip> | + | In componenta sa am utilizat ca fisiere externe biblioteca "Servo.h" pentru a genera automat semnalul PWM ce trebuia trimis la servomotoare pentru a directiona tureta. |
- | Descrierea codului aplicaţiei (firmware): | + | In linii mari, programul incepe cu o verificare a tuturor LED-urilor rosii, pentru a atentiona jucatorul de o potentiala problema, precum si a-i oferi sansa sa updateze codul sursa ce se afla pe microprocesor. |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | Continua apoi cu bucla principala: verifica potentiale actualizari ale pozitiei joystickului, pentru a actualiza pozitia turetei, |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | iar apoi verifica utilizarea laserului, pe partea de tureta. |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | Pe partea de grid, verifica daca se afla in starea de incipit, idle, sau LED activ, urmand apoi sa ia o actiune, in cazul in care a trecut suficient timp asociat starii respective: daca a trecut prea mult timp de cand s-a aprins un led tinta, acesta se va inchide si se va afisa un mesaj in terminalul serial, ori daca jucatorul a nimerit o tinta, se va afisa un mesaj si in acest sens, informandu-l pe acesta de scorul sau. |
- | * (etapa 3) surse şi funcţii implementate | + | |
- | </note> | + | |
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
+ | Rezultatele obtinute sunt functional extrem de similare cu cele propuse initial, insa diavolul se afla in detalii: interfata cu jucatorul nu este tocmai prietenoasa, proiectul foloseste mai putine tinte, deoarece 3 dintre senzorii de laser s-au ars in decursul testarii, iar modulele multiplexoare s-au dovedit a fi inutile. Insa jocul, cu putin de polish, ar fi foarte playable si chiar fun. | ||
+ | |||
+ | ===== Demo ===== | ||
+ | |||
+ | https://youtu.be/4f9iN698TU4 | ||
- | <note tip> | ||
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | ||
- | </note> | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Proiectul a fost interesant, si a reprezentat o provocare, asadar a reprezentat o experienta per total placuta. Ca lectie invatata ar fi | ||
+ | informarea integrala referitor la toate componentele, deoarece am avut surprize pe parcursul dezvoltarii: informatiile de pe site-ul comerciantului erau complet opuse a ceea ce am sesizat experimental in cazul senzorilor de lumina rosie. | ||
===== Download ===== | ===== Download ===== | ||
+ | {{:pm:prj2022:dene:layout_scheme.zip|}} | ||
- | <note warning> | + | {{:pm:prj2022:dene:pan-tilt-control_v2.zip|Codul 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> | ||
- | ===== Jurnal ===== | + | ===== Bibliografie/Resurse ===== |
- | * **14.04.2022**: Alegere tema si validare cu laborantul | + | <html> <a href="https://assets.nexperia.com/documents/data-sheet/74HC_HCT4067.pdf"> Modul Multiplexor </a></html> |
- | * **20.04.2022**: Incepere proiect in ThinkerCad, pana la comandarea pieselor | + | |
- | * **25.04.2022**: Creare pagina wiki | + | |
- | ===== Bibliografie/Resurse ===== | + | <html> <a href="https://www.arduino.cc/reference/en/"> Documentatie Arduino </a></html> |
- | <note> | + | <html> <a href="https://www.codrey.com/electronic-circuits/the-mysterious-laser-receiver-sensor-module/"> Tutorial Senzori </a></html> |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | |
- | </note> | + | |
<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> | ||