Pian electric

Student: Călinescu Claudia 331CA

Introducere

Proiectul are următoarele funționalități:

  • interpretarea unor melodii în gama majoră C.
  • înregistrarea melodiilor interpretate.
  • redarea ultimei melodii înregistrate.

Dintotdeauna mi-am dorit un instrument muzical ușor de folosit, care să fie mic și portabil. Un instrument usor de folosit pentru programatori ar avea clape asa că pianul mi s-a părut cea mai bună idee. În plus, este foarte util ca anti-stres (l-am testat cu succes pentru temele de la ASC).

Descriere generală

Am simulat structura unei claviaturi (formată din butoane simple) și al unui difuzor. Pentru selectarea modului curent de lucru (înregistrare, redare, interpretare) al pianului am folosit un panou de control format din butoane și leduri de stare.

Schemă bloc

Componentele interacționează prin intermediul micro-controllerului, blocurile Claviatură și Butoane de control reprezintă blocuri de input iar blocul Difuzor este, bineînțeles, bloc de output.

Blocul Claviatură conține opt butoane pe care utilizatorul le va folosi pentru a activa notele gamei.

Blocul Butoane de control reprezintă panoul de comandă cu ajutorul căruia se va putea selecta modul de lucru. Blocul conține trei butoane:

  • butonul REC - selectează modul înregistrare. Ultima piesă înregistrată este suprascrisă.
  • butonul PLAY - selectează modul redare și dezactivează claviatura. Este redată ultima piesă înregistrată.
  • butonul SING - selectează modul interpretare.

Acest bloc are atașate leduri pentru semnalizarea stării curente.

Blocul Difuzor este cel care redă semnalul modulat in funcție de fecvența notei curente.

Hardware Design

Design-ul hardware al pianului porneste de la cablajul imprimat al primei etape. La acest montaj am adaugat câteva extensii pentru implementarea blocurilor descrise mai sus.

Claviatură

Schemă claviatură

Componente:

  • 8 butoane
  • 8 rezistențe [100Ω]

Butoanele sunt legate la portul C al micro-controllerului și la masă prin rezistențele de 100Ω. Pinii portului C vor reprezenta pini de intrare pentru micro-controller.

Butoane de control

Schemă butoane de control

Componente:

  • 3 butoane
  • 3 rezistențe [100Ω]
  • 2 rezistențe [1kΩ]
  • 2 LEDuri

Butoanele și ledurile sunt legate la portul A al micro-controllerului și la masă prin rezistențe de 100Ω, respectiv 1kΩ.

Difuzor

Schemă difuzor

Componente:

  • 1 difuzor [8Ω]
  • 1 condensator [100μF]

Difuzorul este legat la unul din pinii de ieșire PWM al micro-controllerlui și legat la masă printr-un condensator.

Software Design

Software-ul a fost scris în vim și compilat cu avr-gcc. Ca sistem de operare folosit a fost Ubuntu11.4.

Module software:

  • piano.h - defineste structurile folosite pentru implementarea programului și funcțiile folosit pentru inițializarea timerelor pentru logica și PWM.
  • piano.c - implementează funcțiile definite in piano.h.
  • main.c - modulul principal al programlui, care implementeaza urmatoarele functii:
    • initBoard() - inițializează componentele plăcii.
    • ISR(TIMER2_comp_vect) - implementează logica programului.

Logica programului

La fiecare 10ms (aces interval este setat cu ajutorul timerului 2), logica de control parcurge urmatorii pași în funcție de modul curent de funcționare al programului:

  • modul SING

Vefică butoanele apăsate (claviatura) și alcatuiește o mască de biți apăsati. Acestă mască este comparată cu masca de la pasul anterior, biții care nu au fost apăsați în pasul anterior sunt ignorați (se evită astfel fenomenul de bouncing). Dintre butoanele apăsate în ambii pași (pasul curent și anterior) se alege o singura notă pentru redare, și anume nota cea mai inaltă (astfel se tratează cazul apăsării simultane pe mai multe butoane). În cazul în care nu a fost apăsat nici un buton de claviatură se oprește ieșirea PWM.

  • modul REC

Prin setarea modului REC, notele alese după algoritmul prezentat la modul anterior sunt salvate intr-un array de note. Fiecare nota are o durata și o frecventă. În cazul in care nota curentă are aceeasi frecventa cu nota anterioară se prelungește durata notei anterioare, altfel se introduce o noua nota în array. În cazul în care nu a fost apăsat nici un buton de claviatură, se introduce în sir (sau se prelungește) o “nota mută”. Nota mută nu are o frecvența validă, ea doar închide canalul PWM.

  • modul PLAY

Se redau notele salvate în array în odinea în care au fost stocate. În cazul în care se gaseste o “nota mută” se închide ieșirea PWM. În acest mod nu sunt luate în considerare apăsările butoanelor de claviatură.

Rezultate Obţinute

Așa arata rezultatul:

Ansamblu

Mod REC

Mod PLAY

Concluzii

Pianul electric este primul proiect de acest tip pe care l-am făcut de la coadă la cap. A fost destul de interesant să mă gadesc cum să proiectez plăcuta și cum s-o conectez cu cablajul existent. În plus, acum am un dispozitiv amuzant cu care pot să îi stresez pe cei din jur :D

Download

Bibliografie/Resurse

pm/prj2012/dtudose/3.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