[quote="ScruffR, post:20, topic:22294"]
Do you mean the Adafruit Audio FX Soundboard?
[/quote] Yep, with the stereo output and 2MB storage space
Here is my current code for some context.
int Soundfx = D0; // Use the onboard Uno LED
int isObstaclePin = A0; // This is our input pin
int isObstacle = HIGH; // HIGH MEANS NO OBSTACLE
void setup() {
pinMode(Soundfx, OUTPUT);
pinMode(isObstaclePin, INPUT);
Serial.begin(9600);
}
void loop() {
isObstacle = digitalRead(isObstaclePin);
if (isObstacle == HIGH)
{
Serial.println("OBSTACLE!!, OBSTACLE!!");
digitalWrite(Soundfx, HIGH);
}
else
{
Serial.println("clear");
digitalWrite(Soundfx, LOW);
}
delay(200);
}
I was referring to this which i believe you sent me earlier in the thread!
if distance > min1 and distance < max1
trigger audio1
else if distance >= max1 and distance < min2
trigger audio2
else if distance >= min2 and distance < min3
trigger audio3
else
turn off all audio
end if
Can you help translate this into real code?
the whole circuit works with the sound pin audio working great to, now i just want to incorporate two more sounds on two more pins and have them all triggered individually by different lengths of measurement like above.
int Soundfx = D0; // Use the onboard Uno LED
int isObstaclePin = A0; // This is our input pin
int isObstacle = HIGH; // HIGH MEANS NO OBSTACLE
void setup() {
pinMode(Soundfx, OUTPUT);
pinMode(isObstaclePin, INPUT);
Serial.begin(9600);
}
void loop() {
isObstacle = digitalRead(isObstaclePin);
if (isObstacle == LOW)
{
Serial.println("OBSTACLE!!, OBSTACLE!!");
digitalWrite(Soundfx, HIGH);
}
else
{
Serial.println("clear");
digitalWrite(Soundfx, LOW);
}
delay(200);
}
I turn on the electronics, and the sound plays only if there isnt interaction.
So how do i make it play only when there is an obstacle detected??
I could, but the sensor you have got there is only a digital output (obstacle or no obstacle) but does not provide the distance - as the first sensor you had in mind did.
And about the sound playing or not, you might have to invert the logic on the Soundfx pin - or do you also get the Serial.print() messages the wrong way round?
The sensor is active LOW, so the messages should be fine, but - as said - I don't know if the sound board expects a LOW or a HIGH to play the tune.
int reading = analogRead(sensor); // get the ADC reading
int voltage = 3300 * reading / 4095; // convert to mV
int distance = map(voltage, 0, 3300, 4, 80); // convert full voltage range to 4cm ~ 80cm (linear despite datasheet shows slight curve)
if (min1 <= distance && distance < max1) // if value is between min and max
playAudio(1);
else if (min2 <= distance && distance < max2)
playAudio(2);
else if (min3 <= distance && distance < max3)
playAudio(2);
else
playAudio(-1); // treat -1 as OFF