How to use a Piezo element to detect vibration using Arduino

This tutorial shows you how to use a Piezo element to detect vibration, in this case, a knock on a door, table, or other solid surface.

Piezo element to detect vibration using Arduino

A piezo is an electronic device that generates a voltage when it’s physically deformed by a vibration, sound wave, or mechanical strain. Similarly, when you put a voltage across a piezo, it vibrates and creates a tone. Piezos can be used both to play tones and to detect tones.

The sketch reads the piezos output using the analogRead() command, encoding the voltage range from 0 to 5 volts to a numerical range from 0 to 1023 in a process referred to as analog-to-digital conversion, or ADC.

If the sensors output is stronger than a certain threshold, your Arduino will send the string “Knock!” to the computer over the serial port.

Open the serial monitor to see this text.


Piezos are polarized, meaning that voltage passes through them (or out of them) in a specific direction. Connect the black wire (the lower voltage) to ground and the red wire (the higher voltage) to analog pin 0. Additionally, connect a 1-megohm resistor in parallel to the Piezo element to limit the voltage and current produced by the piezo and to protect the analog input.

It is possible to acquire piezo elements without a plastic housing. These will look like a metallic disc, and are easier to use as input sensors. PIezo sensors work best when firmly pressed against, taped, or glued their sensing surface.

image developed using Fritzing. For more circuit examples, see the Fritzing project page


Piezo element to detect vibration using Arduino schematic


In the code below, the incoming piezo data is compared to a threshold value set by the user. Try raising or lowering this value to increase your sensor’s overall sensitivity.

/* 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.

Major Components in Project

Hardware Required

  • Arduino Board
  • (1) Piezo electric disc
  • (1) Megohm resistor
  • solid surface

For more detail: How to use a Piezo element to detect vibration using Arduino

This Post / Project can also be found using search terms:

  • vibration sensor using ca3140 of the piezo element
  • connect piezo element to arduino nano
  • how can we connect piezoelectric with arduino to vibrate in water and make mist
  • how do a 3pin piezo element work arduino

Leave a Comment

= 5 + 1

(Spamcheck Enabled)

Read previous post:
Paper Man: a machine created by Arduino and NFC

Paper Man is a machine comprised of Arduino, NFC Shield, thermal printer and a papercraft shell—Iron Man. Thanks to the...

Scroll to top