Music Board - Pasca Mihai Alexandru 331CA

Mihai Alexandru Pasca, 331CA

Introducere

Proiectul consta in realizarea un pian cu functie de record/playback si functie de learn, pentru a ajuta utilizatorul sa cante diferite melodii.

Descriere generală

Tastele pianului vor fi reprezentate de 8 butoane, care reprezinta o octava. Cand se porneste functia de learn, cele 8 led-uri se vor aprinde indicand butonul care trebuie apasat. Tempo-ul este schimbat cu ajutorul unui potentiometru, astfel se poate incepe invatarea unei melodii la un tempo mai scazut.

Schema Bloc

  • Claviatura si butoanele de control sunt amplasate pe keypad-ul 4×4 de butoane. Primele 8 butoane sunt tastele pianului. Restul de 8 butoane au diferite folosinte: pentru selectarea modului de functionare (learn, playback, playback loop, selectarea pitch-ului si normal), stanga dreapta pentru navigarea in meniuri, play si stop.
  • Prin intermediul difuzorului se redau sunetele. Acesta este conectat prin intermediul modulului amplificator care are un potentiometru pentru volum. Celalalt potentiometru controleaza tempo-ul melodiilor care sunt cantate
  • Led-urile sunt amplasate pe breadboard in aceeasi forma ca butoanele care reprezinta tastele pianului de pe keypad. In modul de learn al pianului acestea se aprind indicand tasta care trebuie apasata pentru a se canta urmatoarea nota din melodie.
  • Pe ecranul LCD se afiseaza meniul si diferite informatii precum tempo sau pitch in functie de statusul board-ului.

Hardware Design

Lista de piese

  • Arduino Mega 2560
  • Breadboard
  • Difuzor de 8 Ω
  • Modul amplificator LM386
  • LCD cu modul I2C
  • Tastatura de 16 butoane
  • Potentiometru
  • 8 LED-uri
  • 8 rezistente de 1k

Schema electrica

Software Design

Am folosit biblioteca “LiquidCrystal_I2C” pentru interactiunea cu LCD-ul. Mediul de dezvoltare a fost Arduino IDE.

In fisierul utils.h am definit frecventele pentru notele pianului, am denumit pinii, butoanele si am denumit starile in care se poate afla pianului.

Am salvat notele melodiilor folosind keyword-ul PROGMEM pentru a le salva in memoria flash. Acestea vor fi citite folosind functia specifica pgm_read_word_near().

In setup se intializeaza LCD-ul si pinii folositi. In loop se citeste input-ul de la potentiometru pentru calcularea tempo-ului si se citeste si input-ul de la keypad. Keypad-ul are 4 pini de input si 4 pini de output, se trimite input pe una din intrari, care reprezinta selectarea unei linii, iar in cazul in care primim output pe una din intrari, am detectat apasarea unui buton. In functie de pinii pe care se trimit si primesc date se calculeaza care buton a fost apasat si se efectueaza actiunea pentru care acesta este folosit, se reda o nota in cazul in care facea parte din tastele pianului sau in caz contrar se efectueaza o operatiune de control/in meniu.

Aplicatia se poate afla in una dintre starile: Normal, Record, Playback, Learn. Acestea sunt selectate prin butoanele de control. De asemenea se poate schimba pitch-ul la care pianul canta.

Rezultate obtinute

Concluzii

O experienta interesanta avand in vedere ca e primul(daca nu si singurul) proiect fizic facut in facultate. M-am lovit de lucruri noi precum lipitul pieselor si am invatat ce inseamna sa aplici in viata reala notiuni de electronica, dar si notiunile noi invatate in cadrul acestei materii. In principiu forma finala a proiectului este asa cum am gandit-o, am reusit sa implementez functionalitatile pe care le aveam in plan.

Download

Jurnal

  • 22.04 → alegere tema proiect.
  • 09.05 → Milestone 1
  • 30.05 → Milestone 2

Bibliografie/Resurse

pm/prj2022/cristip/music-board.txt · Last modified: 2022/06/01 23:59 by mihai.pasca
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