lab5

Dependencies:   ADXL362

Committer:
kfricker
Date:
Mon Feb 26 01:39:55 2018 +0000
Revision:
0:cf970e75e1ae
Child:
1:839c14f3143c
lab5;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kfricker 0:cf970e75e1ae 1 #include "mbed.h"
kfricker 0:cf970e75e1ae 2 #include "ADXL362.h"
kfricker 0:cf970e75e1ae 3 DigitalOut led1(LED1);
kfricker 0:cf970e75e1ae 4
kfricker 0:cf970e75e1ae 5 // Interface pulled from ADXL362.cpp
kfricker 0:cf970e75e1ae 6 // ADXL362::ADXL362(PinName CS, PinName MOSI, PinName MISO, PinName SCK) :
kfricker 0:cf970e75e1ae 7 ADXL362 adxl362(PA_0,PA_7,PA_6,PA_1);
kfricker 0:cf970e75e1ae 8
kfricker 0:cf970e75e1ae 9 int adxl362_reg_print(int start, int length){
kfricker 0:cf970e75e1ae 10 for(int x = 0x00; x<=0x2E; x++){
kfricker 0:cf970e75e1ae 11 if(start==x){
kfricker 0:cf970e75e1ae 12 if(length>0){
kfricker 0:cf970e75e1ae 13 if(ADXL362::DEVID_AD==0xAD){
kfricker 0:cf970e75e1ae 14 uint16_t return_val = adxl362.read_reg(ADXL362::DEVID_AD);
kfricker 0:cf970e75e1ae 15 }
kfricker 0:cf970e75e1ae 16 }
kfricker 0:cf970e75e1ae 17 }
kfricker 0:cf970e75e1ae 18 }
kfricker 0:cf970e75e1ae 19
kfricker 0:cf970e75e1ae 20 //printf("%x\n","0x" , return_val);
kfricker 0:cf970e75e1ae 21 return return_val;
kfricker 0:cf970e75e1ae 22 }
kfricker 0:cf970e75e1ae 23
kfricker 0:cf970e75e1ae 24 int main() {
kfricker 0:cf970e75e1ae 25 adxl362.reset();
kfricker 0:cf970e75e1ae 26 wait_ms(600); // we need to wait at least 500ms after ADXL362 reset
kfricker 0:cf970e75e1ae 27 adxl362.set_mode(ADXL362::MEASUREMENT);
kfricker 0:cf970e75e1ae 28 int8_t x,y,z;
kfricker 0:cf970e75e1ae 29
kfricker 0:cf970e75e1ae 30 int8_t current [3] = {0,0,0};
kfricker 0:cf970e75e1ae 31 int8_t accel [3] = {0,0,0};
kfricker 0:cf970e75e1ae 32 int8_t currAdd;
kfricker 0:cf970e75e1ae 33 int8_t diffAdd;
kfricker 0:cf970e75e1ae 34 float threshold = 2;
kfricker 0:cf970e75e1ae 35 float val;
kfricker 0:cf970e75e1ae 36 int knock_counter = 0;
kfricker 0:cf970e75e1ae 37
kfricker 0:cf970e75e1ae 38 while(1) {
kfricker 0:cf970e75e1ae 39 x=adxl362.scanx_u8();
kfricker 0:cf970e75e1ae 40 y=adxl362.scany_u8();
kfricker 0:cf970e75e1ae 41 z=adxl362.scanz_u8();
kfricker 0:cf970e75e1ae 42 current [0] = x;
kfricker 0:cf970e75e1ae 43 current [1] = y;
kfricker 0:cf970e75e1ae 44 current [2] = z;
kfricker 0:cf970e75e1ae 45 currAdd = abs(current[0] + current [1] + current [2]);
kfricker 0:cf970e75e1ae 46 wait_ms(10);
kfricker 0:cf970e75e1ae 47 x=adxl362.scanx_u8();
kfricker 0:cf970e75e1ae 48 y=adxl362.scany_u8();
kfricker 0:cf970e75e1ae 49 z=adxl362.scanz_u8();
kfricker 0:cf970e75e1ae 50 accel[0] = x;
kfricker 0:cf970e75e1ae 51 accel[1] = y;
kfricker 0:cf970e75e1ae 52 accel[2] = z;
kfricker 0:cf970e75e1ae 53 diffAdd = abs(accel[0] + accel [1] + accel [2]);
kfricker 0:cf970e75e1ae 54 wait_ms(10);
kfricker 0:cf970e75e1ae 55 val = abs(currAdd - diffAdd);
kfricker 0:cf970e75e1ae 56
kfricker 0:cf970e75e1ae 57 if(val > threshold){
kfricker 0:cf970e75e1ae 58 printf("A knock has been heard ma dude\r\n");
kfricker 0:cf970e75e1ae 59 knock_counter ++;
kfricker 0:cf970e75e1ae 60 printf("Knocks = %d\r\n" , knock_counter);
kfricker 0:cf970e75e1ae 61 led1 = 1;
kfricker 0:cf970e75e1ae 62 wait_ms(2000);
kfricker 0:cf970e75e1ae 63 led1 = 0;
kfricker 0:cf970e75e1ae 64 }
kfricker 0:cf970e75e1ae 65 // printf("x = %d y = %d z = %d\r\n",x,y,z);
kfricker 0:cf970e75e1ae 66 wait_ms(100);
kfricker 0:cf970e75e1ae 67
kfricker 0:cf970e75e1ae 68
kfricker 0:cf970e75e1ae 69
kfricker 0:cf970e75e1ae 70 }
kfricker 0:cf970e75e1ae 71 }