The code is long but simple. You need to isntall the libraries for the DF player and the WS2812 LED strip. On the next link you have the code and libraries. So download those and install them to the Arduino IDE. Then compile and upload the code to the Arduino and that's it.
#include <Adafruit_NeoPixel.h>
#include <SoftwareSerial.h>
#include <DFMiniMp3.h>
int PIR_in = 3;
#define PIN 6
//Variables
bool detected = false;
int mode = 0;
byte neopix_gamma[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2,
2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5,
5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10,
10, 10, 11, 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 16, 16,
17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 24, 24, 25,
25, 26, 27, 27, 28, 29, 29, 30, 31, 32, 32, 33, 34, 35, 35, 36,
37, 38, 39, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 50,
51, 52, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68,
69, 70, 72, 73, 74, 75, 77, 78, 79, 81, 82, 83, 85, 86, 87, 89,
90, 92, 93, 95, 96, 98, 99,101,102,104,105,107,109,110,112,114,
115,117,119,120,122,124,126,127,129,131,133,135,137,138,140,142,
144,146,148,150,152,154,156,158,160,162,164,167,169,171,173,175,
177,180,182,184,186,189,191,193,196,198,200,203,205,208,210,213,
215,218,220,223,225,228,231,233,236,239,241,244,247,249,252,255 };
// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 6
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
//////////////////////////////////////////////////////////////////
// implement a notification class,
// its member methods will get called
//
class Mp3Notify
{
public:
static void OnError(uint16_t errorCode)
{
// see DfMp3_Error for code meaning
Serial.println();
Serial.print("Com Error ");
Serial.println(errorCode);
}
static void OnPlayFinished(uint16_t globalTrack)
{
Serial.println();
Serial.print("Play finished for #");
Serial.println(globalTrack);
}
static void OnCardOnline(uint16_t code)
{
Serial.println();
Serial.print("Card online ");
Serial.println(code);
}
static void OnCardInserted(uint16_t code)
{
Serial.println();
Serial.print("Card inserted ");
Serial.println(code);
}
static void OnCardRemoved(uint16_t code)
{
Serial.println();
Serial.print("Card removed ");
Serial.println(code);
}
};
DFMiniMp3<HardwareSerial, Mp3Notify> mp3(Serial);
//////////////////////////////////////////////////////////////////
void setup() {
pinMode(PIR_in,INPUT);
pixels.begin(); // This initializes the NeoPixel library.
delay(100);
Serial.begin(115200);
mp3.begin();
uint16_t volume = mp3.getVolume();
mp3.setVolume(30);
uint16_t count = mp3.getTotalTrackCount();
delay(1000);
//mp3.playMp3FolderTrack(1); // engine start + submarine sound
//EEPROM_writeAnything(1, 000);
}
void loop() {
if(digitalRead(PIR_in) && !detected)
{
detected = true;
}
if(!digitalRead(PIR_in) && detected)
{
detected = false;
}
if(detected)
{
mode = mode + 1;
if(mode > 3)
{
mode = 0;
}
if(mode == 0)
{
mp3.playMp3FolderTrack(1);
fadeEyesRed(4000);
fadeEyesWhite(1500);
pixels.setPixelColor(4, pixels.Color(255,0,0));
pixels.setPixelColor(5, pixels.Color(255,0,0));
pixels.show();
eyesOff();
delay(1000);
pixels.setPixelColor(4, pixels.Color(255,0,0));
pixels.setPixelColor(5, pixels.Color(255,0,0));
pixels.show();
delay(2000);
theaterChase(pixels.Color(127, 127, 127), 50, 30); // White
fadeOutEyesRed(4000);
delay(1000);
pixels.show(); // This sends the updated pixel color to the hardware.
}//end of mode 0
if(mode == 1)
{
mp3.playMp3FolderTrack(2);
haha();
eyesOff();
delay(1000);
allWhite();
delay(1600);
allOff();
fadeEyesBlue(5600);
haha();
delay(450);
fadeEyesWhite(500);
fadeEyesWhite(500);
eyesOff();
delay(1800);
fadeEyesWhite(500);
fadeEyesWhite(700);
eyesOff();
delay(1400);
fadeEyesWhite(500);
fadeEyesWhite(700);
eyesOff();
delay(1400);
fadeEyesWhite(500);
fadeEyesWhite(700);
eyesOff();
delay(2000);
}//end of mode 1
if(mode == 2)
{
mp3.playMp3FolderTrack(3);
haha();
delay(400);
haha();
delay(180);
haha();
delay(80);
haha();
delay(10);
haha();
delay(2000);
}//end of mode 2
if(mode == 3)
{
mp3.playMp3FolderTrack(4);
theaterChase(pixels.Color(127, 127, 127), 50, 34); // White
fadeEyesRed(300);
delay(2000);
theaterChase(pixels.Color(127, 127, 127), 50, 45); // White
fadeOutEyesWhite(2000);
delay(5000);
}//end of mode 3
}//end of detected
if(!detected)
{
allOff();
}
}//end void loop
void allWhite()
{
int i = 0;
while(i < 6)
{
pixels.setPixelColor(i, pixels.Color(255,255,255));
i = i + 1;
}
pixels.show();
}
void allOff()
{
int i = 0;
while(i < 6)
{
pixels.setPixelColor(i, pixels.Color(0,0,0));
i = i + 1;
}
pixels.show();
}
void haha()
{
fadeEyesRed(155);
eyesOff();
delay(30);
fadeEyesRed(155);
eyesOff();
delay(30);
fadeEyesRed(155);
eyesOff();
delay(30);
fadeEyesRed(155);
eyesOff();
delay(30);
fadeEyesRed(155);
eyesOff();
delay(30);
fadeEyesRed(155);
eyesOff();
delay(30);
fadeEyesRed(155);
eyesOff();
delay(30);
fadeEyesRed(155);
eyesOff();
delay(30);
fadeEyesRed(155);
eyesOff();
delay(30);
fadeEyesRed(175);
eyesOff();
delay(30);
fadeEyesRed(155);
eyesOff();
delay(30);
fadeEyesRed(155);
eyesOff();
delay(30);
fadeEyesRed(155);
eyesOff();
delay(30);
fadeEyesRed(155);
eyesOff();
delay(30);
fadeEyesRed(225);
eyesOff();
delay(30);
fadeEyesRed(155);
eyesOff();
delay(30);
fadeEyesRed(130);
eyesOff();
delay(30);
}
void eyesOff()
{
pixels.setPixelColor(4, pixels.Color(0,0,0));
pixels.setPixelColor(5, pixels.Color(0,0,0));
pixels.show();
}
void fire (int DELAY)
{
int x = 0;
while (x < 10)
{
int fire_time = 20*random(2,5);
int i = 0;
while(i < fire_time)
{
pixels.setPixelColor(0, pixels.Color(90 + i*2,80 + i*2,0));
pixels.setPixelColor(1, pixels.Color(90 + i*2,80 + i*2,0));
pixels.setPixelColor(2, pixels.Color(90 + i*2,80 + i*2,0));
pixels.setPixelColor(3, pixels.Color(90 + i*2,80 + i*2,0));
pixels.setPixelColor(4, pixels.Color(90 + i*2,80 + i*2,0));
pixels.setPixelColor(5, pixels.Color(90 + i*2,80 + i*2,0));
pixels.show();
delay(10);
i = i + 1;
}
i = 0;
while(i < 6)
{
pixels.setPixelColor(i, pixels.Color(0,0,0));
pixels.show();
i = i + 1;
}
delay(fire_time/3);
x = x + 1;
}
}
void fadeEyesBlue(int DELAY)
{
float loop_delay = DELAY / 255;
int i = 0;
while(i < 255)
{
pixels.setPixelColor(4, pixels.Color(0,0,i));
pixels.setPixelColor(5, pixels.Color(0,0,i));
pixels.show();
i = i + 1;
delay(loop_delay);
}
}
void fadeEyesWhite(int DELAY)
{
float loop_delay = DELAY / 255;
int i = 0;
while(i < 255)
{
pixels.setPixelColor(4, pixels.Color(i,i,i));
pixels.setPixelColor(5, pixels.Color(i,i,i));
pixels.show();
i = i + 1;
delay(loop_delay);
}
}
void fadeEyesRed(int DELAY)
{
float loop_delay = DELAY / 255;
int i = 0;
while(i < 255)
{
pixels.setPixelColor(4, pixels.Color(i,0,0));
pixels.setPixelColor(5, pixels.Color(i,0,0));
pixels.show();
i = i + 1;
delay(loop_delay);
}
}
void fadeOutEyesWhite(int DELAY)
{
float loop_delay = DELAY / 255;
int i = 0;
while(i < 255)
{
pixels.setPixelColor(4, pixels.Color(255-i,255-i,255-i));
pixels.setPixelColor(5, pixels.Color(255-i,255-i,255-i));
pixels.show();
i = i + 1;
delay(loop_delay);
}
}
void fadeOutEyesRed(int DELAY)
{
float loop_delay = DELAY / 255;
int i = 0;
while(i < 255)
{
pixels.setPixelColor(4, pixels.Color(255-i,0,0));
pixels.setPixelColor(5, pixels.Color(255-i,0,0));
pixels.show();
i = i + 1;
delay(loop_delay);
}
}
//Theatre-style crawling lights.
void theaterChase(uint32_t c, uint8_t wait, int cycles) {
for (int j=0; j<cycles; j++) { //do 10 cycles of chasing
for (int q=0; q < 3; q++) {
for (int i=0; i < pixels.numPixels(); i=i+3) {
pixels.setPixelColor(i+q, c); //turn every third pixel on
}
pixels.show();
delay(wait);
for (int i=0; i < pixels.numPixels(); i=i+3) {
pixels.setPixelColor(i+q, 0); //turn every third pixel off
}
}
}
}