Table of Contents

Marica Andreea-Madalina ~ LED MEMORY GAME



Introducere

Proiectul consta in implementarea unui joc ce exerseaza agilitatea si atentia utilizatorului folosindu-se, in principal, de un set de leduri.
Ledurile se aprind intr-o anumita configuratie, raman aprinse un interval de 5 secunde, dupa care se sting. Jucatorul incearca sa recreeze configuratia, aprinzand aceleasi led-uri prin actionarea unor butoane.

Descriere generala

Un set de leduri este dublat de un set de butoane cu amplasare simetrica astfel incat sa fie intuitiva interactiunea intre butoane si leduri.
Jocul va fi completat de un fundal muzical, un buzzer va genera sunete specifice pentru configuratie introdusa corect sau gresit, iar pe un LCD se vor afisa informatii legate de nivelul de dificultate si progresul jucatorului.

Hardware Design

Lista de componente:

Schema electrica:

Software Design

Mediul de dezvoltare utilizat:


Am folosit biblioteca pusa la dispozitie in Laboratorul 1 pentru a realiza interfatarea cu LCD-ul text (lab1). A fost necesara modificarea pinilor din header-ul bibliotecii, placuta de baza fiind diferita de cea din laborator.
Am simulat redarea unei note muzicale, folosindu-ma de frecventa si durata sunetului generat de buzzer.

/* Genereaza o nota folosind buzzer-ul. */
static void buzzer_reda(int nota, int durata) {
    int perioada_nota = 1000000 / nota;
    int i, j;

    /*
     * Nu putem folosi variable ca argument pentru functia
     * _delay_us(), asa ca folosim acest "workaround".
     */
    
    for (j = 0; j < durata; j++) {
        PORTC |= (1 << PC0);    
        for (i = 0; i < perioada_nota / 2; ++i)
            _delay_us(1);

        PORTC &= ~(1 << PC0);
        for (i = 0; i < perioada_nota / 2; ++i)
            _delay_us(1);
    }
}

Pornind de la redarea unei note, am extras fragmente din melodii cunoscute pentru a genera un sunet potrivit pentru configuratie introdusa corect, respectiv configuratie introdusa gresit.
Ledurile se aprind intr-o configuratie determinata de nivelul de dificutate, se realizeaza un delay de 5 secunde, dupa care ledurile se sting si se asteapta inputul utilizatorului. La apasarea butonului de verificare, se analizeaza starea fiecarui led si se compara cu starea pe care ar trebui sa o aiba (aprins/stins) conform configuratiei nivelului. Daca toate ledurile sunt in starea corespunzatoare se va trece la nivelul urmator, altfel se va repeta afisarea configuratiei nivelului curent.

Rezultate obtinute

Demo: sGm79M5CoJY
demo_image.jpeg

Concluzii

Proiectul s-a dovedit interesant, desi nu am ales un proiect de dificultate ridicata. Sunt fericita ca am reusit sa realizez lipiturile pentru circuitul in care am integrat ledurile si butoanele, iar cea mai interesanta parte a fost cea in care am recreat parti din melodii utilizand buzzer-ul.

Download

Arhiva contine fisierele de cod, schema electrica si un demo sub forma unui filmulet.
ledmemorygame_maricaandreea336ca.zip

Jurnal

Placuta de baza inainte si dupa lipirea componentelor:
placuta_de_baza_goala.jpeg placuta_de_baza_componente.jpeg
Placa de test:
placa_test_fata.jpeg placa_test_spate.jpeg

Bibliografie/Resurse

PDF file