Comanda acustica (bataie din palme) cu Arduino

Am avut nevoie de un amplificator de microfon pentru un alt proiect si mi s-a parut interesant sa fac un mic proiectel si cu Arduino :) 
Asa am ajuns sa fac o comanda acustica (batut din palme sau fluierat sau, daca modifici codul .. poti face sa raspunda la 2 batai consecutive sau orice alt "cod").

Pasul 1: Schema electronica

Comanda acustica (bataie din palme) cu Arduino - Schema electronica

Schema este de fapt un amplificator pentru microfon realizat cu circuitul integrat LM 386 si cateva componente externe.

Schema a fost luata de aici: http://wiring.org.co/learning/basics/microphone.html 

Pasul 2: Conectarea cu Arduino

Conectarea se realizeaza prin 3 fire (+5V, masa (GND) si un pin analog).

Pasul 3: Codul

// Setari
// Pragul de sunet
int mic_threshold = 500;
// Pin-ul (analog) pentru intrarea amplificatorului nostru
int pin_mic = 0;
// Pin-ul (digital) pentru LED
int pin_led = 13;
// Cate cicluri de "liniste" sunt necesare pentru a schimba starea sistemului?
int ticks_needed = 100;

// Alte variabile
int mic_value;
int is_on = false;
int ticks = ticks_needed;

void setup()
{
  Serial.begin(9600);
  // Seteaza LED-ul pe oprit
  pinMode(pin_led, OUTPUT);
  digitalWrite(pin_led, LOW);
}


void loop()
{
  // Valoarea audio
  mic_value = analogRead(pin_mic);
  Serial.println(mic_value, DEC);
  
  // Este valoarea citita suficienta? + au trecut X perioade de liniste?
  if (mic_value >= mic_threshold && ticks > ticks_needed)
  {
    // Este stins LED-ul?
    if (is_on == 0)
    {
      // Aprinde LED
      is_on = 1;
      digitalWrite(pin_led, HIGH);    
    }
    else
    {
      // Stinge LED
      is_on = 0;
      digitalWrite(pin_led, LOW);
    }
    ticks = 1;
  }
  else
  {
    if (ticks > ticks_needed)
    {
      ticks = ticks_needed + 1;
    }
    else
    {
      ticks++;
    }
  }
  delay(10);
}

Pasul 4: Testare :)


Cuvinte cheie: Arduino sunet LED microfon


Despre autor

sorin
Telefon: 0724540234
Trimite-i un email