Étape 4: logiciels
Comme indiqué précédemment, la documentation et des bibliothèques pour le bouclier de la musique de Seeedstudio v1 sont un peu de mauvaise qualités et sous prise en charge. J’ai traqué finalement un ensemble fixe des bibliothèques nécessaires pour effectivement obtenir cette course et elles sont fixés ci-dessous. Vous devrez ajouter les trois dossiers dans votre dossier de bibliothèques Arduino comme vous le feriez avec n’importe quelle autre bibliothèque.
Maintenant est le point dans cette étape où j’ai continuer à divaguer sur le fonctionnement interne de l’esquisse. Si n’avoir aucun intérêt alors n’hésitez pas à passer, il vous manque pas quelque chose d’essentiel, mais si vous restez vous juste pourriez apprendre quelque chose.
Tout d’abord, nous appelons hors beaucoup de bibliothèques. Ceux-ci sont tous utilisés mon bouclier pour faire diverses choses comme la lecture de la carte SD, transmettre l’audio la musique et décoder les chansons .mp3 formaté. Avec les bibliothèques à l’écart du lecteur de musique elle-même est initié et nos variables globales sont déclarés.
#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
Déplacer dans setup(), nous commençons à, Eh bien, configurer le lecteur de musique. Cela inclut permettant un contrôle numérique, commençant le joueur en mode normal et en assignant la fonction de sélection de chanson au hasard à notre bouton. Après cela, nous dessiner une graine pour le générateur de nombres aléatoires d’une broche analogique seule et choisir la première chanson.
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));
N’importe quel moment une chanson est choisie le code doit générer le nom du fichier de la chanson en trois étapes. Première il annonces a « 0 » sous forme de chaîne. Étant donné que les noms de fichiers sont des chaînes, il est plus facile si nous commençons la construction d’une chaîne. C’est pourquoi chaque fichier de musique doit avoir un 0 comme premier caractère. Ensuite, il choisit un nombre aléatoire de l’ensemble disponible (en mode normal, 1-100 pour le mode joueur 1-75) et qui concatène la chaîne contenant la valeur 0. Enfin l’extension de fichier, .mp3, est frappé sur la fin et tout cela est écrit dans un tableau de caractères.
String base = "0";
trackNum = random(1, 76);
base.concat(trackNum);
base.concat(".mp3");
base.toCharArray(title,9);
Maintenant, nous entrons dans notre boucle principale et commencer en définissant le joueur pour le mode normal et lecture du début de la première chanson. À ce stade le code tient à la ligne 41 jusqu'à ce que soit la chanson se termine, qui fait en sorte que le bouton est déverrouillé et choisit une nouvelle chanson, ou la touche. Lorsque le bouton est enfoncé, il active la fonction qui nous lié au bouton dans 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 fonction randomSong() commence avec une forme simple de debounce qui probablement n’est pas vraiment nécessaire et se déplace ensuite à vérifier si le bouton est déverrouillé. S’il est puis il s’arrête le joueur, sélectionne une nouvelle chanson dans l’ensemble, ajoute cette chanson comme le suivant dans la playlist (ne même pas me démarré sur ce système de playlist), la liste de lecture sur la nouvelle chanson et verrouille le bouton.
if (switched == LOW){
playingState = PS_STOP;
. . .
myplayer.addToPlaylist(title);
playingState = PS_NEXT_SONG;
switched = HIGH;}