This shows you the differences between two versions of the page.
pm:prj2024:alucaci:teodora.baluta2107 [2024/05/04 17:35] teodora.baluta2107 |
pm:prj2024:alucaci:teodora.baluta2107 [2024/05/23 13:01] (current) teodora.baluta2107 [Bibliografie/Resurse] |
||
---|---|---|---|
Line 2: | Line 2: | ||
===== Introducere ===== | ===== Introducere ===== | ||
- | <note tip> | + | |
**Memory Game** este o reinterpretare digitală a clasicului joc de memorie Simon Says. | **Memory Game** este o reinterpretare digitală a clasicului joc de memorie Simon Says. | ||
Line 13: | Line 13: | ||
Este util pentru alții deoarece oferă o modalitate distractivă și educativă de petrecere a timpului liber, stimulând memoria și atenția jucătorilor de toate vârstele. | Este util pentru alții deoarece oferă o modalitate distractivă și educativă de petrecere a timpului liber, stimulând memoria și atenția jucătorilor de toate vârstele. | ||
Acest proiect reprezintă o oportunitate de a îmi dezvolta abilitățile în ingineria hardware și software, experimentând cu tehnologii noi și obținând satisfacție din rezultatele muncii depuse. | Acest proiect reprezintă o oportunitate de a îmi dezvolta abilitățile în ingineria hardware și software, experimentând cu tehnologii noi și obținând satisfacție din rezultatele muncii depuse. | ||
- | </note> | + | |
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | <note tip> | ||
- | O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează. | ||
- | Exemplu de schemă bloc: http://www.robs-projects.com/mp3proj/newplayer.html | + | Proiectul constă într-un joc de memorie bazat pe conceptul popular Simon Says. Jucătorul interacționează cu dispozitivul folosind butoanele pentru a reproduce secvențele luminoase generate aleatoriu. Arduino Uno servește ca unitate centrală de procesare, primind intrările de la butoane și generând ieșiri corespunzătoare pentru buzzer, display-ul LCD I2C și LED-uri. Scopul jocului este de a ajunge cât mai departe prin memorarea și reproducerea corectă a secvențelor în creștere de semnale. |
- | </note> | + | |
- | ===== Hardware Design ===== | ||
- | <note tip> | + | {{:pm:prj2024:alucaci:mem.png?600|}} |
- | Aici puneţi tot ce ţine de hardware design: | + | |
- | * listă de piese | + | |
- | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | + | |
- | * diagrame de semnal | + | |
- | * rezultatele simulării | + | |
- | </note> | + | |
+ | Componentele utilizate în proiect sunt următoarele: | ||
+ | |||
+ | * Arduino Uno | ||
+ | * Display LCD 16×2 | ||
+ | * Modul LCD I2C | ||
+ | * Buton de apăsare | ||
+ | * Rezistor 100R | ||
+ | * LED-uri | ||
+ | * Buzzer | ||
+ | * Fire de conexiune | ||
+ | * Breadboard | ||
+ | * Fire jumper tată-tată | ||
+ | * Fire jumper tată-mamă | ||
+ | {{:pm:prj2024:alucaci:img_6964.jpeg?400|}} | ||
+ | |||
+ | Schema electrică: | ||
+ | |||
+ | {{:pm:prj2024:alucaci:image_2024-05-20_153747575.png?700|}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
- | <note tip> | + | |
- | Descrierea codului aplicaţiei (firmware): | + | **1. 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) | + | **Mediu de dezvoltare** |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | |
- | * (etapa 3) surse şi funcţii implementate | + | Pentru dezvoltarea acestui proiect am utilizat PlatformIO, un mediu de dezvoltare integrat (IDE) bazat pe Visual Studio Code. PlatformIO oferă suport pentru o gamă largă de plăci de dezvoltare și microcontrolere, inclusiv Arduino Uno, pe care l-am folosit în acest proiect. De asemenea, oferă instrumente avansate pentru depanare, gestionarea bibliotecilor și integrare continuă, ceea ce facilitează dezvoltarea și testarea firmware-ului. |
- | </note> | + | |
+ | |||
+ | **2. Librării şi surse 3rd-party** | ||
+ | |||
+ | În cadrul acestui proiect am folosit următoarele librării externe: | ||
+ | |||
+ | **LiquidCrystal_I2C** - Pentru a facilita interacțiunea cu afișajul LCD folosind protocolul I2C. | ||
+ | |||
+ | **Wire** - O bibliotecă standard Arduino pentru comunicarea I2C, necesară pentru funcționarea bibliotecii LiquidCrystal_I2C. | ||
+ | |||
+ | **Arduino.h** - Biblioteca de bază a platformei Arduino, care oferă funcții esențiale pentru manipularea pinii, temporizări și comunicare serială. | ||
+ | |||
+ | |||
+ | **3. Algoritmi și structuri implementate** | ||
+ | |||
+ | **Algoritmul jocului de memorare:** | ||
+ | * Generarea secvențelor de LED-uri într-un mod aleator. | ||
+ | * Afișarea secvențelor pe LED-uri și LCD. | ||
+ | * Verificarea secvenței introduse de utilizator pentru a determina dacă este corectă sau greșită. | ||
+ | |||
+ | **Vectori (array):** | ||
+ | * buttons[] și leds[] pentru a stoca pinii butoanelor și LED-urilor. | ||
+ | * bt_simonSaid[] și led_simonSaid[] pentru a stoca secvențele generate și secvențele introduse de utilizator. | ||
+ | |||
+ | **Variabile booleene:** | ||
+ | * lost pentru a determina dacă utilizatorul a pierdut jocul. | ||
+ | |||
+ | **4. Funcții principale:** | ||
+ | |||
+ | **setup():** | ||
+ | * Inițializează comunicația serială. | ||
+ | * Configurează pinii butoanelor ca intrări cu rezistență de pull-up. | ||
+ | * Configurează pinii LED-urilor și buzzerului ca ieșiri. | ||
+ | * Inițializează LCD-ul și afișează mesajul de bun venit. | ||
+ | * Setează o valoare inițială pentru generatorul de numere aleatorii. | ||
+ | |||
+ | **loop():** | ||
+ | * Gestionează stadiile jocului folosind un switch statement: | ||
+ | * Stadiul 0: Așteaptă ca utilizatorul să apese butonul roșu pentru a începe jocul. | ||
+ | * Stadiul 1: Afișează nivelul curent și generează o secvență nouă. | ||
+ | * Stadiul 2: Așteaptă ca utilizatorul să introducă secvența. | ||
+ | * Stadiul 3: Verifică secvența introdusă de utilizator. | ||
+ | * Stadiul 4: Afișează mesajul de pierdere și resetează jocul. | ||
+ | * Stadiul 5: Afișează mesajul de câștig și trece la următorul nivel. | ||
+ | |||
+ | **playBuzzer(int x):** | ||
+ | * Redă un sunet pe buzzer pentru a indica apăsarea unui buton. | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | ||
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | ||
- | </note> | ||
- | ===== Concluzii ===== | + | **Funcționalitatea jocului:** |
+ | Implementarea inițială a jocului de memorare a întâmpinat dificultăți în ceea ce privește generarea și verificarea secvențelor de LED-uri. Afișajul LCD nu a fost corect, multe informații nefiind vizibile din cauza firelor de calitate slabă. | ||
+ | **Depanarea și testarea:** | ||
+ | Testarea și depanarea codului au evidențiat probleme de inițializare și configurare a componentelor hardware. Integrarea componentelor hardware (butoane, LED-uri, buzzer, LCD) nu a fost realizată complet cu succes, ceea ce a dus la nefuncționarea corectă a jocului. | ||
+ | |||
+ | |||
+ | ===== Concluzii ===== | ||
+ | Proiectul a întâmpinat diverse probleme care au afectat funcționarea sa corectă. Dificultățile principale au fost legate de inițializarea și configurarea corectă a componentelor hardware și de afișarea adecvată a informațiilor pe LCD. Deși proiectul nu a funcționat conform așteptărilor inițiale, procesul de dezvoltare a fost educativ. Am învățat lecții valoroase despre necesitatea unei structuri clare a codului, importanța testării riguroase și a depanării continue. Această experiențe va fi de mare ajutor în realizarea viitoarelor proiecte. | ||
===== Download ===== | ===== Download ===== | ||
- | <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ă ;-). | ||
- | 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**. | + | {{:pm:prj2024:alucaci:baluta_teodora.zip|}} |
- | </note> | + | |
===== Jurnal ===== | ===== Jurnal ===== | ||
- | <note tip> | + | **25 aprilie:** Selectarea temei proiectului |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | |
- | </note> | + | **2 mai:** Crearea paginii de wiki și elaborarea schemei bloc |
+ | |||
+ | **9 mai:** Plasarea comenzilor pentru piesele necesare | ||
+ | |||
+ | **16 mai:** Implementarea componentelor hardware | ||
+ | |||
+ | **22 mai:** Dezvoltarea și implementarea software-ului | ||
+ | |||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | <note> | ||
- | 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> | + | https://www.youtube.com/watch?v=BJ93XCcD858 |
+ | |||
+ | https://www.handsontec.com/dataspecs/module/I2C_1602_LCD.pdf | ||
+ | |||
+ | https://www.youtube.com/watch?v=gj-H_agfd6U&t=3s | ||
+ | |||
+ | https://projecthub.arduino.cc/Jerepondumie/make-an-arduino-memory-game-c9c093 | ||
+ | https://www.instructables.com/Arduino-Simple-Memory-Game/ |