Vibration Detector

Dependencies:   ADXL362 mbed

Committer:
kmhatre
Date:
Sat Mar 10 01:54:03 2018 +0000
Revision:
0:7c6ad753eedb
Vibration Detector

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kmhatre 0:7c6ad753eedb 1 /*
kmhatre 0:7c6ad753eedb 2 * ENGR E 210 - CYBER PHYSICAL SYSTEMS (DIGITAL SYSTEMS)
kmhatre 0:7c6ad753eedb 3 * LAB 6 - VIBRATION DETECTOR
kmhatre 0:7c6ad753eedb 4 * CODE BY KRISH HEMANT MHATRE AND ETHAN ZHANG
kmhatre 0:7c6ad753eedb 5 */
kmhatre 0:7c6ad753eedb 6
kmhatre 0:7c6ad753eedb 7 #include "mbed.h"
kmhatre 0:7c6ad753eedb 8 #include "ADXL362.h"
kmhatre 0:7c6ad753eedb 9
kmhatre 0:7c6ad753eedb 10 // Interface pulled from ADXL362.cpp
kmhatre 0:7c6ad753eedb 11 // ADXL362::ADXL362(PinName CS, PinName MOSI, PinName MISO, PinName SCK) :
kmhatre 0:7c6ad753eedb 12 ADXL362 adxl362(PA_0,PA_7,PA_6,PA_1);
kmhatre 0:7c6ad753eedb 13 DigitalOut led1(LED1);
kmhatre 0:7c6ad753eedb 14 int adxl362_reg_print(int start, int length);
kmhatre 0:7c6ad753eedb 15
kmhatre 0:7c6ad753eedb 16 int main() {
kmhatre 0:7c6ad753eedb 17 adxl362.reset();
kmhatre 0:7c6ad753eedb 18 wait_ms(600); // we need to wait at least 500ms after ADXL362 reset
kmhatre 0:7c6ad753eedb 19 adxl362.set_mode(ADXL362::MEASUREMENT);
kmhatre 0:7c6ad753eedb 20 int i = adxl362_reg_print(0, 50);
kmhatre 0:7c6ad753eedb 21
kmhatre 0:7c6ad753eedb 22 /* int8_t x,y,z;
kmhatre 0:7c6ad753eedb 23 int knock = -2;
kmhatre 0:7c6ad753eedb 24 led1 = 0;
kmhatre 0:7c6ad753eedb 25 while(1)
kmhatre 0:7c6ad753eedb 26 {
kmhatre 0:7c6ad753eedb 27 if(!led1)
kmhatre 0:7c6ad753eedb 28 {
kmhatre 0:7c6ad753eedb 29 int a = x+y+z;
kmhatre 0:7c6ad753eedb 30 x=adxl362.scanx_u8();
kmhatre 0:7c6ad753eedb 31 y=adxl362.scany_u8();
kmhatre 0:7c6ad753eedb 32 z=adxl362.scanz_u8();
kmhatre 0:7c6ad753eedb 33 int b = x+y+z;
kmhatre 0:7c6ad753eedb 34 printf("x = %d y = %d z = %d\r\n",x,y,z);
kmhatre 0:7c6ad753eedb 35 if(a-b > 2 || b-a > 2)
kmhatre 0:7c6ad753eedb 36 {
kmhatre 0:7c6ad753eedb 37 knock++;
kmhatre 0:7c6ad753eedb 38 led1 = 1;
kmhatre 0:7c6ad753eedb 39 }
kmhatre 0:7c6ad753eedb 40 printf("knocks = %d\r\n", knock);
kmhatre 0:7c6ad753eedb 41 wait_ms(400);
kmhatre 0:7c6ad753eedb 42 }
kmhatre 0:7c6ad753eedb 43 else
kmhatre 0:7c6ad753eedb 44 {
kmhatre 0:7c6ad753eedb 45 wait(2);
kmhatre 0:7c6ad753eedb 46 led1 = 0;
kmhatre 0:7c6ad753eedb 47 }
kmhatre 0:7c6ad753eedb 48 }*/
kmhatre 0:7c6ad753eedb 49
kmhatre 0:7c6ad753eedb 50 }
kmhatre 0:7c6ad753eedb 51
kmhatre 0:7c6ad753eedb 52
kmhatre 0:7c6ad753eedb 53
kmhatre 0:7c6ad753eedb 54 int adxl362_reg_print(int start, int length)
kmhatre 0:7c6ad753eedb 55 {
kmhatre 0:7c6ad753eedb 56 int return_value = 0;
kmhatre 0:7c6ad753eedb 57 char *text;
kmhatre 0:7c6ad753eedb 58 int value, address;
kmhatre 0:7c6ad753eedb 59 if(start < 0x00 || start > 0x2E)
kmhatre 0:7c6ad753eedb 60 {
kmhatre 0:7c6ad753eedb 61 return_value = -1;
kmhatre 0:7c6ad753eedb 62 exit(0);
kmhatre 0:7c6ad753eedb 63 }
kmhatre 0:7c6ad753eedb 64 else
kmhatre 0:7c6ad753eedb 65 {
kmhatre 0:7c6ad753eedb 66 int i = start;
kmhatre 0:7c6ad753eedb 67 for(i = start; i < length; i++)
kmhatre 0:7c6ad753eedb 68 {
kmhatre 0:7c6ad753eedb 69 address = ADXL362::ADXL362_register_t(i);
kmhatre 0:7c6ad753eedb 70 if(i == 0)
kmhatre 0:7c6ad753eedb 71 {
kmhatre 0:7c6ad753eedb 72 text = "DEVID_AD";
kmhatre 0:7c6ad753eedb 73 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 74 }
kmhatre 0:7c6ad753eedb 75 else if(i == 1)
kmhatre 0:7c6ad753eedb 76 {
kmhatre 0:7c6ad753eedb 77 text = "DEVID_MST";
kmhatre 0:7c6ad753eedb 78 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 79 }
kmhatre 0:7c6ad753eedb 80 else if(i == 2)
kmhatre 0:7c6ad753eedb 81 {
kmhatre 0:7c6ad753eedb 82 text = "PARTID";
kmhatre 0:7c6ad753eedb 83 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 84 }
kmhatre 0:7c6ad753eedb 85 else if(i == 3)
kmhatre 0:7c6ad753eedb 86 {
kmhatre 0:7c6ad753eedb 87 text = "REVID";
kmhatre 0:7c6ad753eedb 88 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 89 }
kmhatre 0:7c6ad753eedb 90 else if(i == 8)
kmhatre 0:7c6ad753eedb 91 {
kmhatre 0:7c6ad753eedb 92 text = "XDATA";
kmhatre 0:7c6ad753eedb 93 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 94 }
kmhatre 0:7c6ad753eedb 95 else if(i == 9)
kmhatre 0:7c6ad753eedb 96 {
kmhatre 0:7c6ad753eedb 97 text = "YDATA";
kmhatre 0:7c6ad753eedb 98 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 99 }
kmhatre 0:7c6ad753eedb 100 else if(i == 10)
kmhatre 0:7c6ad753eedb 101 {
kmhatre 0:7c6ad753eedb 102 text = "ZDATA";
kmhatre 0:7c6ad753eedb 103 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 104 }
kmhatre 0:7c6ad753eedb 105 else if(i == 11)
kmhatre 0:7c6ad753eedb 106 {
kmhatre 0:7c6ad753eedb 107 text = "STATUS";
kmhatre 0:7c6ad753eedb 108 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 109 }
kmhatre 0:7c6ad753eedb 110 else if(i == 12)
kmhatre 0:7c6ad753eedb 111 {
kmhatre 0:7c6ad753eedb 112 text = "FIFO_ENTRIES_L";
kmhatre 0:7c6ad753eedb 113 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 114 }
kmhatre 0:7c6ad753eedb 115 else if(i == 13)
kmhatre 0:7c6ad753eedb 116 {
kmhatre 0:7c6ad753eedb 117 text = "FIFO_ENTRIES_H";
kmhatre 0:7c6ad753eedb 118 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 119 }
kmhatre 0:7c6ad753eedb 120 else if(i == 14)
kmhatre 0:7c6ad753eedb 121 {
kmhatre 0:7c6ad753eedb 122 text = "XDATA_L";
kmhatre 0:7c6ad753eedb 123 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 124 }
kmhatre 0:7c6ad753eedb 125 else if(i == 15)
kmhatre 0:7c6ad753eedb 126 {
kmhatre 0:7c6ad753eedb 127 text = "XDATA_H";
kmhatre 0:7c6ad753eedb 128 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 129 }
kmhatre 0:7c6ad753eedb 130 else if(i == 16)
kmhatre 0:7c6ad753eedb 131 {
kmhatre 0:7c6ad753eedb 132 text = "YDATA_L";
kmhatre 0:7c6ad753eedb 133 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 134 }
kmhatre 0:7c6ad753eedb 135 else if(i == 17)
kmhatre 0:7c6ad753eedb 136 {
kmhatre 0:7c6ad753eedb 137 text = "YDATA_H";
kmhatre 0:7c6ad753eedb 138 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 139 }
kmhatre 0:7c6ad753eedb 140 else if(i == 18)
kmhatre 0:7c6ad753eedb 141 {
kmhatre 0:7c6ad753eedb 142 text = "ZDATA_L";
kmhatre 0:7c6ad753eedb 143 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 144 }
kmhatre 0:7c6ad753eedb 145 else if(i == 19)
kmhatre 0:7c6ad753eedb 146 {
kmhatre 0:7c6ad753eedb 147 text = "ZDATA_H";
kmhatre 0:7c6ad753eedb 148 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 149 }
kmhatre 0:7c6ad753eedb 150 else if(i == 20)
kmhatre 0:7c6ad753eedb 151 {
kmhatre 0:7c6ad753eedb 152 text = "TEMP_L";
kmhatre 0:7c6ad753eedb 153 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 154 }
kmhatre 0:7c6ad753eedb 155 else if(i == 21)
kmhatre 0:7c6ad753eedb 156 {
kmhatre 0:7c6ad753eedb 157 text = "TEMP_H";
kmhatre 0:7c6ad753eedb 158 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 159 }
kmhatre 0:7c6ad753eedb 160 else if(i == 31)
kmhatre 0:7c6ad753eedb 161 {
kmhatre 0:7c6ad753eedb 162 text = "SOFT_RESET";
kmhatre 0:7c6ad753eedb 163 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 164 }
kmhatre 0:7c6ad753eedb 165 else if(i == 32)
kmhatre 0:7c6ad753eedb 166 {
kmhatre 0:7c6ad753eedb 167 text = "THRESH_ACT_L";
kmhatre 0:7c6ad753eedb 168 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 169 }
kmhatre 0:7c6ad753eedb 170 else if(i == 33)
kmhatre 0:7c6ad753eedb 171 {
kmhatre 0:7c6ad753eedb 172 text = "THRESH_ACT_H";
kmhatre 0:7c6ad753eedb 173 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 174 }
kmhatre 0:7c6ad753eedb 175 else if(i == 34)
kmhatre 0:7c6ad753eedb 176 {
kmhatre 0:7c6ad753eedb 177 text = "TIME_ACT";
kmhatre 0:7c6ad753eedb 178 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 179 }
kmhatre 0:7c6ad753eedb 180 else if(i == 35)
kmhatre 0:7c6ad753eedb 181 {
kmhatre 0:7c6ad753eedb 182 text = "THREST_INACT_L";
kmhatre 0:7c6ad753eedb 183 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 184 }
kmhatre 0:7c6ad753eedb 185 else if(i == 36)
kmhatre 0:7c6ad753eedb 186 {
kmhatre 0:7c6ad753eedb 187 text = "THRESH_INACT_H";
kmhatre 0:7c6ad753eedb 188 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 189 }
kmhatre 0:7c6ad753eedb 190 else if(i == 37)
kmhatre 0:7c6ad753eedb 191 {
kmhatre 0:7c6ad753eedb 192 text = "TIME_INACT_L";
kmhatre 0:7c6ad753eedb 193 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 194 }
kmhatre 0:7c6ad753eedb 195 else if(i == 38)
kmhatre 0:7c6ad753eedb 196 {
kmhatre 0:7c6ad753eedb 197 text = "TIME_INACT_H";
kmhatre 0:7c6ad753eedb 198 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 199 }
kmhatre 0:7c6ad753eedb 200 else if(i == 39)
kmhatre 0:7c6ad753eedb 201 {
kmhatre 0:7c6ad753eedb 202 text = "ACT_INACT_CTL";
kmhatre 0:7c6ad753eedb 203 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 204 }
kmhatre 0:7c6ad753eedb 205 else if(i == 40)
kmhatre 0:7c6ad753eedb 206 {
kmhatre 0:7c6ad753eedb 207 text = "FIFO_CONTROL";
kmhatre 0:7c6ad753eedb 208 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 209 }
kmhatre 0:7c6ad753eedb 210 else if(i == 41)
kmhatre 0:7c6ad753eedb 211 {
kmhatre 0:7c6ad753eedb 212 text = "FIFO_SAMPLES";
kmhatre 0:7c6ad753eedb 213 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 214 }
kmhatre 0:7c6ad753eedb 215 else if(i == 42)
kmhatre 0:7c6ad753eedb 216 {
kmhatre 0:7c6ad753eedb 217 text = "INTMAP1";
kmhatre 0:7c6ad753eedb 218 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 219 }
kmhatre 0:7c6ad753eedb 220 else if(i == 43)
kmhatre 0:7c6ad753eedb 221 {
kmhatre 0:7c6ad753eedb 222 text = "INTMAP2";
kmhatre 0:7c6ad753eedb 223 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 224 }
kmhatre 0:7c6ad753eedb 225 else if(i == 44)
kmhatre 0:7c6ad753eedb 226 {
kmhatre 0:7c6ad753eedb 227 text = "FILTER_CTL";
kmhatre 0:7c6ad753eedb 228 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 229 }
kmhatre 0:7c6ad753eedb 230 else if(i == 45)
kmhatre 0:7c6ad753eedb 231 {
kmhatre 0:7c6ad753eedb 232 text = "POWER_CTL";
kmhatre 0:7c6ad753eedb 233 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 234 }
kmhatre 0:7c6ad753eedb 235 else if(i == 46)
kmhatre 0:7c6ad753eedb 236 {
kmhatre 0:7c6ad753eedb 237 text = "SELF_TEXT";
kmhatre 0:7c6ad753eedb 238 value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i))));
kmhatre 0:7c6ad753eedb 239 }
kmhatre 0:7c6ad753eedb 240 else
kmhatre 0:7c6ad753eedb 241 {
kmhatre 0:7c6ad753eedb 242 text = "NULL";
kmhatre 0:7c6ad753eedb 243 value = NULL;
kmhatre 0:7c6ad753eedb 244 }
kmhatre 0:7c6ad753eedb 245 if(i <= 46 && text != "NULL")
kmhatre 0:7c6ad753eedb 246 {
kmhatre 0:7c6ad753eedb 247 printf("0x%2.2hhX: %s=0x%2.2hhX \n\r", address, text, value);
kmhatre 0:7c6ad753eedb 248 }
kmhatre 0:7c6ad753eedb 249 }
kmhatre 0:7c6ad753eedb 250 }
kmhatre 0:7c6ad753eedb 251
kmhatre 0:7c6ad753eedb 252 return return_value;
kmhatre 0:7c6ad753eedb 253 }