You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.7 KiB
Plaintext
54 lines
1.7 KiB
Plaintext
/* 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
|
|
}
|
|
|