PAD Sound and Light Board

sound board -

PAD Sound and Light Board



When I first started making Death Trooper helmets I began looking for a simple solution to adding sound and lights to the helmet. I also wanted to add sound and lights to my E-11D blaster. There were a number of solutions out there, but they all involved a lot of wiring and soldering. So I decided I wanted to make an easy to use little board that would combine together a small Arduino board with SD card reader and MP3 player. The result is our PAD Sound and Light Board. Truth is there isn't anything truly revolutionary about it, its just simple and easy to use in a pretty small package. Its also ver versitle so it can be used in any number of situations where you want to sink a sound file with an LED light.

The board is available in our store for $35. Add lights, a speaker, a few switches, and 5V power supply,  and your ready to rock and roll.  For more advanced users, a bit of programming knowledge helps.

Note that if you use use bare LEDs, then you will need to add in resistors onto the board. There are spots for them. If you use LEDs that are prewired with resistors already, then you need to add a wire jumper accross this section.

PowerThe board requires a 5V power supply such as that from a USB port. My favorite power source is these littel cyclinder rechargable USB power packs. (Do not use more than 5V or you can blow out the sound board.)

Another great solution is a little power board that will accept both 9-12V and convert it down to 5V. I use a 12V system in my DT armor so I added in one of these little boards. The can be found on Amazon here.

The Arduino board comes pre-programmed with simple code that can be used for a blaster or for cycling through sounds in a helmet. But if your a bit more advanced here is the code so you can modify it to do a lot more. I'm posting this code under the Creative Commons license. All I ask is that if you modify it to do something else cool, you will share it with me so I can post it here as well for others. You will also need the sound board libraries which can be found here.(https://github.com/DFRobot/DFRobotDFPlayerMini/archive/1.0.3.zip)

Below is the code I used.  You are free to modify it to fit your needs. 

