Piano Player and microSD Song Looper

Student: Răzvan Florian Ghițan

Grupa: 334CC

Introducere

În cadrul acestui proiect, mi-am propus să creez un dispozitiv multi-use care să îmbine utilitatea și plăcerea de a utiliza un pian, cât și funcționalitatea redării melodiilor preferate de pe un card microSD. De asemenea, în cazul în care utilizatorul dorește să se repete o secvență din piesa favorită, va exista modalitatea de a crea un looper pentru câteva secunde din piesă și în același timp, opțiunea de a naviga prin lista de piese favorite.

Descriere generală

În momentul în care plăcuța Arduino este conectată la un sistem, aceasta va putea reda sunetele specifice octavei unui pian prin apăsarea butoanelor amplasate. De asemenea, modulul de card MicroSD va citi date constant și va reda conținutul pieselor mp3 de pe acesta. Pentru aceste opțiuni vor exista butoane care vor reda piesa următoare, respectiv piesa precedentă și un buton specific pentru opțiunea de looping.

Hardware Design

Componente necesare:
  • Plusivo board
  • Breadboard
  • Pushbutton switches
  • Buzzer / Speaker
  • Module adapter MicroSD card
Schemă electrică:

Software Design

Biblioteci utilizate:
  • SD.h: pentru interacțiunea cu modulul de card microSD
  • SPI.h: pentru comunicarea prin interfața serial
  • TMRpcm.h: pentru redarea fișiserelor în format .wav către buzzer
Codificarea pieselor hardware:
  • CS (Chip Select) este conectat la pinul digital 10
  • BUZZ (Buzzer-ul) este conectat la pinul digital 9
  • C/D/E/F/G/A/B reprezintă notele din octavă, conectate la pinii digitali 8, 7, 6, 5, 4, 3, 2
  • PREV reprezintă butonul care redă piesa dinaintea celei care este redată curent și este conectat la pinul analogic A0
  • NEXT reprezintă butonul care redă piesa următoare celei care este redată curent și este conectat la pinul analogic A1
  • LOOP reprezintă butonul care creează secvența de loop curentă în momentul apăsări și până în momentul ridicării și este conectat la pinul analogic A2

Pentru redarea sunetelor specifice pianului, am folosit funcția tone() și o serie de IF-uri pentru a reda sunetul corespunzător frecvenței notei în funcție de butonul apăsat.

Comunicarea cu microSD-ul o realizez cu variabila de tip TMRpcm, căreia îi setez pinul buzzerului și volumul. În loop() verific dacă este apăsat vreunul dintre butoanele de control a pieselor. Dacă sunt apăsate butoanele NEXT sau PREV, deplasez iteratorul din lista de fișiere .wav de pe cardul microSD cu o piesă în față sau în spate, după caz.

De asemenea, în funcția play() redau suntele specifice piesei curente în funcție de variabila iterator.

Partea de looping audio nu funcționează datorită limitărilor plăcuței.

Surse și poze

Concluzii

A fost un proiect destul de interesant și challenging. Am întâmpinat probleme cu piesele și modulele. De asemenea, nu recomand personal dezvoltarea pe o plăcuță Plusivo (Chinese Arduino). A fost mega complicată testarea funcționalităților și încărcarea codului pe plăcuță. În rest, cea mai plăcută activitate pentru o disciplină din ultimul timp. =)

Jurnal

  • 02.05.2022: Creare pagină OCW
  • 04.05.2022: Adăugare informații despre proiect
  • 24.05.2022: Adăugare schemă electrică în secțiunea Hardware Design
  • 30.05.2022: Actualizarea secțiunii Software Design

Bibliografie/Resurse

pm/prj2022/dene/special_player.txt · Last modified: 2022/06/02 01:02 by razvan.ghitan
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