Pian Electric

Introducere

Proiectul consta in simularea unui pian electric capabil sa acopere o octava, oferind si anumite functionalitati bonus care vor fi descrise mai in detaliu in paragrafele urmatoare

Descriere generală

Functionalitatile oferite de pianul electric:

  • un mod de play normal (NORMAL MODE)
  • un mod de inregistrare a melodiilor cantate (REC MODE)
  • un mod de redare a melodiilor inregistrate (PLAY MODE)

Pe LCD va aparea pe primul rand modul selectat, iar pe al doilea rand se vor afisa notele cantate/ redate. In modul de inregistrare, se va afisa langa numele modului timpul ramas din timpul total posibil de a inregistra. In modul de redare, langa nume, va aparea un format de tipul “t1:t2”, unde t1 semnifica timpul scurs de la inceperea redarii, iar t2 timpul total al melodiei inregistrate

Selectarea fiecarui mod al pianului se va realiza prin cate un buton de control. In cadrul modului de recording, inregistrarea va incepe la prima nota apasata, iar oprirea inregistrarii are loc fie cand s-a scurs tot timpul maxim posibil, fie cand apasam unul dintre cele trei butoane de control. In modul play, apasarea butonului in timpul redarii melodiei reseteaza redarea de la inceput.

Reglarea volumului se va realiza prin intermediul potentiometrului.

Schema bloc

Hardware Design

Componente:

Nume Piesa Cantitate
ARDUINO UNO 1
BREADBOARD 2
FIRE TATA-TATA -
FIRE MAMA-TATA -
FIRE MAMA-MAMA -
BUTON 11
SPEAKER 1
LCD I2C 1
POTENTIOMETRU 1
Rezistenta 100 KΩ 8
Rezistenta 220 Ω 4

Toate componentele in afara de ARDUINO UNO au fost achizitionate de pe https://www.optimusdigital.ro/ro/

Vizualizare Circuit

Schema Electrica

Software Design

  • Mediu de dezvoltare: Arduino IDE
  • Biblioteci: LiquidCrystal I2C

Descriere implementare

  • Pentru a retine notele muzicale inregistrate in modul record folosesc structura song care contine numarul de note si un vector cu notele muzicale ce au fost cantate (valoarea 0 codifica faptul ca nimic nu a fost apasat, iar valorile 1→8 codifica notele muzicale).
  • Tratarea butoanelor apasate si retinerea notelor cantate cand este activ modul record sunt realizate in intreruperea timer-ului 1, timer-ul fiind setat sa se declanseze odata la 50 ms.
  • In modul play, se parcurge vectorul cu note muzicale din structura song. Data fiind memoria limitata a placutei Arduino Uno, am setat un timp maxim de inregistrare de 20 de secunde pentru a nu ingreuna executia codului.
  • Cand modul pianului este schimbat prin apasarea unuia dintre butoanele de control, schimbarea este semnalata prin variabila update.
  • In loop, se trateaza afisarea pe LCD. Afisajul se schimba numai daca variabila update a fost setata pe 1 din intrerupere.
  • Redarea sunetului se realizeaza prin functia tone.

Rezultate Obţinute

Concluzii

Chiar daca nu stiu sa cant la un intrument muzical, m-am distrat de minune lucrand la el si am avut ocazia sa aplic majoritatea notiunilor invatate la laboratoarele de PM. Este un proiect la care cu drag m-as mai intoarce pentru a il mai imbunatati si a ii mai adauga functionalitati. prisacaru_andrei_pm_pian_electric.zip

Download

Bibliografie/Resurse

pm/prj2022/fstancu/pianelectric.txt · Last modified: 2022/06/01 23:39 by andrei.prisacaru
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