Compass Working

Dependencies:   mbed

Committer:
pstephens18
Date:
Wed Jan 13 22:31:54 2016 +0000
Revision:
1:ef74b3428716
Child:
2:ef6778c2438e
Temperature working
;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pstephens18 1:ef74b3428716 1 #include "Tap.h"
pstephens18 1:ef74b3428716 2
pstephens18 1:ef74b3428716 3 I2C acc(p9,p10);
pstephens18 1:ef74b3428716 4 DigitalIn interrupt(p20);
pstephens18 1:ef74b3428716 5 BusOut led(LED1,LED2,LED3,LED4);
pstephens18 1:ef74b3428716 6
pstephens18 1:ef74b3428716 7
pstephens18 1:ef74b3428716 8
pstephens18 1:ef74b3428716 9 char Tap()
pstephens18 1:ef74b3428716 10 {
pstephens18 1:ef74b3428716 11
pstephens18 1:ef74b3428716 12
pstephens18 1:ef74b3428716 13
pstephens18 1:ef74b3428716 14 cs=0;
pstephens18 1:ef74b3428716 15 acc.write(0x31); // data format
pstephens18 1:ef74b3428716 16 acc.write(0x0B);
pstephens18 1:ef74b3428716 17 cs=1;
pstephens18 1:ef74b3428716 18
pstephens18 1:ef74b3428716 19 cs=0;
pstephens18 1:ef74b3428716 20 acc.write(0x2D); // power control
pstephens18 1:ef74b3428716 21 acc.write(0x08); // measure mode
pstephens18 1:ef74b3428716 22 cs=1;
pstephens18 1:ef74b3428716 23
pstephens18 1:ef74b3428716 24 cs=0;
pstephens18 1:ef74b3428716 25 acc.write(0x1D); // tap threshold
pstephens18 1:ef74b3428716 26 acc.write(0x50); // set to 5g
pstephens18 1:ef74b3428716 27 cs=1;
pstephens18 1:ef74b3428716 28
pstephens18 1:ef74b3428716 29 cs=0;
pstephens18 1:ef74b3428716 30 acc.write(0x21); // tap duration
pstephens18 1:ef74b3428716 31 acc.write(0x10); // set to 0.01
pstephens18 1:ef74b3428716 32 cs=1;
pstephens18 1:ef74b3428716 33
pstephens18 1:ef74b3428716 34 cs=0;
pstephens18 1:ef74b3428716 35 acc.write(0x22); // double tap gap
pstephens18 1:ef74b3428716 36 acc.write(0x05); // set to aprox .006
pstephens18 1:ef74b3428716 37 cs=1;
pstephens18 1:ef74b3428716 38
pstephens18 1:ef74b3428716 39 cs=0;
pstephens18 1:ef74b3428716 40 acc.write(0x23); // double tap window
pstephens18 1:ef74b3428716 41 acc.write(0xFF); // Set to .38175
pstephens18 1:ef74b3428716 42 cs=1;
pstephens18 1:ef74b3428716 43
pstephens18 1:ef74b3428716 44 cs=0;
pstephens18 1:ef74b3428716 45 acc.write(0x2A); // tap axis
pstephens18 1:ef74b3428716 46 acc.write(0x07); // set to enable x,y, and z (00000111)
pstephens18 1:ef74b3428716 47 cs=1;
pstephens18 1:ef74b3428716 48
pstephens18 1:ef74b3428716 49 cs=0;
pstephens18 1:ef74b3428716 50 acc.write(0x2E); // interupt enable
pstephens18 1:ef74b3428716 51 acc.write(0x60); // set to single and double tap (01100000)
pstephens18 1:ef74b3428716 52 cs=1;
pstephens18 1:ef74b3428716 53
pstephens18 1:ef74b3428716 54 cs=0;
pstephens18 1:ef74b3428716 55 acc.write(0x2F); // map interupt
pstephens18 1:ef74b3428716 56 acc.write(0x60); // set to 00000111
pstephens18 1:ef74b3428716 57 cs=1;
pstephens18 1:ef74b3428716 58
pstephens18 1:ef74b3428716 59 char Inbyte;
pstephens18 1:ef74b3428716 60
pstephens18 1:ef74b3428716 61 while(1)
pstephens18 1:ef74b3428716 62 {
pstephens18 1:ef74b3428716 63 wait(0.01);
pstephens18 1:ef74b3428716 64 Inbyte =0;
pstephens18 1:ef74b3428716 65
pstephens18 1:ef74b3428716 66 if(interrupt==1) // Check for interupt signal
pstephens18 1:ef74b3428716 67 {
pstephens18 1:ef74b3428716 68 cs=0;
pstephens18 1:ef74b3428716 69 acc.write(0x80|0x30); // Connect to device
pstephens18 1:ef74b3428716 70 Inbyte = acc.write(0x00); // Get interupt information
pstephens18 1:ef74b3428716 71 if(Inbyte & 0x40) // Turn on one LED for one tap
pstephens18 1:ef74b3428716 72 {
pstephens18 1:ef74b3428716 73 led =1;
pstephens18 1:ef74b3428716 74 return 1;
pstephens18 1:ef74b3428716 75 }
pstephens18 1:ef74b3428716 76 if(Inbyte & 0x20) // Turn on two LEDs for two taps
pstephens18 1:ef74b3428716 77 {
pstephens18 1:ef74b3428716 78 led =3;
pstephens18 1:ef74b3428716 79 return 2;
pstephens18 1:ef74b3428716 80 }
pstephens18 1:ef74b3428716 81 led =0; // Turn off LED
pstephens18 1:ef74b3428716 82 }
pstephens18 1:ef74b3428716 83 }
pstephens18 1:ef74b3428716 84 }