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

  • Placa dezvoltare Arduino UNO
  • LCD 1602 i2c
  • Fotorezistor
  • Buzzer
  • Breadbord
  • Wires

Avand in vedere conectarea elementelor am folosit un Breadboard, pentru reutilizarea componentelor, si usurarea mentenantei.

Software Design

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare: Arduino IDE
  • librării şi surse 3rd-party: LiquidCrystal_I2C

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

  1. Cand intensitatea este sub 300, se foloseste ramura Dark. Se afiseaza o stea si se canta o melodie linistita
  2. Cand intensitatea este intre 300 si 650, se foloseste ramura Cloudy. Se afiseaza un nor si se canta o melodie intermediara
  3. 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

  • 06.05.2022 Creare pagina proiect

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

https://login.arduino.cc/

https://www.tinkercad.com/

Export to PDF

pm/prj2022/abirlica/lightsinger.txt · Last modified: 2022/06/01 00:56 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