Stap 2: Definitieve Arduino-Code en de hardware installeren
De uiteindelijke code voor het combineren van beide codes om te activeren van het geluid, telkens de bewegingssensor bewegingen detecteert is:
#include
#define PIR_MOTION_SENSOR 8 //Use pin 2 om het signaal van de module
#define LED 13 / / deze LED zal oplichten wanneer de sensor detecteert de beweging
SoftwareSerial mp3 (2, 3); Wijzig dit met de connector die u gebruikt.
Boole someoneThere = false;
Boole someoneWasThere = false;
VOID Setup {}
MP3.begin(9600);
Serial.begin(9600);
delay(100);
Als (waar == SetPlayMode(0x00))
Serial.println ("de Play-modus instelt op 0x00, Single Loop-modus.");
anders
Serial.println ("weergavemodus Set Error");
PauseOnOffCurrentMusic();
randomSeed(analogRead(0));
pinMode (PIR_MOTION_SENSOR, INPUT);
pinMode (LED, uitvoer);
SetVolume(0x1F);
}
void loop
{
Als (isPeopleDetected()) {//if het detecteert de bewegende personen?
digitalWrite (LED, hoge);
iemand er geldt nu
someoneThere = true;
int num = willekeurige (1, 12);
Serial.println(NUM);
SetMusicPlay (00), num (uint8_t);
delay(2500); deze vertraging is voor het MP3-bestand
} else {}
someoneThere = false;
someoneWasThere = false;
Serial.println ("no one");
digitalWrite (LED, laag);
PauseOnOffCurrentMusic();
}
Als (someoneThere == true & & someoneThere! = someoneWasThere) {}
Serial.println ("iemand is er!");
someoneWasThere = true;
}
}
Instellen van de index van de muziek te spelen, de index wordt bepaald door de volgorde van invoer
van de muziek;
hbyte: de hoge byte van de index;
lByte: de lage byte van de index;
Booleaanse 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);
terwijl (mp3.available())
{
Als (0xA0 == mp3.read())
return true;
anders
return false;
}
}
Aan/uit de huidige muziek pauzeren
Booleaanse PauseOnOffCurrentMusic(void)
{
MP3.write(0x7E);
MP3.write(0x02);
MP3.write(0xA3);
MP3.write(0x7E);
delay(10);
terwijl (mp3.available())
{
Als (0xA3 == mp3.read())
return true;
anders
return false;
}
}
Set het volume, het bereik is 0x00-0x1F
Booleaanse SetVolume (uint8_t volume)
{
MP3.write(0x7E);
MP3.write(0x03);
MP3.write(0xA7);
MP3.write(volume);
MP3.write(0x7E);
delay(10);
terwijl (mp3.available())
{
Als (0xA7 == mp3.read())
return true;
anders
return false;
}
}
Booleaanse SetPlayMode (uint8_t weergavemodus)
{
Als (((playmode == 0x00) | (weergavemodus == 0x01) | (weergavemodus == 0x02) | (PLAYMODE == 0x03)) == false)
{
Serial.println ("weergavemodus Parameter fout!");
return false;
}
MP3.write(0x7E);
MP3.write(0x03);
MP3.write(0xA9);
MP3.write(PLAYMODE);
MP3.write(0x7E);
delay(10);
terwijl (mp3.available())
{
Als (0xA9 == mp3.read())
return true;
anders
return false;
}
}
/***************************************************************
* Functie: Detecteren dat of iemand beweegt het het opsporen van bereik *
* Rendement:-Boole, waar is iemand detected.* /
Booleaanse isPeopleDetected()
{
int sensorValue = digitalRead(PIR_MOTION_SENSOR);
Als (sensorValue == HIGH) //if de sensor-waarde is hoog?
{
return true, true //yes,return
}
anders
{
return false; //no,return false
}
}