Alina-Diana NECȘULESCU (78395) - Pian Digital

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Scopul proiectului este de a crea un pian digital simplu care să poată reda notele muzicale din gama majoră C. Pe lângă această funcționalitate, vor exista și opțiuni pentru înregistrarea unei melodii, redarea ultimei melodii înregistrate, precum și selectarea și redarea unor melodii cu scopul de a le învăța.

Am ales să fac acest proiect deoarece oferă posibilitatea oricui de a-și testa talentul de pianist chiar dacă nu poate fi considerat un înlocuitor pentru un pian adevărat.

Descriere generală

Modurile de funcționare ale pianului sunt următoarele:

  • Sing: acest mod reprezintă funcționalitatea de bază a pianului și anume redarea notelor muzicale din gama majoră C prin apăsarea butoanelor corespunzătoare de pe claviatură.
  • Recording: acest mod permite utilizatorului să înregistreze melodia curentă.
  • Playback: acest mod redă ultima melodie înregistrată dacă aceasta există.
  • Learn: acest mod perimte utilizatorului să selecteze una dintre melodiile memorate de program. Pianul va reda melodia iar LED-urile corespunzătoare notelor redate se vor aprinde pentru a ajuta utilizatorul să învețe să cânte melodia respectivă.

Selecția modului de funcționare se va efectua cu ajutorul butoanelor de control: un buton pentru iterarea prin modurile de funcționare/melodii și un buton de selecție. Pe lângă acestea, vor exista 8 butoane corespunzătoare notelor din gama majoră C care vor reprezenta calviatura. Fiecare dintre aceste 8 butoane va avea asociat câte un LED ce va fi aprins în momentul redării notei corespunzătoare. Pe ecranul LCD-ului se vor afișa informații referitoare la modul de funcționare. Redarea notelor se va realiza cu ajutorul difuzorului.

Schema bloc

Hardware Design

Listă de piese:

  • Placa de bază + toate componentele sale
  • Butoane: 11 (claviatură + control)
  • LED-uri: 8 (pentru claviatură)
  • Rezistențe: 8
  • Ecran LCD: 1
  • Difuzor: 1
  • Condensator: 1
  • Componente adiționale pentru conectare (header de pini, cabluri mamă-mamă, cabluri)

Scheme electrice

Pe lângă placa de bază, proiectul va conține următoarele componente: butoane, LED-uri, speaker și LCD. În continuare sunt prezentate schemele electrice ale acestora.

Butoane

Vor exista două tipuri de butoane împărțite astfel: 3 butoane de control legate la pinii PC0 și PC1 de pe PORTC, respectiv pinul PD5 de pe PORTD și 8 butoane ce vor constitui claviatura, acestea fiind legate la pinii PB0-7 de pe PORTB.

LED-uri

Cele 8 LED-uri corespunzătoare notelor muzicale sunt conectate la pinii PA0-4, PD0-1 si PD7.

Speaker

Difuzorul este conectat la unul dintre pinii PWM ai microcontroller-ului (PD4) și legat la ground printr-un condensator.

LCD

Ecranul LCD se va conecta la Header-ul LCD de pe placă.

Software Design

Mediul de dezvoltare

Proiectul a fost dezvoltat pe Windows 10 folosind:

Biblioteci utilizate

Am folosit biblioteca din laboratorul 1 pentru interfața cu ecranul LCD-ului, în care am modificat definițiile pentru pinii folosiți pentru conectarea ecranului.

Logica programului

Programul are 5 moduri de funcționare. Inițial, acesta se află în starea START din care se poate trece într-una dintre următoarele stări: SING, RECORDING, PLAYNG și LEARNING. La apăsarea unui buton de pe claviatură sau a unui buton de control se declanșează o întrerupere și se execută rutina de tratare a acesteia. La apăsarea unui buton de pe claviatură, dacă programul se află în modul SING sau RECORDING, pe lângă redarea notei asociate, se aprinde LED-ul corespunzător și se afișează pe a doua linie a ecranului nota curentă. Pentru reținerea melodiei înregistrate am utilizat un vector de structuri de tipul note. O structură de tipul note conține indexul notei și durata acesteia. Lungimea maximă a unei melodii înregistrate este de 256 de note. Redarea notelor se realizează cu ajutorul timer-ului 1 setat să funcționeze în modul CTC cu TOP la OCR1A și prescaler-ul la valoarea 1024. Speaker-ul este legat la pinul PD4 care este și ieșirea OCR1B a timer-ului 1. Prin modificarea lui OCR1A și OCR1B stabilesc frecvența notei redate.

Rezultate Obţinute

Concluzii

Realizarea proiectului a fost o experiență interesantă și captivantă din care am învățat foarte multe lucruri. Partea hardware, deși nu este complicată, a ocupat mai mult timp decât mă așteptam (în special lipitul pieselor). Partea de software a fost relativ ușoară. În final, pot spune că am realizat tot ce mi-am propus, proiectul fiind complet funcțional.

Download

Scheme electrice

Cod Sursă

Bibliografie/Resurse

  • Wiki-ul de PM (în special laboratoarele): pm
  • Datasheet ATMega324: doc8272.pdf
  • Documentația în format PDF
pm/prj2018/mandrei/pian-digital.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