Stap 4: Software
Zoals eerder gezegd, de documentatie en de bibliotheken voor het v1 Seeedstudio muziek schild zijn een beetje nagemaakte en onder ondersteund. Ik uiteindelijk opgespoord een vaste set van de bibliotheken die nodig zijn om daadwerkelijk deze lopen en zij zijn die hieronder zijn toegevoegd. U moet de drie mappen toevoegen aan uw omslag van de bibliotheken Arduino zoals u zou doen met een andere bibliotheek.
Nu is het punt in deze stap waar ik overgaan tot zwerftocht over de binnenwerkingen van de schets. Als hebben geen belang dan voel je vrij om verder te gaan, mis je niet om het even wat kritisch, maar als je verblijf je gewoon iets kan leren.
Eerste noemen off we een heleboel bibliotheken. Dit zijn alle gebruikte mijn de muziek schild te doen verschillende dingen zoals lezen van de SD-kaart, het zenden van de audio, en decoderen van de .mp3 opgemaakt nummers. Met de bibliotheken uit de weg de speler van de muziek zelf is geïnitieerd en onze globale variabelen worden gedeclareerd.
#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
Setup die wij te beginnen betreden, Nou, opstelling de speler van de muziek. Het gaat hierbij om digitale controle, de speler in de normale modus starten en de willekeurige nummer selectie functie toe te wijzen aan onze knop. na dat we een zaad voor de random number generator te trekken uit een niet-vastgemaakte analoge pin en kies het eerste nummer.
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));
Elk gewenst moment een nummer wordt gekozen de code moet de bestandsnaam van het lied in drie stappen bouwen. Eerste het advertenties een "0" als een tekenreeks. Aangezien de bestandsnamen strings zijn is het gemakkelijkst als we beginnen met de bouw van een string. Dit is waarom elk muziekbestand dient te beschikken over een 0 als eerste teken. Vervolgens het kiest voor een willekeurig getal uit de beschikbare set (1-75 voor de normale modus, 1-100 voor gokker modus) en voegt dat aan de tekenreeks met de 0. Tot slot de extensie .mp3, is geslagen op het einde en het hele ding wordt weggeschreven naar een karakter array.
String base = "0";
trackNum = random(1, 76);
base.concat(trackNum);
base.concat(".mp3");
base.toCharArray(title,9);
Nu we onze hoofdlus invoeren en beginnen door de instelling van de speler tot normale modus en begin afspelen van het eerste nummer. Op dit punt houdt de code aan lijn 41 totdat ofwel de song is afgelopen, die ervoor dat de knop wordt ontgrendeld en pakt een nieuw lied zorgt, of de knop is ingedrukt. Wanneer de knop wordt gedrukt activeert de functie die we aan de knop in Setup gebonden.
myplayer.setPlayMode(MODE_NORMAL);//set mode to repeat to play a song
myplayer.playSong(title);//play a song named with test.wav
switched = LOW;
De randomSong() functie begint met eenvoudige vorm van ontdendering die waarschijnlijk is niet echt nodig en gaat vervolgens om te controleren of de knop ontgrendeld. Als het dan stopt de speler, een nieuw lied kiest de hele set, voegt dat liedje als de volgende in de afspeellijst (niet zelfs get me begon op de dit schild afspeellijst systeem), voorschotten van de afspeellijst naar het nieuwe liedje, en Hiermee vergrendelt u de knop naar beneden.
if (switched == LOW){
playingState = PS_STOP;
. . .
myplayer.addToPlaylist(title);
playingState = PS_NEXT_SONG;
switched = HIGH;}