Mariana-Cristina MĂRĂŞOIU - Laser Harp

Email: Login pentru adresa

Introducere

Proiectul este o harpă cu 8 corzi laser corespunzătoare notelor din gamă.

Am mai văzut în lista de proiecte de anii trecuți o harpă laser și un pian, așa că am zis: “Vreau și eu!” Am ales acest proiect deoarece mi s-a părut interesant, și mă gândesc că aș putea să îl folosesc și în continuare. Deși îmi place să ascult muzică, niciodată nu am mai avut ocazia să îmi compun muzică sau să am un instrument al meu - now I do :-D.

Descriere generală

Harpa laser se bazează pe 8 fotorezistențe. Acestea funcționează după cum urmează:

  • dacă sunt luminate, au o rezistență foarte mică, așa că pe pinul microcontrolerului va fi o tensiune de ~0V
  • dacă nu sunt luminate puternic, au o rezistență mare, așa că pe pinul microcontrolerului se va citi o valoare ~3-3.5V (măsurată experimental)

Pentru a citi tensiunea dată de fotorezistențe sub influența laserelor, am folosit cei 8 pini de ADC de pe PORT A al microcontrolerului ATMEGA324. Nota corespunzătoare este redată printr-un difuzor, ce se află pe pinul PD5 al microcontrolerului.

Mai jos este schema generală a proiectului:

Hardware Design

Difuzor

Pentru a reda sunetul, am folosit un difuzor de 8Ω, conectat ca în schema următoare la pinul PD5 al ATMEGA324 și controlat prin PWM:

Componente:

  • 1 difuzor 8Ω
  • 1 condensator 100μF

Lasere

Corzile laser au fost realizate prin folosirea a 8 lasere roșii ce luminează 8 fotorezistențe. Printr-un divizor de tensiune citesc datele prin pinii ADC ai microcontroler-ului. Schema de funcționare este mai jos.

Componente:

  • 8 diode laser roșii dioda_laser.jpg
  • 8 fotorezistențe
  • 8 rezistențe 2k2 resistor_2k2.jpg
  • cablu UTP utp_cable.jpg
  • cadru de lemn wood-frame.jpg

Software Design

Pentru dezvoltare, am folosit WinAVR: codul a fost scris în Programmer's Notepad, pe Windows 7 x64.

Codul constă în două fișiere:

  • harp.h - conține funcțiile principale ale aplicatiei
  • harp.c - implementează funcțiile din harp.h, precum și funcția principală main()

Modul de funcționare este descris în continuare:

  • Am folosit Timer0 pentru a genera o întrerupere la fiecare 16ms.
  • În tratarea înteruperii, parcurg toate cele 8 canale de ADC și citesc datele de intrare.
  • Dacă o coardă laser a fost întreruptă, aprind led-ul USER și trimit la difuzor prin PWM byte-ul cu frecvența corespunzătoare notei cântate.
  • Dacă o coardă nu a fost întreruptă, dezactivez PWM.

Rezultate Obţinute

Well, am obținut o harpă funcțională. Câteva poze cu plăcuțele și harpa:

img_2797.jpg img_2799.jpg img_2795.jpg img_2801.jpg

Mai jos e un link video cu o demonstrație. Dau o bere pentru cine ghicește melodia dintre 00:15 - 00:30 ;-)

The Adobe Flash Plugin is needed to display this content.

Concluzii

Pot spune sincer că fost un proiect fain. Deși la început nu știam exact cum aveam de gând să-l fac și cum se vor îmbina plăcuța cu programul, mă bucur că a ieșit :-D. Puțin stres, puțină alergătură, multe lipituri, câteva arsuri, dar la final avem muzică (muzică e poate mult spus, dar suna bine :-P)

Cel mai greu interesant mi s-a părut debugging-ul și pentru hardware și pentru software, mai ales când ești la început și nu știi exact în care parte e problema!

Observații:

  • inițial aveam de gând să folosesc și un card SD de pe care să citesc notele, dar am ajuns la concluzia că pot să stochez datele direct în memoria microprocesorului, mai ales că era vorba doar de 8 note (fiecare câte un byte). Din cauza asta placuța are lipit și slotul de card SD.

Download

Bibliografie/Resurse

pm/prj2013/dtudose/laser-harp.txt · Last modified: 2021/04/14 17:07 (external edit)
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