Распознавание стука

Алгоритмы
Распознавание стука

В этом обучающем примере Вы узнаете, как использовать динамик Piezo для распознавания звука, в данном случае, стук в дверь или по столу.
Piezo — электронное устройство, генерирующее напряжение, когда оно физически деформируется. Аналогично, когда Вы проводите напряжение через piezo, оно вибрирует. Оно может использоваться и для того, чтобы проигрывать звуки, и для того, чтобы распознавать звуки. В этом примере Вы подключаете piezo к аналоговому входу pin 0. Скетч считывает изменяющееся напряжение, используя команду analogRead(), переводя значения напряжения от 0 до 5 B в числовой диапазон от 0 до 1023. Это называется аналого-цифровым преобразованием, или АЦП. Функция analogWrite() выполняет АЦП.
Piezos имеют полярность. Это означает, что напряжение проходит через них (или выходит из них) в определенном направлении. Чёрный провод (с более низким напряжением) заземлите, а красный провод (с более высоким напряжением) соедините со входом. Вы также должны подключить резистор с 1 М Ом параллельно с элементом Piezo, чтобы ограничить напряжение и ток, произведимые piezo и для защиты аналогового входа.
Можно приобрести элементы piezo без пластикового пластика. Они будут выглядеть как металлические диски, и легче используются как входные датчики.
Нижеприведённый код читает выход piezo. Если он больше, чем определенный порог, то пошлет стринг «Стук!» на компьютер по последовательному порту. Откройте последовательный монитор, чтобы увидеть этот текст.



Схема:



Код:
/* Knock Sensor
   
    This sketch reads a piezo element to detect a knocking sound. 
    It reads an analog pin and compares the result to a set threshold. 
    If the result is greater than the threshold, it writes
    "knock" to the serial port, and toggles the LED on pin 13.
   
    The circuit:
 	* + connection of the piezo attached to analog in 0
 	* - connection of the piezo attached to ground
 	* 1-megohm resistor attached from analog in 0 to ground

    http://www.arduino.cc/en/Tutorial/Knock
    
    created 25 Mar 2007
    by David Cuartielles <http://www.0j0.org>
    modified 30 Jun 2009
    by Tom Igoe

  */

 // these constants won't change:
 const int ledPin = 13;      // led connected to digital pin 13
 const int knockSensor = 0;  // the piezo is connected to analog pin 0
 const int threshold = 100;  // threshold value to decide when the detected sound is a knock or not

 // these variables will change:
 int sensorReading = 0;      // variable to store the value read from the sensor pin
 int ledState = LOW;         // variable used to store the last LED status, to toggle the light

 void setup() {
  pinMode(ledPin, OUTPUT); // declare the ledPin as as OUTPUT
  Serial.begin(9600);       // use the serial port
 }

 void loop() {
   // read the sensor and store it in the variable sensorReading:
   sensorReading = analogRead(knockSensor);    

   // if the sensor reading is greater than the threshold:
   if (sensorReading >= threshold) {
     // toggle the status of the ledPin:
     ledState = !ledState;   
     // update the LED pin itself:        
     digitalWrite(ledPin, ledState);
     // send the string "Knock!" back to the computer, followed by newline
     Serial.println("Knock!");         
   }
   delay(100);  // delay to avoid overloading the serial port buffer
 }


Оригинал
technik 17.12.2009 в 21.22 комментарии 0 0

комментарии(0)

Комментировать

Для добавления комментария авторизируйтесь.
Последние комментарии:
© 2012 pobot.ru