Hi!
I have been trying to get my sound sensor to work properly but i can't seem to figure it out.
Currently i am working on a project where an audio file plays when a button is pressed. IN that button is a LED so it gives visible feedback. That first part is working.
Now i am trying to change the volume of the audio automatically using a sound sensor.
Honestly i have no idea how to do this and at this moment i am not even able to figure out how to make the sensor read the data. It reads 242 non stop. The power light is on the sensor light is not on.
The sensor is attached to this post.
Does someone maybe know how to do this?
this is the code for the music player:
/***************************************************
This is an example for the Adafruit VS1053 Codec Breakout
Designed specifically to work with the Adafruit VS1053 Codec Breakout
----> https://www.adafruit.com/products/1381
Adafruit invests time and resources providing this open source code, 1
please support Adafruit and open-source hardware by purchasing
products from Adafruit!
Written by Limor Fried/Ladyada for Adafruit Industries.
BSD license, all text above must be included in any redistribution
****************************************************/
// include SPI, MP3 and SD libraries
#include <SPI.h>
#include <Adafruit_VS1053.h>
#include <SD.h>
// These are the pins used for the music maker shield
#define SHIELD_RESET -1 // VS1053 reset pin (unused!)
#define SHIELD_CS 7 // VS1053 chip select pin (output)
#define SHIELD_DCS 6 // VS1053 Data/command select pin (output)
// These are common pins between breakout and shield
#define CARDCS 4 // Card chip select pin
// DREQ should be an Int pin, see http://arduino.cc/en/Reference/attachInterrupt
#define DREQ 3 // VS1053 Data request, ideally an Interrupt pin
Adafruit_VS1053_FilePlayer musicPlayer =
// create shield-example object!
Adafruit_VS1053_FilePlayer(SHIELD_RESET, SHIELD_CS, SHIELD_DCS, DREQ, CARDCS);
int buttonRedInput = 2;
int buttonRedLed = 10;
bool redPressed = false;
int buttonGreenInput =8;
int buttonGreenLed = 11;
bool greenPressed = false;
int buttonBlueInput =5;
int buttonBlueLed = 9;
bool bluePressed = false;
void setup() {
Serial.begin(9600);
Serial.println("Adafruit VS1053 Simple Test");
pinMode(buttonRedInput, INPUT);
pinMode(buttonRedLed, OUTPUT);
pinMode(buttonGreenInput, INPUT);
pinMode(buttonGreenLed, OUTPUT);
pinMode(buttonBlueInput, INPUT);
pinMode(buttonBlueLed, OUTPUT);
if (! musicPlayer.begin()) { // initialise the music player
Serial.println(F("Couldn't find VS1053, do you have the right pins defined?"));
while (1);
}
Serial.println(F("VS1053 found"));
if (!SD.begin(CARDCS)) {
Serial.println(F("SD failed, or not present"));
while (1); // don't do anything more
}
// list files
// printDirectory(SD.open("/"), 0);
// Set volume for left, right channels. lower numbers == louder volume!
musicPlayer.setVolume(20,20);
// If DREQ is on an interrupt pin (on uno, #2 or #3) we can do background
// audio playing
musicPlayer.useInterrupt(VS1053_FILEPLAYER_PIN_INT); // DREQ int
// Play one file, don't return until complete
//Serial.println(F("Playing track 001"));
//musicPlayer.playFullFile("/track001.mp3");
// Play another file in the background, REQUIRES interrupts!
// Serial.println(F("Playing track 002"));
// musicPlayer.startPlayingFile("/track002.mp3");
}
void loop() {
// lees de huidige stand van de knop uit
bool curRedPressed = digitalRead(buttonRedInput);
// vergelijk deze met de vorige waarde
// is er een verschil, doe dan dit:
if(curRedPressed != redPressed)
{
if(curRedPressed) // knop ingedrukt
{
Serial.println("Start playing");
musicPlayer.startPlayingFile("/track002.mp3");
Serial.println("Red LED turned on");
digitalWrite(buttonRedLed, HIGH);
}
else // knop uitgedrukt
{
Serial.println("Stop playing");
musicPlayer.stopPlaying();
Serial.println("Red LED turned off");
digitalWrite(buttonRedLed, LOW);
}
}
// sla de huidige waarde op om met de volgende meting te vergelijken.
redPressed = curRedPressed;
// lees de huidige stand van de knop uit
bool curGreenPressed = digitalRead(buttonGreenInput);
// vergelijk deze met de vorige waarde
// is er een verschil, doe dan dit:
if(curGreenPressed != greenPressed)
{
if(curGreenPressed) // knop ingedrukt
{
Serial.println("Start playing");
musicPlayer.startPlayingFile("/track002.mp3");
Serial.println("Green LED turned on");
digitalWrite(11, HIGH);
}
else // knop uitgedrukt
{
Serial.println("Stop playing");
musicPlayer.stopPlaying();
Serial.println("Green LED turned off");
digitalWrite(11, LOW);
}
}
// sla de huidige waarde op om met de volgende meting te vergelijken.
greenPressed = curGreenPressed;
// lees de huidige stand van de knop uit
bool curBluePressed = digitalRead(buttonBlueInput);
// vergelijk deze met de vorige waarde
// is er een verschil, doe dan dit:
if(curBluePressed != bluePressed)
{
if(curBluePressed) // knop ingedrukt
{
Serial.println("Start playing");
musicPlayer.startPlayingFile("/track002.mp3");
Serial.println("Blue LED turned on");
digitalWrite(buttonBlueLed, HIGH);
}
else // knop uitgedrukt
{
Serial.println("Stop playing");
musicPlayer.stopPlaying();
Serial.println("Blue LED turned off");
digitalWrite(buttonBlueLed, LOW);
}
}
// sla de huidige waarde op om met de volgende meting te vergelijken.
bluePressed = curBluePressed;
// delay(100);
}
/// File listing helper
void printDirectory(File dir, int numTabs) {
while(true) {
File entry = dir.openNextFile();
if (! entry) {
// no more files
//Serial.println("**nomorefiles**");
break;
}
for (uint8_t i=0; i<numTabs; i++) {
Serial.print('\t');
}
Serial.print(entry.name());
if (entry.isDirectory()) {
Serial.println("/");
printDirectory(entry, numTabs+1);
} else {
// files have sizes, directories do not
Serial.print("\t\t");
Serial.println(entry.size(), DEC);
}
entry.close();
}
}
this is the code for the sensor i got so far:
int num_Measure = 128 ; // Set the number of measurements
int pinSignal = A0; // pin connected to pin O module sound sensor
long Sound_signal; // Store the value read Sound Sensor
long sum = 0 ; // Store the total value of n measurements
long level = 0 ; // Store the average value
int soundlow = 40;
int soundmedium = 200;
void setup ()
{
pinMode (A0, INPUT); // Set the signal pin as input
Serial.begin (9600);
}
void loop ()
{
// Performs 128 signal readings
for ( int i = 0 ; i <num_Measure; i ++)
{
Sound_signal = analogRead (pinSignal);
sum =sum + Sound_signal;
}
level = sum / num_Measure; // Calculate the average value
Serial.print("Sound Level: ");
Serial.println (level-33);
if(level-33<soundlow)
{
Serial.print("Intensity= Low");
}
if(level-33>soundlow && level-33<soundmedium)
{
Serial.print("Intensity=Medium");
}
if(level-33>soundmedium)
{
Serial.print("Intensity= High");
}
sum = 0 ; // Reset the sum of the measurement values
delay(1000);
}

