Paso 1: El código que I´ve utilizado para este proyecto.
Aquí está todo mi código de I´ve utilizado para este proyecto.
Tiene múltiples comentarios que le dará más explicaciones sobre lo que realmente hace que parte del código.
Sólo copie y coloque este código en tu arduino UNO.
#define DEBUG //uncomment para habilitar la depuración en
monitor
#include / / biblioteca para escudo
#include / / biblioteca para sd card en escudo
#include / / biblioteca para sd card en escudo
#include / / escudo de biblioteca de control
#include / / biblioteca especial para controlar el servo
crear y nombrar el objeto de la biblioteca
SFEMP3Shield MP3player;
SdFat sd;
Archivo SdFile;
VarSpeedServo servo;
Definir pines y tal
int sensorPin = A0; Sensor de luz conectado a Analog0
int sensorValue; variable para almacenar el valor que viene desde el sensor
int servoPin = 5; PIN que controla el servo
int Led1 = 3; LED 1
int Led2 = 4; 2 LED
int randomnr; Número aleatorio para elegir una canción de la matriz de la canción que usamos más adelante
Boolean firstSong = 1; Esto es así la primera pista en la tarjeta sd siempre jugar primero al arrancar el arduino
void setup() / / ejecuta una vez, cuando comienza el bosquejo
{
Serial.Begin(115200); inicializar el puerto serie
pinMode (A0, entrada); Juegos pin analógico A0 a ser una entrada
pinMode (Led1, salida); Juegos pin 3 sea una salida
pinMode (Led2, salida); Juegos pin 4 al ser una salida
Si (! sd.begin (SD_SEL, SPI_FULL_SPEED)) sd.initErrorHalt();
arrancar el escudo de reproductor de MP3
Mp3Player.Begin();
}
void loop() / / ejecuta una y otra vez
{
sensorValue = analogRead(sensorPin); leer el valor del sensor de luz
Delay(250); Espere unos instantes
#ifdef DEBUG
Serial.Print ("valor del Sensor de luz:"); Enviar ese valor a la computadora
Serial.println(sensorValue);
Serial.Print ("primera canción de tipo Boolean:"); Enviar ese valor a la computadora
Serial.println(firstSong); Enviar ese valor a la computadora
Serial.Print ("luz detectado:");
Serial.println(isLightDetected(sensorValue));
#endif
if(isLightDetected(sensorValue)) //Light función detectada es cierto
{
if(!servo.Attached()) {/ / tenemos que comprobar si está conectado el servo, por lo que no conecte cada vez que coloca. Esto se hace así podemos dejar el servo gira así cuando no hay suficiente luz
servo.Attach(servoPin);
}
digitalWrite (LED 1, elevado); enciende led conectado al pin 3
digitalWrite (Led2, alto); enciende led conectado al pin 4
Delay(500); Esperar medio segundo para encender el servo...
servo.writeMicroseconds(1535);
if(firstSong == 1) / / comprobar si la canción no ha jugado antes, si es así la marcha!
{
char firstsong [] = "track001.mp3";
Mp3Player.playMP3(firstsong);
Delay(250);
firstSong = 0;
#ifdef DEBUG
Serial.Print ("valor booleano después de la canción:"); Enviar ese valor a la computadora
Serial.println(firstSong); Enviar ese valor a la computadora
#endif
}
randomnr = random(0,5); número aleatorio generado por haber elegido una canción de la matriz
Arreglo de la canción para la música a ser elegidos al azar
char * trackArray [] = {}
"track001.mp3",
"track002.mp3",
"track003.mp3",
"track004.mp3",
"track005.mp3"
};
Mp3Player.playMP3(trackArray[randomnr]); Escucha la canción!
sensorValue = analogRead(sensorPin); Leer valor de sensor para ver si todavía tiene suficiente luz
#ifdef DEBUG
Serial.Print ("valor de Sensor de luz después de bucle:"); Enviar ese valor a la computadora
Serial.println(sensorValue);
#endif
}
Else //No luz detectado
{
#ifdef DEBUG
Serial.println ("no hay suficiente luz detectado todo cerrar"); //
#endif
Dejar todo!
Mp3Player.stopTrack();
digitalWrite (LED 1, bajo); Cambio de leds
digitalWrite (Led2, LOW); Cambio de leds
servo.Detach();
}
}
Función para ayudarnos a probar si se cumplen las condiciones del sensor
Boolean isLightDetected (int sensorValue) {}
Si (sensorValue > 50) {}
verdaderas;
}
Else {}
devuelven el valor false;
}
}