Paso 4: Software
Como se indicó anteriormente, la documentación y bibliotecas para el escudo de música v1 Seeedstudio son un poco de mala calidad y bajo apoyo. Yo finalmente rastreado un conjunto fijo de las bibliotecas que necesita para que realmente este funcionando y se adjuntan a continuación. Usted tendrá que añadir las tres carpetas a la carpeta de las bibliotecas de Arduino como lo haría con cualquier otra biblioteca.
Ahora es el punto en este paso donde yo procedo a divagar sobre el funcionamiento interno del bosquejo. Si no tienes ningún interés entonces no dudes de seguir adelante, no te estás perdiendo algo importante, pero si te quedas sólo puede aprender algo.
En primer lugar off pedimos muchas bibliotecas. Estos son todos usados mi la música escudo para hacer varias cosas como leer desde la tarjeta SD, transmitir el audio y decodificar las canciones con formato mp3. Con las bibliotecas del mismo reproductor de música se inicia y se declaran nuestras variables globales.
#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
Bien, avanzando hacia setup() a que comenzamos, configurar el reproductor de música. Esto incluye permitiendo control digital, a partir el jugador en modo normal y asignar la función de selección al azar de la canción a nuestro botón. después de eso sacar una semilla para el generador de números aleatorios de un pin analógico independiente y elegir la primera canción.
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));
Cualquier momento una canción se elige el código debe crear el nombre del archivo de la canción en tres pasos. Primera se anuncios a "0" como una cadena. Puesto que los nombres son cadenas de caracteres es más fácil si empezamos la construcción de una cadena. Por esta razón cada archivo de música debe tener un 0 como primer carácter. A continuación se elige un número al azar del conjunto disponible (1-75 de modo normal, 1-100 para el modo de jugador) y concatena a la cadena que contiene el 0. Finalmente la extensión del archivo,. mp3, es una bofetada en el final y todo está escrito en una matriz de caracteres.
String base = "0";
trackNum = random(1, 76);
base.concat(trackNum);
base.concat(".mp3");
base.toCharArray(title,9);
Ahora entrar en nuestro bucle principal y comenzar por establecer el reproductor en modo normal y la reproducción de inicio de la primera canción. En este punto el código lleva a cabo en la línea 41 hasta bien los extremos de la canción, que hace que el botón se abre y toma una nueva canción, o se pulsa el botón. Cuando se presiona el botón activa la función que nos ata al botón en 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;
La función de randomSong() comienza con la forma simple de debounce que probablemente no es realmente necesario y entonces se mueve comprobar si el botón está desbloqueado. Si es se detiene el reproductor, selecciona una canción nueva de todo el conjunto, añade esa canción como la siguiente en la lista de reproducción (no siquiera me comenzó el sistema de lista de reproducción de este escudo), avanza la lista de reproducción para la nueva canción y bloquea el botón.
if (switched == LOW){
playingState = PS_STOP;
. . .
myplayer.addToPlaylist(title);
playingState = PS_NEXT_SONG;
switched = HIGH;}