This shows you the differences between two versions of the page.
|
pm:prj2022:abirlica:lightsinger [2022/06/01 00:16] ionut_cristian.tacu |
pm:prj2022:abirlica:lightsinger [2022/06/01 00:56] (current) ionut_cristian.tacu [Concluzii] |
||
|---|---|---|---|
| Line 24: | Line 24: | ||
| * Wires | * Wires | ||
| + | {{:pm:prj2022:abirlica:poza_hard_tic.jpeg?800|}} | ||
| + | |||
| + | Avand in vedere conectarea elementelor am folosit un Breadboard, pentru reutilizarea componentelor, si usurarea mentenantei. | ||
| ===== Software Design ===== | ===== Software Design ===== | ||
| Line 38: | Line 41: | ||
| Programul are urmatorul flow: | Programul are urmatorul flow: | ||
| - | Se preia valoarea intensitatii luminoase de la fotorezistenta (marja de aproximativ 0 - 1000) | + | Se preia valoarea intensitatii luminoase de la fotorezistenta (marja de aproximativ 0 - 1000). |
| - | In fiecare caz se afiseaza o imagine creata pe bitii lcd-ului, iar buzzer-ul canta o melodie care corespunzatoare luminozitatii. | + | In fiecare caz se afiseaza o imagine creata pe bitii lcd-ului, iar buzzer-ul canta o melodie care este corespunzatoare luminozitatii. |
| - | Notele buzzer-ului sunt reprezentate de frecvente, iar ele sunt asociate unui array de litere. | + | |
| + | Notele buzzer-ului sunt reprezentate de frecvente, iar ele sunt asociate unui array de litere (De exemplu C este nota Do, in notatia notelor). De asemenea, in melodie, fiecare nota are asociata o durata pentru a stii cat timp se canta nota. | ||
| + | |||
| + | Pentru fiecare melodie se foloseste o viteza (speed), pentru a canta toate notele intr-un anumit tempo. | ||
| - | Functia playTone(char note, int duration, float speed) se ocupa cu activarea buzzer-ului pentru a canta nota primita ca parametru intr-un anumit timp | + | * Functia playTone(int tone, int duration, float speed) se ocupa cu activarea buzzer-ului (punerea pe HIGH) pentru a canta nota primita ca parametru intr-un anumit timp |
| + | * Functia playNote(char note, int duration, float speed) se ocupa de cautarea frecventei asociate in functie de litera primita ca parametru | ||
| + | * Fiecare cantec este reprezentat de o parcurgere a unui array de litere si a unuia de durate, reprezentand notele melodiei si timpul cat ele sunt activate. | ||
| + | * Fiecare imagine este reprezentata de o functie in care sunt activati doar anumiti pixeli din lcd | ||
| In functie de intensitatea luminoasa, se poate ajunge in unul din cele 3 cazuri | In functie de intensitatea luminoasa, se poate ajunge in unul din cele 3 cazuri | ||
| - | - Cand intensitatea este sub 300, se foloseste ramura Dark. Se afiseaza o imagine creata pe bitii lcd-ului | + | - Cand intensitatea este sub 300, se foloseste ramura Dark. Se afiseaza o stea si se canta o melodie linistita |
| + | - Cand intensitatea este intre 300 si 650, se foloseste ramura Cloudy. Se afiseaza un nor si se canta o melodie intermediara | ||
| + | - Cand intensitatea este peste 650, se foloseste ramura Sunny. Se afiseaza un soare si se canta o melodie mai energica | ||
| ===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
| Line 55: | Line 67: | ||
| ===== Concluzii ===== | ===== Concluzii ===== | ||
| + | |||
| + | In urma dezvoltarii proiectului am inteles mecanismele din spatele buzzer-ului pasiv pentru crearea unei melodii. Fiind pasionat de pian si creare de acompaniamente, am avut ocazia de a simula unele melodii preferate (corespunzatoare vremii din punctul meu de vedere) in buzzer. | ||
| + | |||
| + | Cele mai mari provocari au reiesit din urmatoarele: | ||
| + | * Asocierea notelor cu frecventele, pana cand am obtinut notele reale | ||
| + | * Gasirea timpilor potriviti pentru fiecare nota cantata si simularea tempo-ului cat mai potrivit | ||
| + | * Crearea imaginilor pe pixelii lcd-ului | ||
| ===== Download ===== | ===== Download ===== | ||