Slouch Detector v1

The idea of the slouch detector is simple. If the current angle sensed by the Circuit Playground (currentAngle) exceeds a preset value (SLOUCH_ANGLE), then we are slouching and should sound an alarm. We can achieve this with a simple modification of our previous sketch. Here's the code.

Download: file
///////////////////////////////////////////////////////////////////////////////
// Circuit Playground Slouch Detector v1
//
// Compute current angle using accelerometer and compare
// to preset slouch angle. Sound alarm if slouching.
//
// Author: Carter Nelson
// MIT License (https://opensource.org/licenses/MIT)

#include <Adafruit_CircuitPlayground.h>

#define SLOUCH_ANGLE        10.0      // allowable slouch angle (deg)
#define GRAVITY             9.80665   // standard gravity (m/s^s)
#define RAD2DEG             52.29578  // convert radians to degrees

float currentAngle;

///////////////////////////////////////////////////////////////////////////////
void setup() {
  // Initialize Circuit Playground
  CircuitPlayground.begin();
}

///////////////////////////////////////////////////////////////////////////////
void loop() {
  // Compute current angle
  currentAngle = RAD2DEG * asin(-CircuitPlayground.motionZ() / GRAVITY);

  // Check if slouching
  if (currentAngle > SLOUCH_ANGLE) {
    // Sound alarm
    CircuitPlayground.playTone(800, 500);    
  }
}

The preset angle is defined globally at the top of the sketch.

Download: file
#define SLOUCH_ANGLE        10.0      // allowable slouch angle (deg)

And then a simple if statement is used to check for slouching.

Download: file
  // Check if slouching
  if (currentAngle > SLOUCH_ANGLE) {
    // Sound alarm
    CircuitPlayground.playTone(800, 500);    
  }

With the above sketch loaded and running on the Circuit Playground, you should hear the alarm sound if the tilt (slouch) angle is greater than 10 degrees.

This guide was first published on Dec 21, 2016. It was last updated on Dec 21, 2016. This page (Slouch Detector v1) was last updated on Jul 31, 2019.