| /* 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 Aug 2011 |
| by Tom Igoe |
| |
| This example code is in the public domain. |
| |
| */ |
| |
| |
| // these constants won't change: |
| const int ledPin = 13; // led connected to digital pin 13 |
| const int knockSensor = A0; // 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 |
| } |
| |