Roulette Party Music Player (5 / 7 steg)
Steg 4: programvara
Som nämnts tidigare, dokumentation och bibliotek för v1 Seeedstudio musik shield är lite luddiga och under stöds. Jag spårade så småningom ner en fast uppsättning bibliotek för att faktiskt få detta Spring och de är bifogat nedan. Du kommer att behöva lägga till de tre mapparna i mappen Arduino bibliotek som med alla andra bibliotek.
Nu är punkten i det här steget där fortsätter jag att ströva om det inre arbetet i skissen. Om har inget intresse så känn dig fri att gå vidare, du saknar inte något kritiska, men om du stannar du bara kan lära sig något.
Först kallar off vi bibliotek. Dessa är alla använda min musik sköld att göra olika saker som att läsa från SD-kortet, överföra ljud och avkoda .mp3 formaterade låtarna. Med biblioteken musikspelaren själv initieras undan och våra globala variabler deklareras.
#include <Fat16.h>
#include <Fat16Util.h>
#include <NewSPI.h>
#include <arduino.h>
#include "pins_config.h"
#include "vs10xx.h"
#include "newSDLib.h"
#include "MusicPlayer.h"
//Music player initiation
MusicPlayer myplayer;
//Variables
char title[8]; //holds the assembled music track title
long trackNum; //holds the randomized track name
boolean switched = LOW; // tells if switch has been thrown
Flytta in i setup() vi börja, Tja, setup musikspelaren. Detta inkluderar att tillåta digital styrning, börjar spelaren i normalt läge och tilldela funktionen random sången urval till vår knapp. efter det vi dra ett frö för slumptalsgeneratorn en lös analoga PIN-kod och välj den första låten.
myplayer.keyDisable();
myplayer.digitalControlEnable();
myplayer.begin();//will initialize the hardware and set default mode to be normal.
myplayer.attachDigitOperation(3, randomSong, HIGH);
randomSeed(analogRead(4));
Helst en låt väljs koden måste bygga namnet på låten i tre steg. Första den annonser "0" som en sträng. Eftersom filnamnen strängar är det lättast om vi börjar bygga från en sträng. Det är därför varje musikfil måste ha en 0 som första tecken. Därefter väljer ett slumptal från tillgängliga uppsättningen (1-75 för normal-läge, 1-100 för spelare-läge) och sammanfogar som till den sträng som innehåller 0. Slutligen filtillägget, .mp3, smällde på slutet och hela är skriven till en karaktär array.
String base = "0";
trackNum = random(1, 76);
base.concat(trackNum);
base.concat(".mp3");
base.toCharArray(title,9);
Nu vi in våra huvudloop och börja genom att spelaren till normalläge och början uppspelning av den första låten. På denna punkt har koden på linje 41 fram till antingen låten slutar, vilket gör att knappen är olåst och plockar en ny låt, eller trycker på knappen. När knappen trycks aktiverar den funktionen som vi förknippat med knappen i setup().
myplayer.setPlayMode(MODE_NORMAL);//set mode to repeat to play a song
myplayer.playSong(title);//play a song named with test.wav
switched = LOW;
Funktionen randomSong() börjar med enkel form av debounce som förmodligen inte verkligen behövs och sedan flyttar till check om knappen är olåst. Om det är då den stannar spelaren, väljer en ny låt från hela uppsättningen, lägger den låten som nästa i spellistan (inte ens få mig igång på denna sköld spellista system), avancerar spellistan till den nya låten, och låser på knappen ner.
if (switched == LOW){
playingState = PS_STOP;
. . .
myplayer.addToPlaylist(title);
playingState = PS_NEXT_SONG;
switched = HIGH;}