Paso 2: Código de Arduino Final e instalación del hardware
El código final combinando ambos códigos para activar el sonido cada vez que el sensor de movimiento detecta movimientos es:
#include
#define PIR_MOTION_SENSOR 8 //Use pin 2 para recibir la señal desde el módulo
#define LED 13 / / este LED se encenderá cuando el sensor detecta movimiento
SoftwareSerial mp3 (2, 3); modificar esto con el conector que usas.
Boolean someoneThere = false;
Boolean someoneWasThere = false;
void setup() {}
MP3.Begin(9600);
Serial.Begin(9600);
Delay(100);
Si (true == SetPlayMode(0x00))
Serial.println ("establezca el modo de juego en 0 x 00, único modo de bucle");
otra cosa
Serial.println ("Error de conjunto de modo de reproducción");
PauseOnOffCurrentMusic();
randomSeed(analogRead(0));
pinMode (PIR_MOTION_SENSOR, entrada);
pinMode (LED, salida);
SetVolume(0x1F);
}
void loop()
{
¿Si (isPeopleDetected()) {//if detecta las personas móviles?
digitalWrite (LED, alta);
alguien allí ahora es cierto
someoneThere = true;
int num = al azar (1, 12);
Serial.println(NUM);
SetMusicPlay (00, (uint8_t) num);
Delay(2500); Esta demora es para el archivo de MP3
} else {}
someoneThere = false;
someoneWasThere = false;
Serial.println ("nadie");
digitalWrite (LED, baja);
PauseOnOffCurrentMusic();
}
Si (someoneThere == true & & someoneThere! = someoneWasThere) {}
Serial.println ("alguien está allí!");
someoneWasThere = true;
}
}
Establecer el índice de la música para jugar, el índice se decide por la secuencia de entrada
de la música;
hbyte: el byte alto del índice;
lbyte: el byte bajo del índice;
Boolean SetMusicPlay (uint8_t hbyte, uint8_t lbyte)
{
MP3.Write(0x7e);
MP3.Write(0x04);
MP3.Write(0XA0);
MP3.Write(hbyte);
MP3.Write(lbyte);
MP3.Write(0x7e);
Delay(10);
mientras (mp3.available())
{
Si (0xA0 == mp3.read())
verdaderas;
otra cosa
devuelven el valor false;
}
}
Hacer una pausa en la música actual de DESC.
PauseOnOffCurrentMusic(void) Boolean
{
MP3.Write(0x7e);
MP3.Write(0x02);
MP3.Write(0xA3);
MP3.Write(0x7e);
Delay(10);
mientras (mp3.available())
{
Si (0xA3 == mp3.read())
verdaderas;
otra cosa
devuelven el valor false;
}
}
El volumen, la gama es 0 x 00 a 0x1F
Boolean SetVolume (uint8_t volumen)
{
MP3.Write(0x7e);
MP3.Write(0x03);
MP3.Write(0xA7);
MP3.Write(Volume);
MP3.Write(0x7e);
Delay(10);
mientras (mp3.available())
{
Si (0xA7 == mp3.read())
verdaderas;
otra cosa
devuelven el valor false;
}
}
Boolean SetPlayMode (uint8_t playmode)
{
Si (((playmode == 0x00) | (modo de reproducción == 0 x 01) | (modo de reproducción == 0 x 02) | (Playmode == 0x03)) == false)
{
Serial.println ("parámetro de modo de reproducción ¡ Error!");
devuelven el valor false;
}
MP3.Write(0x7e);
MP3.Write(0x03);
MP3.Write(0xA9);
MP3.Write(Playmode);
MP3.Write(0x7e);
Delay(10);
mientras (mp3.available())
{
Si (0xA9 == mp3.read())
verdaderas;
otra cosa
devuelven el valor false;
}
}
/***************************************************************
* Función: Detectar que si alguien se mueve en detecta gama *
* Retorno:-booleano, verdadero es alguien detected.* /
isPeopleDetected() Boolean
{
int sensorValue = digitalRead(PIR_MOTION_SENSOR);
¿Si (sensorValue == HIGH) //if el valor del sensor es alta?
{
Devuelve verdadero, true //yes,return
}
otra cosa
{
return false; //no,return falso
}
}