'07.12.22
Analog sound and ultrasonic distance sensor
https://wiki.keyestudio.com/KS0035_Microphone_Sound_Sensor_with_Potentiometer
Analog sound sensor includes a microphone sensor to detect ambient sounds and loudness of them. In some sources usage is recommended with an audio analyzer module(https://www.dfrobot.com/product-514.html) to differentiate different frequencies.
https://www.sparkfun.com/products/15569
Ultrasound distance sensor consists of a trigger and receiver parts, one is releasing ultrasonic waves and the other is receiving the reflected waves to calculate the distance from the duration of the bouncing time. The detection range is 2-40cm.
connecting to Arduino
Analogue sound is connected to the analog pin, while trigger and receiver pins of the ultrasound sensor are connected to two different digital pins.
To see the differences in the values, I put some track on the bluetooth speaker and moved it in front of the distance sensor.
#define echoPin 2 // attach pin D2 Arduino to pin Echo of HC-SR04
#define trigPin 3 //attach pin D3 Arduino to pin Trig of HC-SR04
int buzzer = 7;
// defines variables
long duration; // variable for the duration of sound wave travel
int distance; // variable for the distance measurement
void setup() {
// put your setup code here, to run once:
pinMode(trigPin, OUTPUT); // Sets the trigPin as an OUTPUT
pinMode(echoPin, INPUT); // Sets the echoPin as an INPUT
Serial.begin(9600);
}
void loop() {
int val;
val=analogRead(2);
Serial.print("Loudness:");
Serial.println(val,DEC);
delay(100);
// Clears the trigPin condition
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Sets the trigPin HIGH (ACTIVE) for 10 microseconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculating the distance
distance = duration * 0.034 / 2; // Speed of sound wave divided by 2 (go and back)
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
creating the loop
I have added a piezzo buzzer (+ 1K resistor) to the circuit to make the process of loudness detection more cyclical. I have followed this tutorial connecting it > https://surtrtech.com/2018/01/29/how-to-use-a-buzzer-piezo-speaker-with-arduino/
added the code a condition about the distance. When the distance is smaller than 10cm, buzzer starts to buzz with the mapped values also from the sound and distance sensor.
if(distance<10) {
long buzz = map(val, 0, 40, 1000, 5000);
long del = map(distance, 2, 40, 100, 800);
tone(buzzer, buzz);
// tone() is the main function to use with a buzzer, it takes 2 or 3 parameters (buzzer pin, sound frequency, duration)
delay(del);
}
else {
tone(buzzer, 0);
}