Preston Stephens
/
Mini_Project_Day_7_Taps_2
Compass Working
Tap.cpp@1:ef74b3428716, 2016-01-13 (annotated)
- 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?
User | Revision | Line number | New 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 | } |