Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix #3 #11

Open
wants to merge 11 commits into
base: master
Choose a base branch
from
49 changes: 49 additions & 0 deletions examples/AccelerometerTap/AccelerometerTap.ino
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
/*
Arduino LSM6DS3 - Accelerometer Tap

aentinger marked this conversation as resolved.
Show resolved Hide resolved
this code is to detect tap
using IMU.accelerationAvailable()
*/

#include <Arduino_LSM6DS3.h>

float tapThreshold ;
float xi, yi , zi ;

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
}

if (IMU.accelerationAvailable()) {
IMU.readAcceleration(xi, yi, zi); //To set initial values of acceleration, including gravity and some zero error.
}

tapThreshold = 0.05; //0.05 g acceleration in some direction is considered as tap. it can be changed for the required sensitivity.
}

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

// works on the difference from initial acceleration to the current acceleration
if (x -xi > tapThreshold || x-xi < -tapThreshold){
Serial.println("Tap detected across X-axis");
}

per1234 marked this conversation as resolved.
Show resolved Hide resolved
if (y-yi > tapThreshold || y-yi < -tapThreshold){
Serial.println("Tap detected across Y-axis");
}

if (z-zi > tapThreshold || z-zi < -tapThreshold) {
Serial.println("Tap detected across Z-axis");
}
}
}