An mbed health monitor
Dependencies: 4DGL-uLCD-SE GP-20U7 PinDetect RPCInterface mbed
main.cpp
- Committer:
- dnergui3
- Date:
- 2016-12-11
- Revision:
- 0:0de3867984e5
- Child:
- 1:ad5378dcef79
File content as of revision 0:0de3867984e5:
#include "mbed.h" #include "LSM9DS1.h" #include "GPS.h" #include "GPSstuff.h" #include <time.h> #include <stdio.h> Serial pc(USBTX, USBRX); GPS gps(p13, p14); GPSstuff object; LSM9DS1 IMU(p9, p10, 0xD6, 0x3C); float a, ax, ay, az; //acceleration int steps=0, i=0, step_num; bool flag=0; double buffer[4], speed, dist_travel=0, distance, totalDistance=0, threshold=1.1, time_elapsed=0; int getsteps(){ while(!IMU.accelAvailable()); IMU.readAccel(); ax=IMU.calcAccel(IMU.ax); ay=IMU.calcAccel(IMU.ay); az=IMU.calcAccel(IMU.az); a=sqrt(pow(ax, 2) + pow(ay, 2) + pow(az, 2)); pc.printf("a: %d", a); if (a>=threshold && flag==0){ // if it crosses threshold increment step by one and raise the flag steps++; flag=1; pc.printf("steps: %i", steps); } else if (a < threshold && flag==1){ // if flag is raised and threshold is not crossed , put that flag down. flag=0; } return steps; } double getdistance(){ if (i==0){ //initial reading made by the GPS gps.sample(); buffer[i]= gps.longitude; buffer[i+1] = gps.latitude; i=i+2; // pc.printf("First reading taken \n"); if (buffer[2]==0 && buffer[3]==0){ //second reading made by GPS gps.sample(); buffer[2]= gps.longitude; buffer[3] = gps.latitude; i=2; } } else if (i==2){ float lat1d = buffer[0]; float lon1d = buffer[1]; float lat2d = buffer[2]; float lon2d = buffer[3]; distance = object.distanceEarth(lat1d, lon1d, lat2d, lon2d); // pc.putc(totalDistance); // pc.putc(time_passed); //pc.printf("Distance travelled: %f km", totalDistance); //pc.printf("\n Distance travelled: %f miles", totalDistance * 0.621371); lat1d = buffer[2]; lon1d = buffer[3]; i=0; } return distance; } int main() { IMU.begin(); if (!IMU.begin()) { pc.printf("Failed to communicate with LSM9DS1.\n"); } IMU.calibrate(1); clock_t start = clock(); dist_travel=getdistance(); totalDistance+=dist_travel; while(1) { step_num=getsteps(); dist_travel=getdistance(); clock_t end = clock(); time_elapsed=end-start; totalDistance+=dist_travel; pc.printf("Distance travelled: %f km\n\rTime elapsed: %f s", totalDistance, time_elapsed/1000); clock_t start = clock(); } }