Table of Contents

Răzvan-Ștefan BRÎNZEA (66834) - Profesorul de pian

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Scopul acestui proiect este de a crea un pian electric simplu care poate să și învețe utilizatorul să cânte diferite melodii. Deși nu este menit să fie un înlocuitor pentru un pian adevărat și pentru lecții de pian oferite de un profesor uman, ar putea fi o „jucărie” destul de interesantă, indiferent de înclinația muzicală a fiecăruia.

Descriere generală

Pe lângă funcționalitatea sa de bază, anume redarea unor note la apăsarea unor butoane de pe claviatură, pianul va putea reda secvențe de melodii, la tempo-uri diferite, indicând notele prin intermediul unor LED-uri plasate lângă butoane. Astfel, crescând tempo-ul până la nivelul real și exersând, oricine ar putea învăța să cânte câteva melodii simple.

Butoanele disponibile (și notele aferente) vor reprezenta 8 note dintr-o singură octavă, practic o „porțiune” de pian echivalentă cu cele 8 clape albe din următoarea imagine:

Schema bloc

*revizuit pe 24.05.2017

Câteva detalii despre fiecare modul și felul în care interacționează:

*revizuit pe 24.05.2017

Hardware Design

Listă finală de piese

Nume Număr de piese
Placa de bază cu ATMega324A-PU 1
LED-uri claviatură 8
Butoane (control + claviatură) 12
Rezistențe 1KΩ 6
Difuzor 8Ω 1
Condensator 100 uF 1
Ecran LCD text 1

*revizuit pe 24.05.2017

Scheme electrice

Later Edit: Plecând de la sugestiile oferite de Dan, am modificat câteva dintre schemele electrice pentru a folosi alți pini de intrare/ieșire.

Pe lângă placa de bază, am structurat proiectul în câteva module ale căror scheme le voi prezenta independent.

*revizuit pe 24.05.2017, deși schemele electrice din pagină sunt momentan neschimbate. Urmând linkul oricărei dintre scheme, se poate vedea varianta actualizată.

Software Design

Mediul de dezvoltare

Mediul de dezvoltare a fost unul foarte simplu. Am lucrat pe Windows 10, folosind:

Biblioteci folosite

Singura bibliotecă externă pe care am folosit-o a fost una pentru interfațarea cu ecranul LCD text. Am preluat biblioteca lcd.c și lcd.h din scheletul laboratorului 0, modificând doar câteva definiții din biblioteca lcd.h, întrucât pe placa noastră sunt folosiți alți pini pentru header-ul LCD decât cei din laborator.

Alte mențiuni referitoare la cod

Pe scurt, voi enumera câteva dintre principalele decizii pe care le-am luat atunci când am scris codul pentru proiect:

Rezultate Obţinute

Din cauza unor probleme cu contrastul ecranului LCD, scrisul de pe el nu este foarte vizibil în poze și în filmări. Totuși, se vede destul de clar în realitate.

Montajul final:

Redarea unei melodii întregi:

AljEVS83f2Y

Redarea unei secvențe de melodie, cu pauze mai mare între note:

ycO5TEXMgCI

Concluzii

Consider că proiectul a fost una dintre cele mai interesante și distractive experiențe de învățare oferite până acum de această facultate. Trecând prin toate etapele (lipirea pieselor pe placa de bază, creerea schemelor electrice, realizarea montajului pe baza schemelor), am învățat multe lucruri noi, m-am distrat, m-am fript cu letconul, și până la urmă am ajuns la un rezultat de care sunt foarte mulțumit. A fost pentru prima dată când am pus mâna pe multe dintre uneltele și piesele pe care le-am folosit, și probabil voi mai încerca să realizez și alte proiecte de acest gen în timpul meu liber.

În ceea ce privește părțile hardware și software, concluzia mea principală este că am avut așteptări destul de realiste, și că am ajuns la un rezultat final care este în proporție de 90% exact ceea ce speram să obțin.

Download

Scheme electrice

Fișier .zip cu schemele electrice:

brinzearazvan_333cb_schemeelectrice.zip

Cod sursă

Fișier .zip care conține:

brinzearazvan_333cb_codsursa.zip

Bibliografie/Resurse