ShreyanR
Published

Sparkfun Sound Detector VS. HC-SR04 Ultrasonic

Which sensor module is more suited for Arduino projects?

IntermediateProtip1,581
Sparkfun Sound Detector VS. HC-SR04 Ultrasonic

Things used in this project

Hardware components

ELEGOO HC-SR04 Ultrasonic Distance Sensor Kits
ELEGOO HC-SR04 Ultrasonic Distance Sensor Kits
HC-SR04 Ultrasonic
×1
SparkFun Sound Detector (with Headers)
SparkFun Sound Detector (with Headers)
Sparkfun Sound Detector
×1

Software apps and online services

Arduino IDE
Arduino IDE
The basic IDE for Arduino
Arduino Web Editor
Arduino Web Editor
A web-based alternative to Arduino IDE.

Story

Read more

Schematics

Ultrasonic Sensor Schematic

VCC --> 5V
Trig --> 11
Echo --> 12
GND --> GND

Drawing Sound Detector Schematic

Simple Sound Detector Schematic

Code

Ultrasonic Sensor Code

C/C++
int trigPin = 11;
int echoPin = 12;

long duration;
int distance;

void setup() {

pinMode(trigPin, OUTPUT); 
pinMode(echoPin, INPUT);
Serial.begin(9600); 

}
void loop() {

digitalWrite(trigPin, LOW);
delayMicroseconds(2);

digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

duration = pulseIn(echoPin, HIGH);
distance= duration*0.034/2;

Serial.print("Distance: ");
Serial.println(distance);
} 

Sparkfun Sound Detector

C/C++
/******************************************************************************
* sound_detector_demo.ino
* Sound detector sample sketch
* Byron Jacquot @ SparkFun Electronics
* February 19, 2014
* https://github.com/sparkfun/Sound_Detector
* 
* This sketch demonstrates the use of the Sparkfun Sound Detector board.
*
* The Sound Detector is a small board that combines a microphone and some 
* processing circuitry.  It provides not only an audio output, but also a 
* binary indication of the presence of sound and an analog representation 
* of it's amplitude.  
*
* This sketch demonstrates two different modes of usage for the Sound
* Detector.  The gate output (a binary indication that is high when sound
* is present, and low when conditions are quiet) is used to fire a pin-change 
* ISR, which lights an LED when the sound is present.  The envelope output 
* (an analog voltage to rises to indicate the amplitude of the sound) is 
* sampled in the loop(), and it prints an indication of the level to the 
* serial terminal. 
*
* For more details about the Sound Detector, please check the hookup guide.
*
* Connections:
* The Sound Detector is connected to the Adrduino as follows:
* (Sound Detector -> Arduino pin)
* GND → GND
* VCC → 5V
* Gate → Pin 2
* Envelope → A0
* 
* Resources:
* Additional library requirements: none
* 
* Development environment specifics:
* Using Arduino IDe 1.0.5
* Tested on Redboard, 3.3v/8MHz and 5v/16MHz ProMini hardware.
* 
* This code is beerware; if you see me (or any other SparkFun employee) at the
* local, and you've found our code helpful, please buy us a round!
* 
* Distributed as-is; no warranty is given.
******************************************************************************/
// Define hardware connections
#define PIN_GATE_IN 2
#define IRQ_GATE_IN  0
#define PIN_LED_OUT 13
#define PIN_ANALOG_IN A0
// soundISR()
// This function is installed as an interrupt service routine for the pin
// change interrupt.  When digital input 2 changes state, this routine
// is called.
// It queries the state of that pin, and sets the onboard LED to reflect that 
// pin's state.
void soundISR()
{
 int pin_val;
 pin_val = digitalRead(PIN_GATE_IN);
 digitalWrite(PIN_LED_OUT, pin_val);   
}
void setup()
{
 Serial.begin(9600);
 //  Configure LED pin as output
 pinMode(PIN_LED_OUT, OUTPUT);
 // configure input to interrupt
 pinMode(PIN_GATE_IN, INPUT);
 attachInterrupt(IRQ_GATE_IN, soundISR, CHANGE);
 // Display status
 Serial.println("Initialized");
}
void loop()
{
 int value;
 // Check the envelope input
 value = analogRead(PIN_ANALOG_IN);
 // Convert envelope value into a message
 Serial.print("Status: ");
 if(value <= 10)
 {
   Serial.println("Quiet.");
 }
 else if( (value > 10) && ( value <= 30) )
 {
   Serial.println("Moderate.");
 }
 else if(value > 30)
 {
   Serial.println("Loud.");
 }
 // pause for 1 second
 delay(1000);
}

Credits

ShreyanR
0 projects • 6 followers
Contact

Comments

Please log in or sign up to comment.