Differences

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

Link to this comparison view

pm:prj2022:cstan:800 [2022/05/30 02:06]
nicu_catalin.iovita [Software Design]
pm:prj2022:cstan:800 [2022/05/30 02:30] (current)
nicu_catalin.iovita [Introducere]
Line 10: Line 10:
  
 {{:​pm:​prj2022:​cstan:​screenshot_2022-05-30_at_01.41.18.png?​700|}} {{:​pm:​prj2022:​cstan:​screenshot_2022-05-30_at_01.41.18.png?​700|}}
 +
 +{{:​pm:​prj2022:​cstan:​mpc2.jpeg?​600|}}
 +
 +{{:​pm:​prj2022:​cstan:​mpc1.jpeg?​600|}}
 +
 ===== Descriere generală ===== ===== Descriere generală =====
  
Line 54: Line 59:
   * <​LedControl.h>​   * <​LedControl.h>​
   * <​LiquidCrystal_I2C.h>​   * <​LiquidCrystal_I2C.h>​
 +
 +
 +== Ecran LCD ==
 +
 +Ca si implementare,​ pentru ecranul LCD I2C, mi-am creat funcții care vor printa pe ecran diferite mesaje. Aceste funcții (printVolume,​ printMelodyTitle,​ etc), vor apela lcd.clear(),​ pentru curățarea ecranului, apoi vor poziționa cursorul pe ecran și vor afișa mesajul dorit. ​
 +
 +== Matrice leduri ==
 +
 +Pentru afisarea pe matricea de leduri, m-am folosit de o funcție ce parcurge fiecare led din interiorul matricei (printByte),​ apelând-o cu diferiți bytes. Inițial, am creat o funcție ce se va apela în modul de StandBy (mod în care utilizatorul nu dorește sa acționeze). În acest mod, matricea va cicla cu niște modele specifice, pana când utilizatorul va apasă o tasta anume. De fiecare data când utilizatorul apasă o tasta, modelul de pe matrice se va recolora. Pentru recolorarea matricilor, am folosit un software găsit online, numit Form, ce te ajuta sa creezi modele pe aceasta matrice 8x8, generand o secvența de octeti în binar sau hexazecimal. ​
 +
 +[[https://​www.youtube.com/​watch?​v=IwH9vzC4BKI]]
 +
 +== Keypad ==
 +
 +Pentru tastatura cu membrana, nu a fost complicata partea de software: în funcția de loop voi prelua de fiecare data caracterul apăsat de utilizator, și voi verifica valoarea acestuia. Cum am specificat, pentru tastele de la 1 la 9, se vor emite sunete generate de către difuzoare. La apăsarea tastei D, voi emite sunetul memorat anterior pana când tasta D va fi din nou apăsată.
 +
 +== Difuzoare ==
 +
 +Pentru difuzoare, m-am folosit de funcțiile tone() și noTone(). Ce nu am reușit prin implementarea mea a fost sa elimin partea de delay din apelul acestor funcții. Eu doream sa pot emite un sunet cu buzzerul (independent) și sa pot emite sunete diferite prin cele trei difuzoare; nu a fost posibil, deoarece sunetele se emiteau pe rând. Am încercat sa elimin o parte din delay, spre exemplu din afișarea pe matrice, creând funcția simulateDelay(),​ ca sa pot emite sunete în același timp și sa colorez matricea în timp real.
 +
 +Pentru melodia cântată automat (Game of Thrones theme), am găsit repository-ul lăsat în documentație pe GitHub, unde notele erau generate și melodia era deja existenta (împreună cu delay-ul notelor). Inițial am pus mai multe melodii, însă am renunțat și am lăsat doar una în final, deoarece am vrut sa implementez și partea de Loop, cât și incrementul și decrementul BPM.
 +
 +Partea de increment și decrement BPM se referă la simularea unui metronom; un instrument ce rulează pe fundal, de obicei niște note mai joase, pentru ca tu sa te poți sincroniza cu acesta, când dorești sa creezi diferite note (funcția freeStyle() din cod)
 +
 +== Buzzer ==
 +
 +Cum spuneam, buzzerul va lua rolul de '​metronom',​ creând ciclicitatea la dorința userului de a reda sunete joase sau înalte, pe care iei poate exersa talentul.
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
pm/prj2022/cstan/800.1653865563.txt.gz · Last modified: 2022/05/30 02:06 by nicu_catalin.iovita
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