Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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 =====
pm/prj2022/abirlica/lightsinger.1654031774.txt.gz · Last modified: 2022/06/01 00:16 by ionut_cristian.tacu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0