This shows you the differences between two versions of the page.
pm:prj2024:apredescu:vodoiu.antonia [2024/05/05 22:16] antonia.vodoiu created |
pm:prj2024:apredescu:vodoiu.antonia [2024/05/27 11:53] (current) antonia.vodoiu |
||
---|---|---|---|
Line 9: | Line 9: | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | <note tip> | + | |
Jocul incepe cu aprinderea unui LED si buzzer-ul emite un sunet corespunzator. Apoi, jucatorul trebuie sa apese butonul corespunzator LED-ului activat. Pe masura ce jocul avanseaza, se adauga noi LED-uri in secventa, iar jucatorul trebuie sa recreeze secventa. Pe display va fi afisat scorul, fiecare secventa corecta marind scorul cu 1. | Jocul incepe cu aprinderea unui LED si buzzer-ul emite un sunet corespunzator. Apoi, jucatorul trebuie sa apese butonul corespunzator LED-ului activat. Pe masura ce jocul avanseaza, se adauga noi LED-uri in secventa, iar jucatorul trebuie sa recreeze secventa. Pe display va fi afisat scorul, fiecare secventa corecta marind scorul cu 1. | ||
Jocul se termina fie cand jucatorul reuseste sa completeze o secventa de 10 LED-uri, fie cand jucatorul greseste. Daca jucatorul completeaza corect toate secventele, pe display va fi afisat un mesaj ce arata castigul, urmat de aprinderea rapida a tuturor LED-urilor si o melodie la buzzer. Daca jucatorul greseste, buzzer-ul va reda un ton grav iar LED-urile se vor aprinde de doua ori. | Jocul se termina fie cand jucatorul reuseste sa completeze o secventa de 10 LED-uri, fie cand jucatorul greseste. Daca jucatorul completeaza corect toate secventele, pe display va fi afisat un mesaj ce arata castigul, urmat de aprinderea rapida a tuturor LED-urilor si o melodie la buzzer. Daca jucatorul greseste, buzzer-ul va reda un ton grav iar LED-urile se vor aprinde de doua ori. | ||
- | </note> | ||
+ | {{:pm:prj2024:apredescu:img_1928.jpg?nolink&300|}} | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
Line 26: | Line 26: | ||
* cabluri jumper | * cabluri jumper | ||
* breadboard | * breadboard | ||
+ | {{:pm:prj2024:apredescu:schema_electrica.jpg?nolink&300|}} | ||
+ | //Schema electrica// | ||
+ | ===== Software Design ===== | ||
- | ===== Software Design ===== | ||
+ | Pentru acest proiect, am folosit Arduino IDE. Am folosit bibliotecile "Wire.h" pentru comunicarea I2C si "LiquidCrystal_I2.hC", pentru ecranul LCD. | ||
+ | |||
+ | Am implementat functia playTone() care este o functie de redare a tonurilor si genereaza un ton de o anumita frecventa si durata. | ||
+ | |||
+ | Functia setup() initializeaza LCD-ul, pinii si genereaza un seed pentru numerele aleatorii ce vor fi folosite in continuare. Seed-ul este setat la valoarea analogica citita de la pinul 0, care nu este conectat la nimic, deci valoarea citita va varia de fiecare data din cauza zgomotului electric. | ||
+ | |||
+ | Functia loop() este responsabila pentru logica principala a jocului. Are mai multe parti: initializarea unui joc nou, afisarea secventei de LED-uri, detectarea inputului de la jucator si verificarea, gestionarea castigurilor si pierderilor. | ||
- | <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. | + | Am implementat jocul cu succes. LED-urile se aprind corect, buzzer-ul emite tonuri diferite asociate cu fiecare LED. |
+ | |||
+ | Scorul jucatorului este afisat corect pe ecranul LCD. De fiecare data cand jucatorul completeaza o secventa corecta, scorul este incrementat si afisat pe ecran. La sfarsitul jocului, este afisat mesajul corespunzator castigului/pierderii. | ||
+ | |||
+ | LED-urile se aprind in secvente tot mai complexe. In cazul unei greseli, buzzer-ul reda un ton grav si toate LED-urile se aprind pentru a semnala pierderea. Jocul se reseteaza automat. | ||
+ | |||
+ | Daca jucatorul reuseste sa completeze 10 secvente corect, buzzer-ul reda o melodie de victorie si toate LED-urile se aprind rapid. | ||
+ | |||
+ | Am testat LED-urile pentru a ma asigura ca se aprind si sting corespunzator. La fel si pentru buzzer. | ||
</note> | </note> | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Acest proiect a fost o experienta foarte placuta si interesanta pentru mine. Am reusit sa aplic ce invatasem la laboratoare si mi-am dezvoltat o intelegere mai profunda a componentelor hardware si a progamarii unui astfel de joc. | ||
+ | Cea mai satisfacatoare parte a fost sa vad cum incet incet proiectul meu prindea viata. Mai intai LED-urile se aprindeau in secvente corecte, buzzer-ul emitea tonuri potrivite si scorul era afisat pe LCD. | ||
+ | Acest proiect mi-a amintit si de bucuria pe care o simteam in copilarie cand jucam jocuri similare. A fost o adevarata aventura sa implementez un joc pe care doar il jucasem cu multi ani in urma. | ||
===== Download ===== | ===== Download ===== | ||
<note warning> | <note warning> | ||
- | 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ă ;-). | + | {{:pm:prj2024:apredescu:proiect_pm.zip|}} |
- | + | ||
- | 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> | </note> | ||
Line 64: | Line 74: | ||
<note> | <note> | ||
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library |
+ | |||
+ | https://randomnerdtutorials.com/projects-arduino/ | ||
</note> | </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> | ||