This is an old revision of the document!
Proiectul reprezinta un joc de memorie bazat pe o placa Arduino Uno, impreuna cu un display LCD folosit pentru afisarea scorului. Jocul utilizeaza componente simple (LED-uri, butoane si un buzzer) si ofera o modalitate prin care jucatorii isi pot testa memoria vizuala.
Ideea a pornit de la nostalgia pentru jocurile “clasice” care au marcat copilaria multora, dar am considerat si ca dezvoltarea acestui proiect ar putea reprezenta o provocare interesanta.
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.
Piese:
Schema electrica
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.
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.