Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2022:cristip:music-board [2022/05/06 11:39]
mihai.pasca created
pm:prj2022:cristip:music-board [2022/06/01 23:59] (current)
mihai.pasca
Line 1: Line 1:
-====== Music Board ======+====== Music Board - Pasca Mihai Alexandru 331CA======
 Mihai Alexandru Pasca, 331CA Mihai Alexandru Pasca, 331CA
 ===== Introducere ===== ===== Introducere =====
  
-<note tip> +Proiectul consta in realizarea un pian cu functie ​de record/​playback si functie ​de learn, ​pentru ​a ajuta utilizatorul sa cante diferite melodii. 
-Prezentarea pe scurt a proiectului vostru: +
-  * ce face +
-  * care este scopul lui +
-  * care a fost ideea de la care aţi pornit +
-  * de ce credeţi că este util pentru ​alţii şi pentru voi +
-</​note>​+
 ===== Descriere generală ===== ===== Descriere generală =====
  
-<note tip> +Tastele pianului vor fi reprezentate ​de 8 butoane, care reprezinta ​octava. 
-O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită ​de o descriere a acestora precum şi a modului în care interacţionează.+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
  
-Exemplu de schemă bloc: http://​www.robs-projects.com/​mp3proj/​newplayer.html +=== Schema Bloc ===
-</​note>​+
  
 +{{ :​pm:​prj2022:​cristip:​schema_bloc_music_board.png?​600 |}}
 +  * Claviatura si butoanele de control sunt amplasate pe keypad-ul 4x4 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 ===== ===== Hardware Design =====
  
-<note tip> +=== Lista de piese === 
-Aici puneţi tot ce ţine de hardware design: +  * Arduino Mega 2560 
-  * listă ​de piese +  * Breadboard 
-  * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://​www.captain.at/​electronic-atmega16-mmc-schematic.png) +  * Difuzor ​de 8 Ω 
-  * diagrame ​de semnal ​ +  * Modul amplificator LM386 
-  * rezultatele simulării +  * LCD cu modul I2C 
-</​note>​+  * Tastatura ​de 16 butoane 
 +  * Potentiometru 
 +  * 8 LED-uri 
 +  * 8 rezistente ​de 1k 
 + 
 +=== Schema electrica === 
 +{{ :​pm:​prj2022:​cristip:​schema_electrica_music_board.jpg?​600 |}}
  
 ===== Software Design ===== ===== Software Design =====
  
 + Am folosit biblioteca "​LiquidCrystal_I2C"​ pentru interactiunea cu LCD-ul.
 + ​Mediul de dezvoltare a fost Arduino IDE.
  
-<note tip> + In fisierul ​**utils.h** am definit frecventele pentru notele pianului, am denumit pinii, butoanele si am denumit starile in care se poate afla pianului.
-Descrierea codului aplicaţiei (firmware):​ +
-  ​* ​mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) +
-  ​librării şi surse 3rd-party (e.g. Procyon AVRlib) +
-  ​algoritmi şi structuri pe care plănuiţi să le implementaţi +
-  * (etapa 3) surse şi funcţii implementate +
-</​note>​+
  
-===== Rezultate Obţinute =====+ 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().
  
-<note tip> + 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, 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru+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
-</note>+ 
 + ​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 ===== 
 + 
 +Demo: https://​youtu.be/wg0XmZUWB_8
  
 ===== Concluzii ===== ===== 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 ===== ===== Download =====
  
-<note warning>​ +Cod sursa:{{:pm:prj2022:cristip:pasca_mihai_proiectpm.zip|}}
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectuluisurse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). +
- +
-Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:​pm:​prj20??:​c?​** sau **:​pm:​prj20??:​c?:​nume_student** (dacă este cazul). **Exemplu:​** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. +
-</​note>​+
  
 ===== Jurnal ===== ===== Jurnal =====
  
-<note tip> +  * 22.04 -alegere tema proiect. 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect ​progresul proiectului+  * 09.05 -> Milestone 1 
-</note>+  * 30.05 -Milestone 2
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
 +1. https://​www.youtube.com/​watch?​v=aaqaAXlZbuc&​t=140s
 +
 +2. https://​github.com/​rydepier/​Arduino-and-4x4-Matrix-Keyboard
  
-<​note>​ +3https://​lastminuteengineers.com/​i2c-lcd-arduino-tutorial/
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. +
-</note>+
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
pm/prj2022/cristip/music-board.1651826357.txt.gz · Last modified: 2022/05/06 11:39 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