Skip to content
42 changes: 42 additions & 0 deletions examples/AccelerometerTap/AccelerometerTap.ino
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
/*
Arduino LSM6DS3 - Accelerometer Tap

this code is to detect tap
using IMU.accelerationAvailable()

*/

#include <Arduino_LSM6DS3.h>

void setup() {
Serial.begin(9600);

while (!Serial);

while (!IMU.begin()) {
Serial.println("Failed to initialize IMU!");
delay(3000); // wait for 3 sec and check if it can be initialized again
}
}
float tapThreshold = 0.05; //0.05 g acceleration in some direction is considered as tap. it can be changed for the required sensitivity.

int down = 3; // signifying the direction of which is facing downward 1 for x axis; 2 for y axis; 3 for z axis;

void loop() {
float x, y, z;
if (IMU.accelerationAvailable()) {
IMU.readAcceleration(x, y, z);

if ((x > tapThreshold || x < -tapThreshold) && down != 1) {
Serial.println("Tap detected across X-axis");
}

if ((y > tapThreshold || y < -tapThreshold) && down != 2) {
Serial.println("Tap detected across Y-axis");
}

if ((z > tapThreshold || z < -tapThreshold) && down != 3) {
Serial.println("Tap detected across Z-axis");
}
}
}