project

Dependencies:   mbed LSM6DS3

Committer:
bjanquart
Date:
Tue Nov 26 02:25:19 2019 +0000
Revision:
0:7f9aa4ca18c2
Project;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bjanquart 0:7f9aa4ca18c2 1 // LSM6DS3 Demo
bjanquart 0:7f9aa4ca18c2 2
bjanquart 0:7f9aa4ca18c2 3 #include "mbed.h"
bjanquart 0:7f9aa4ca18c2 4 #include "LSM6DS3.h"
bjanquart 0:7f9aa4ca18c2 5
bjanquart 0:7f9aa4ca18c2 6 LSM6DS3 accel(D4, D5);
bjanquart 0:7f9aa4ca18c2 7
bjanquart 0:7f9aa4ca18c2 8 DigitalOut led(D13);
bjanquart 0:7f9aa4ca18c2 9 Serial pc(USBTX, USBRX);
bjanquart 0:7f9aa4ca18c2 10
bjanquart 0:7f9aa4ca18c2 11 float xvalues[25], yvalues[25], zvalues[25], x_sum, y_sum, z_sum, x_avg, y_avg, z_avg;
bjanquart 0:7f9aa4ca18c2 12 bool fall_waiting = true;
bjanquart 0:7f9aa4ca18c2 13
bjanquart 0:7f9aa4ca18c2 14 int main()
bjanquart 0:7f9aa4ca18c2 15 {
bjanquart 0:7f9aa4ca18c2 16 accel.begin(accel.G_SCALE_2000DPS, accel.A_SCALE_8G,
bjanquart 0:7f9aa4ca18c2 17 accel.G_ODR_1660, accel.A_ODR_6660);
bjanquart 0:7f9aa4ca18c2 18 led = 1;
bjanquart 0:7f9aa4ca18c2 19
bjanquart 0:7f9aa4ca18c2 20 // fill array initial
bjanquart 0:7f9aa4ca18c2 21 for (int i = 0; i < 25; ++i){
bjanquart 0:7f9aa4ca18c2 22 accel.readAccel();
bjanquart 0:7f9aa4ca18c2 23 xvalues[i] = accel.ax;
bjanquart 0:7f9aa4ca18c2 24 yvalues[i] = accel.ay;
bjanquart 0:7f9aa4ca18c2 25 zvalues[i] = accel.az;
bjanquart 0:7f9aa4ca18c2 26 }
bjanquart 0:7f9aa4ca18c2 27
bjanquart 0:7f9aa4ca18c2 28
bjanquart 0:7f9aa4ca18c2 29 while (fall_waiting)
bjanquart 0:7f9aa4ca18c2 30 {
bjanquart 0:7f9aa4ca18c2 31 accel.readAccel();
bjanquart 0:7f9aa4ca18c2 32 xvalues[24] = accel.ax;
bjanquart 0:7f9aa4ca18c2 33 yvalues[24] = accel.ay;
bjanquart 0:7f9aa4ca18c2 34 zvalues[24] = accel.az;
bjanquart 0:7f9aa4ca18c2 35 // for loop that copies down the array
bjanquart 0:7f9aa4ca18c2 36 for (int i = 1; i < 25; ++i){
bjanquart 0:7f9aa4ca18c2 37
bjanquart 0:7f9aa4ca18c2 38 xvalues[i - 1] = xvalues[i];
bjanquart 0:7f9aa4ca18c2 39 yvalues[i - 1] = yvalues[i];
bjanquart 0:7f9aa4ca18c2 40 zvalues[i - 1] = zvalues[i];
bjanquart 0:7f9aa4ca18c2 41 }
bjanquart 0:7f9aa4ca18c2 42 // clear the sum values
bjanquart 0:7f9aa4ca18c2 43 x_sum = 0;
bjanquart 0:7f9aa4ca18c2 44 y_sum = 0;
bjanquart 0:7f9aa4ca18c2 45 z_sum = 0;
bjanquart 0:7f9aa4ca18c2 46 // average
bjanquart 0:7f9aa4ca18c2 47 for(int in = 0; in < 25; ++in){
bjanquart 0:7f9aa4ca18c2 48 x_sum += xvalues[in];
bjanquart 0:7f9aa4ca18c2 49 y_sum += yvalues[in];
bjanquart 0:7f9aa4ca18c2 50 z_sum += zvalues[in];
bjanquart 0:7f9aa4ca18c2 51 }
bjanquart 0:7f9aa4ca18c2 52 x_avg = x_sum / 25;
bjanquart 0:7f9aa4ca18c2 53 y_avg = y_sum / 25;
bjanquart 0:7f9aa4ca18c2 54 z_avg = z_sum / 25;
bjanquart 0:7f9aa4ca18c2 55
bjanquart 0:7f9aa4ca18c2 56 if(xvalues[24] > x_avg + 1 || yvalues[24] > y_avg + 1 || zvalues[24] > z_avg + 1){
bjanquart 0:7f9aa4ca18c2 57 led = 0;
bjanquart 0:7f9aa4ca18c2 58 fall_waiting = false;
bjanquart 0:7f9aa4ca18c2 59 }
bjanquart 0:7f9aa4ca18c2 60 }
bjanquart 0:7f9aa4ca18c2 61 }
bjanquart 0:7f9aa4ca18c2 62