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:03]
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 34: Line 37:
  
 ===== Software - Diagrama de activitati (Organigrama) ===== ===== Software - Diagrama de activitati (Organigrama) =====
-{{:​pm:​prj2022:​abirlica:​diagram_tic.png?​450 |}}+{{:​pm:​prj2022:​abirlica:​diagram_tic.png?​500|}} 
 Programul are urmatorul flow: Programul are urmatorul flow:
-  * Se preia valoarea intensitatii luminoase de la fotorezistenta (marja de aproximativ 0 - 1000) + 
-  * In functie de intensitatea luminoasa, se poate ajunge in unul din cele 3 cazuri ​: + Se preia valoarea intensitatii luminoase de la fotorezistenta (marja de aproximativ 0 - 1000). 
-      Ordered List ItemUnordered List Item Unordered List Item+ 
 + 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 (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(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 ​    
 +    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 47: 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.1654031017.txt.gz · Last modified: 2022/06/01 00:03 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