LightSinger
Introducere
Vrei sa fii in aceeasi stare cu vremea de afara ? LightSinger iti ofera posibilitatea de a asculta o melodie in functie de starea vremii.
Descriere generală
Un dispozitiv de masurare a intensitatii luminii, care in functie de aceasta afiseaza o imagine reprezentativa pe un ecran LCD si canta o melodie (intuneric - afiseaza o stea, canta twinkle little star)
Toate componentele sunt conectate la Arduino prin intermediul Breadboard-ului.
Schema electrica
Hardware Design
Avand in vedere conectarea elementelor am folosit un Breadboard, pentru reutilizarea componentelor, si usurarea mentenantei.
Software Design
Descrierea codului aplicaţiei (firmware):
Software - Diagrama de activitati (Organigrama)
Programul are urmatorul flow:
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 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
Care au fost rezultatele obţinute în urma realizării proiectului vostru.
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
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.
Jurnal
Bibliografie/Resurse