/***************************************************Plastic Arms Dealer Sound and Light BoardV1April 5, 2018Andrew McClaryCopyright 2018 All Rights Reserved ****************************************************/
#include "Arduino.h"#include "SoftwareSerial.h"#include "DFRobotDFPlayerMini.h"
SoftwareSerial mySoftwareSerial(8,9); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);
int pinButton = 12; //the pin where we connect the buttonint voiceButton = 11; //the pin where we connect the buttonint lightButton = 10; //the pin where we connect the Snout Scanner buttonint scanButton = 13; //the pin where we connect the Side Scanner button
int LED1 = 6; //the pin we connect the Blaster LEDint LED2 = 7; //the pin we connect the Blaster LEDint LED3 = 4; //the pin we connect the Side ScannerLEDint LED4 = 5; //the pin we connect the Snout Scanner LED
int fireSound = 1;int voiceSound = 1;int lightOn=0;int snoutlightOn=0;
void setup(){ mySoftwareSerial.begin(9600); Serial.begin(115200); pinMode(pinButton, INPUT_PULLUP); //set the button pin as INPUT pinMode(voiceButton, INPUT_PULLUP); //set the button pin as INPUT pinMode(lightButton, INPUT_PULLUP); //set the button pin as INPUT pinMode(LED1, OUTPUT); //set the LED pin as OUTPUT pinMode(LED2, OUTPUT); //set the LED pin as OUTPUT pinMode(LED3, OUTPUT); //set the LED pin as OUTPUT pinMode(LED4, OUTPUT); //set the LED pin as OUTPUT Serial.println(); Serial.println(F("Plastic Arms Dealer Blaster Sound System V beta 1")); Serial.println(F("Initializing Sound Player ... (May take 3~5 seconds)")); if (!myDFPlayer.begin(mySoftwareSerial)) { //Use softwareSerial to communicate with mp3. Serial.println(F("Unable to begin:")); Serial.println(F("1.Please recheck the connection!")); Serial.println(F("2.Please insert the SD card!")); while(true); } Serial.println(F("Plastic Arms Dealer Blaster Sound System online.")); Serial.println(F("Folder 1.")); Serial.println(myDFPlayer.readFileCountsInFolder(1)); //read fill counts in folder SD:/1 Serial.println(F("Folder 2")); Serial.println(myDFPlayer.readFileCountsInFolder(2)); //read fill counts in folder SD:/03 Serial.println(F("Folder 3")); Serial.println(myDFPlayer.readFileCountsInFolder(3)); //read fill counts in folder SD:/03 myDFPlayer.volume(30); //Set volume value. From 0 to 30 //Play startup sound myDFPlayer.playLargeFolder(03, 1);; }
void loop(){ static unsigned long timer = millis(); int stateButton = digitalRead(pinButton); //read the state of the button int callButton = digitalRead(voiceButton); //read the state of the button int snoutButton = digitalRead(lightButton); //read the state of the button int scanButton = digitalRead(scanButton); //read the state of the button //Check for Fire button if(stateButton == LOW) { //if is pressed //Serial.println(F("Fire button Pressed")); //Play the sound file //myDFPlayer.next(); //Play next mp3 myDFPlayer.playLargeFolder(02, fireSound); printDetail(myDFPlayer.readType(), myDFPlayer.read()); delay(100); //Flash the leds digitalWrite(LED1, HIGH); //write 1 or HIGH to led pin delay(200); digitalWrite(LED1, LOW); //write 1 or HIGH to led pin delay(100); digitalWrite(LED2, HIGH); //write 1 or HIGH to led pin delay(100); digitalWrite(LED2, LOW); //write 1 or HIGH to led pin delay(50); digitalWrite(LED2, HIGH); //write 1 or HIGH to led pin delay(200); digitalWrite(LED2, LOW); //write 1 or HIGH to led pindigitalWrite(LED2, HIGH); //write 1 or HIGH to led pin delay(50); digitalWrite(LED2, HIGH); //write 1 or HIGH to led pindigitalWrite(LED2, HIGH); //write 1 or HIGH to led pin delay(100); digitalWrite(LED2, LOW); //write 1 or HIGH to led pin
//Change the blaster sound fireSound++; Serial.print("Fire Button Pressed - "); Serial.print(fireSound); if (fireSound >= 10){ fireSound = 1; } }
//Check for Voice activation button if(callButton == LOW) { //if is pressed //Play the voice file myDFPlayer.playLargeFolder(01, voiceSound); printDetail(myDFPlayer.readType(), myDFPlayer.read()); Serial.println(F("Voice button Pressed - ")); delay(3000);
voiceSound++; Serial.print(voiceSound); if (voiceSound >= 21){ voiceSound = 1; } }
//Check for scanner buttons if(scanButton == LOW) { //if is pressed Serial.println(F("Scanner Lights Pressed")); if (lightOn==0) { lightOn=1; //Flash the leds Serial.println(F("scanner on")); digitalWrite(LED3, HIGH); //write 1 or HIGH to led pin delay(200); }else {
lightOn=0; Serial.println(F("Scanner off")); digitalWrite(LED3, LOW); //write 0 or LOW to led pin delay(200); } } //Check for scanner buttons if(snoutButton == LOW) { //if is pressed Serial.println(F("Snout Scanner pressed")); if (snoutlightOn==0) { snoutlightOn=1; //Flash the leds Serial.println(F("Chin Scanner on")); digitalWrite(LED4, HIGH); //write 1 or HIGH to led pin digitalWrite(LED3, HIGH); //write 1 or HIGH to led pin delay(500); }else {
snoutlightOn=0; Serial.println(F("Chin Scanner off")); digitalWrite(LED4, LOW); //write 0 or LOW to led pin digitalWrite(LED3, LOW); //write 0 or LOW to led pin delay(500); } } } //END Loop
void printDetail(uint8_t type, int value){ switch (type) { case TimeOut: Serial.println(F("Time Out!")); break; case WrongStack: Serial.println(F("Stack Wrong!")); break; case DFPlayerCardInserted: Serial.println(F("Card Inserted!")); break; case DFPlayerCardRemoved: Serial.println(F("Card Removed!")); break; case DFPlayerCardOnline: Serial.println(F("Card Online!")); break; case DFPlayerPlayFinished: Serial.print(F("Number:")); Serial.print(value); Serial.println(F(" Play Finished!")); break; case DFPlayerError: Serial.print(F("DFPlayerError:")); switch (value) { case Busy: Serial.println(F("Card not found")); break; case Sleeping: Serial.println(F("Sleeping")); break; case SerialWrongStack: Serial.println(F("Get Wrong Stack")); break; case CheckSumNotMatch: Serial.println(F("Check Sum Not Match")); break; case FileIndexOut: Serial.println(F("File Index Out of Bound")); break; case FileMismatch: Serial.println(F("Cannot Find File")); break; case Advertise: Serial.println(F("In Advertise")); break; default: break; } break; default: break; }}
+++++++++++++++++++++++++++++++++++