reeeeeeeeeeeeeee
Dependencies: MotionSensor mbed
Fork of Assignment2_ver5 by
motion.cpp
- Committer:
- weebgrammers
- Date:
- 2016-11-29
- Revision:
- 9:751e39d24c39
File content as of revision 9:751e39d24c39:
//#include "rtos.h" #include "Hardware.h" #include "FXOS8700Q.h" #include "PaceHeart.h" FXOS8700Q_acc acc(PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1); //PaceHeart* Pacing = new PaceHeart; /* Constants and Declares */ int numCount; int const MAX_NUM_COUNTS = 3; int const TIMING_PERIOD = 20; // Sensor polling interval uint8_t motion_exceeded_threshold = 0; void initialize_motion () { acc.enable(); } bool isMotionThresholdExceeded () { return motion_exceeded_threshold; } void resetMotionDetection () { motion_exceeded_threshold = 0; } /**** Function: a_count * return: void * parameters: none * A function called if motion detection interrupt flag is set. Maintains * a global counter and sets a timer to keep track of number of flags within * timing limit. */ void a_count(void) { /* step 1 increment the counter */ numCount++; if (numCount >= MAX_NUM_COUNTS) { //rled = !rled; // toggle LEDs to show acceleration threshold reached //gled = !gled; // toggle LEDS to show acceleration threshold reached motion_exceeded_threshold = 1; } } void motion_thread (PaceHeart &Pacing) { while(true) { float xAcc, yAcc, zAcc; acc.getX(&xAcc); acc.getY(&yAcc); acc.getZ(&zAcc); float magtd = xAcc*xAcc + yAcc*yAcc + zAcc*zAcc; if (magtd > 1.0f) { // Greater than (1.5G of Accel.)^2 a_count(); // increment acceleration event counter Pacing.set_dir(1); Pacing.set_p_vPaceWidth(Pacing.get_p_vPaceWidth()+0.1); Pacing.set_p_vPaceAmp(Pacing.get_p_vPaceAmp()+500); } wait(TIMING_PERIOD); } }