Skip to content

Instantly share code, notes, and snippets.

@ypelletier
Last active January 14, 2019 00:34
Show Gist options
  • Save ypelletier/5930433 to your computer and use it in GitHub Desktop.
Save ypelletier/5930433 to your computer and use it in GitHub Desktop.
/***********************PIR_MP3***************************
* Ce sketch joue au hasard un mp3 stocké sur une carte SD
* lorsque le capteur PIR détecte une présence.
*
* Utilisation intensive de la libraire SFEMP3Shield par
* Bill Porter et Michael P. Flaga.
*
* La carte SD doit contenir des fichiers mp3 nommés "Track001.mp3", "Track002.mp3", etc.
*
* Connexions:
*
* Module de carte SD:
* SD GND // Arduino GND
* SD +5 // Arduino 5 V
* SD CS // Conversion 5 V à 3,3 V // Arduino 9
* SD MOSI // Conversion 5V à 3,3 V // Arduino 11
* SD MISO // Arduino 12
* SD SCK // Conversion 5 V à 3,3 V // Arduino 13
*
* Module VS1053:
* VS1053 5V // Arduino 5 V
* VS1053 DGND // Arduino GND
* VS1053 DREQ // Arduino 2
* VS1053 XCS // Conversion 5 V à 3,3 V // Arduino 6
* VS1053 XDCS // Conversion 5 V à 3,3 V // Arduino 7
* VS1053 XRST // Conversion 5 V à 3,3 V // Arduino 8
* VS1053 MOSI // Conversion 5 V à 3,3 V // Arduino 11
* VS 1053 MISO // Arduino 12
* VS1053 SCK // Conversion 5 V à 3,3 V // Arduino 13
*
* Capteur PIR branché à la pin 3.
*
* http://electroniqueamateur.blogspot.com/2013/07/la-machine-dire-bonjour.html
*
***********************************************************/
// les librairies necessaires
#include <SPI.h>
#include <SdFat.h>
#include <SdFatUtil.h>
#include <SFEMP3Shield.h>
SdFat sd;
SFEMP3Shield MP3player;
#define Infrarouge 3 // capteur infrarouge branché pin 3
unsigned long precedent=millis(); // quand le fichier a été jouée la dernière fois
unsigned long delai = 15 * 60000; //délai d'attente avant de jouer à nouveau la mélodie, en millisecondes.
void setup() {
//Initialisation de la carte SD
if(!sd.begin(SD_SEL, SPI_HALF_SPEED)) sd.initErrorHalt();
if(!sd.chdir("/")) sd.errorHalt("sd.chdir");
//Initialisation du VS1053
MP3player.begin();
pinMode(Infrarouge, INPUT);
MP3player.setVolume(10, 10); // réglage du volume
randomSeed (millis()); // pour la fonction aléatoire
MP3player.playTrack(random(1,5)); // optionnel: juste pour vérifier que tout marche correctement
}
void loop() {
if (digitalRead(Infrarouge)){ // détection d'un mouvement
if ((millis()-precedent)>delai) { // si aucun mouvement n'avait été détecté depuis longtemps
MP3player.playTrack(random(1,5)); // en supposant 5 fichiers nommés Track001.mp3, etc.
}
precedent=millis(); // on consigne le moment de la plus récente détection de mouvement
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment