Etape 1: Le code que I´ve utilisé pour ce projet.
Voici mon code qui I´ve utilisées pour ce projet.
Il a plusieurs commentaires qui donneront de plus amples explications sur ce qui ne fait partie du code.
Il suffit de copier et charger ce code dans votre arduino UNO.
#define DEBUG //uncomment ceci pour activer le débogage en
moniteur
#include / / bibliothèque pour bouclier
#include / / bibliothèque pour sd card sur le bouclier
#include / / bibliothèque pour sd card sur le bouclier
#include / / bouclier de bibliothèque de contrôle
#include / / bibliothèque spéciale pour contrôler le servo
Créez et nommez l’objet bibliothèque
MP3player SFEMP3Shield ;
SdFat sd ;
Fichier SdFile ;
VarSpeedServo servo ;
Définir les épingles et autres
int sensorPin = A0 ; Capteur de lumière connecté à Analog0
int sensorValue ; variable pour stocker la valeur provenant de la sonde
int servoPin = 5 ; Broche contrôle le servo
int Led1 = 3 ; 1 LED
int Led2 = 4 ; 2 LED
int randomnr ; Un nombre aléatoire de choisir une chanson parmi la gamme de chanson nous utilisons plus tard
Boolean firstSong = 1 ; C’est donc la première piste sur la carte sd jouera toujours tout d’abord lors de l’amorçage l’arduino
void setup() / / exécuter une seule fois, au démarrage de l’esquisse
{
Serial.Begin(115200) ; initialiser le port série
pinMode (entrée, A0) ; définit la broche analogique A0 à être une entrée
pinMode (Led1, sortie) ; Jeux de broches 3 soit une puissance
pinMode (Led2, sortie) ; ensembles de broche 4 pour une sortie
Si (! sd.begin (SD_SEL, SPI_FULL_SPEED)) sd.initErrorHalt() ;
démarrer le bouclier lecteur de MP3
MP3player.Begin() ;
}
void loop() / / run maintes et maintes fois
{
sensorValue = analogRead(sensorPin) ; lire la valeur de la cellule photoélectrique
Delay(250) ; Attendez un court instant
#ifdef DEBUG
Serial.Print ("valeur de capteur de lumière:") ; Envoyer cette valeur à l’ordinateur
Serial.println(sensorValue) ;
Serial.Print ("chanson de première valeur booléenne:") ; Envoyer cette valeur à l’ordinateur
Serial.println(firstSong) ; Envoyer cette valeur à l’ordinateur
Serial.Print ("lumière détectée:") ;
Serial.println(isLightDetected(sensorValue)) ;
#endif
if(isLightDetected(sensorValue)) //Light fonction détecté est vrai
{
if(!servo.attached()) {/ / nous avons pu vérifier si le servo est attaché, donc il ne sera pas attacher une boucle est exécutée à chaque fois. Ceci est fait afin que nous puissions arrêter le servo tourne aussi bien lorsqu’il n’y a pas assez de lumière
servo.Attach(servoPin) ;
}
digitalWrite (Led1, élevé) ; tourne led connectée à la broche 3
digitalWrite (Led2, élevé) ; se met en marche voyant connecté à la borne 4
Delay(500) ; Attendre une demi-seconde pour allumer le servo...
servo.writeMicroseconds(1535) ;
if(firstSong == 1) / / vérifier si la chanson n’a pas joué avant, dans l’affirmative, elle démarre !
{
Char [] firstsong = "track001.mp3" ;
MP3player.playmp3(firstsong) ;
Delay(250) ;
firstSong = 0 ;
#ifdef DEBUG
Serial.Print ("valeur booléenne après la chanson:") ; Envoyer cette valeur à l’ordinateur
Serial.println(firstSong) ; Envoyer cette valeur à l’ordinateur
#endif
}
randomnr = random(0,5) ; nombre aléatoire généré de choisir une chanson parmi la gamme
Tableau de la chanson pour la musique à être choisis au hasard
char * trackArray [] = {}
« track001.mp3 »,
« track002.mp3 »,
« track003.mp3 »,
« track004.mp3 »,
« track005.mp3 »
};
MP3player.playmp3(trackArray[randomnr]) ; Ecouter la chanson !
sensorValue = analogRead(sensorPin) ; Lire la valeur du capteur pour voir si il a encore assez de lumière
#ifdef DEBUG
Serial.Print ("valeur de capteur de lumière après la boucle:") ; Envoyer cette valeur à l’ordinateur
Serial.println(sensorValue) ;
#endif
}
//No d’autre lumière détectée
{
#ifdef DEBUG
Serial.println ("pas assez de lumière détecté tout éteindre") ; //
#endif
Tout arrêter !
MP3player.stopTrack() ;
digitalWrite (Led1, faible) ; Tour de LED
digitalWrite (Led2, faible) ; Tour de LED
servo.Detach() ;
}
}
Fonctionner pour nous aider à tester si capteur conditions sont remplies
Boolean isLightDetected (int sensorValue) {}
Si {(sensorValue > 50)
retourne la valeur true ;
}
else {}
retourne la valeur false ;
}
}