Acest proiect are scopul de a simula - intr-un mod absolut minimal - un o sabie laser precum cele din Star Wars. Tinand cont ca e minimal, nu va simula decat sunetele create de lightsaber din cauza miscarilor.
Schema este una foarte simpla, deoarece majoritatea operatiilor sunt facute din software. Modul de functionare este cel mai bine descris de diagrama urmatoare:
Miscarile accelerometrului sunt interpretate de uC, si va modifica sunetul ce iese pe difuzor. Intentia este ca sunetul sa semene, pe cat posibil, cu un lightsaber original. De fapt, se vor folosi acceleratiile per axa pentru a adauga o anumita frecventa peste sunet.
Lista componentelor:
Pentru accelerometru, am folosit un divizor de tensiune pentru a aduce VCC la 3.6V (de fapt, 3.52V, deoarece R1 are 1k5), si am pus iesirile XOUT, YOUT si ZOUT la pinii ADC0, ADC1 si ADC2 de pe ATMega16. Difuzorul ar fi trebuit sa functioneze direct conectat la un pin PWM (OC2, sau PD7, cu cealalta borna conectata la GND).
Pinii ST, OGD si SLP sunt conectati la GND deoarece: - ST este doar pentru self-test, nu este necesar - OGD este pentru detectarea caderii libere - SLP este utilizat pentru sleep mode (consum redus)
Pinul GSEL este conectat la VCC deoarece atunci cand este setat pe “1” logic, are o senzitivitate mai mare.
Pentru simularea sunetului unui lightsaber, am incercat sa caut pe internet frecventele optime pentru starea idle, respectiv pentru “atac”. In cele din urma, am ajuns sa incerc singur - folosind Octave. Am descoperit ca o valoare buna pentru sunet idle este suprapunerea a doua semnale - unul de 90 si unul de 35 de Hz - dar in proportii inegale (83.333%, respectiv 16.666%). Pentru sunetele generate de miscare, am decis ca miscarea pe Oz sau Ox sa schimbe ponderea primei frecvente, iar cea pe Oy s-o schimbe pe cea a celei de-a doua.
Totusi, deoarece buzzerul a refuzat sa functioneze, am decis sa folosesc LED-ul, care devine mai puternic in functie de cat de mult s-a schimbat acceleratia pe toate directiile. Astfel, am luat valori initiale pentru acceleratiile dupa X, Y si Z, si apoi, la fiecare pas, masor noile valori, le compar diferenta fata de valorile anterioare (norma euclidiana pentru vector tridimensional) si modific valoarea OCR2 in consecinta.
Deoarece buzzerul a refuzat sa functioneze, rezultatele au fost mai putin impresionante decat se preconiza initial. Insa macar functioneaza accelerometrul - ceea ce totusi nu e suficient de impresionant pentru mine.
In primul rand, la fel ca si cei dinaintea mea, am ajuns la concluzia ca trebuie lucrat la proiect cu mult inainte de deadline. In al doilea rand, proiectul a fost, pe de-o parte, mult mai simplu decat intentionam sa fie, insa pe de alta parte mult mai dificil. Mai simplu, pentru ca rezultatul a fost in cele din urma o varianta cu mult simplificata, si mai dificil, deoarece suprapunerea a doua forme de unda nu e un lucru tocmai trivial (daca nu cumva chiar imposibil in aceste circumstante). N-am devenit nici fan mai infocat, nici nu mi-a distrus admiratia pentru Star Wars acest proiect - asa ca macar din acest punct de vedere, a fost un succes.