Go Down

Topic: Sound sensor to servo (Read 3308 times) previous topic - next topic


Hi all

This is my first post on here and first arduino encounter. I am as beginner as it gets!!!

With my project I am trying to achieve: read noise levels and convert them to servo motion.

At the moment I am at the first stage of building a sensor, i have an electret mic, with which i have built amplified circuit.
This is how it looks:

In arduino i get readings quite constant within 410-450
So i guess my amplifier isnt working so well

Any help would be appreciated


Which OpAmp are you using?  I have a 6 month old that I needed a trigger for a Fisher Price with IR remote when she started up.  I have bread-boarded out an LM358N that works well.  I am guessing you have a LM386N...


I was going to have lm358, but when i went to maplin electronics shop, they havent had that in stock since 2011, so i got a ts358cd and tl072cn instead!


Try this sketch, it is sloppy but it might have some pieces that you can use.

Code: [Select]
// This sketch will send out a trigger signal for FP Baby Entertainment.
// this code is public domain, please enjoy!

int IRledPin =  11;    // LED connected to digital pin 11
const int ledPin =  13;      // the number of the LED pin
const int thresholdvalue=100;//The threshold to turn the led on
const int analogPin = 0;
// The setup() method runs once, when the sketch starts

void setup()   {               
  // initialize the IR digital pin as an output:
  pinMode(IRledPin, OUTPUT);     

void loop()                     
    int mn = 1024; // mn only decreases
    int mx = 0;    // mx only increases

    // Perform 10000 reads. Update mn and mx for each one.
    for (int i = 0; i < 10000; ++i) {
        int val = analogRead(analogPin);
        mn = min(mn, val);
        mx = max(mx, val);
  int sensorValue = (mx-mn);
  digitalWrite(ledPin,HIGH);//if the value read from A0 is larger than 400,then light the LED

// This procedure sends a 38KHz pulse to the IRledPin
// for a certain # of microseconds. We'll use this whenever we need to send codes
void pulseIR(long microsecs) {
  // we'll count down from the number of microseconds we are told to wait

  cli();  // this turns off any background interrupts

  while (microsecs > 0) {
    // 38 kHz is about 13 microseconds high and 13 microseconds low
   digitalWrite(IRledPin, HIGH);  // this takes about 3 microseconds to happen
   delayMicroseconds(10);         // hang out for 10 microseconds
   digitalWrite(IRledPin, LOW);   // this also takes about 3 microseconds
   delayMicroseconds(10);         // hang out for 10 microseconds

   // so 26 microseconds altogether
   microsecs -= 26;

  sei();  // this turns them back on

void SendCode() {


// delay(1200000); // wait 20 minutes before commanding it again

Output is max-min and milliseconds


Thank you for sharing! I am going to have a go with this later today, will report back!


Always divide any such project... and questions arising (<^_^>) into it's parts...

In this case...

a) How to get a number inside the Arduino from a sound level
b) How to make a server go to a position, based on a number you have.

Go Up