motion data on button press

Dependencies:   FXAS21002 FXOS8700 Hexi_KW40Z

Fork of Hexi_Buttons_Example by Hexiwear

Committer:
nrithya
Date:
Sun Jun 03 22:38:17 2018 +0000
Revision:
3:b61af6badaf2
Parent:
2:5b025ef2835a
send motion data on button press

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cotigac 0:f7ef26f17610 1 #include "mbed.h"
cotigac 0:f7ef26f17610 2 #include "Hexi_KW40Z.h"
nrithya 3:b61af6badaf2 3 #include "FXOS8700.h"
nrithya 3:b61af6badaf2 4 #include "FXAS21002.h"
cotigac 0:f7ef26f17610 5
cotigac 0:f7ef26f17610 6 #define LED_ON 0
cotigac 0:f7ef26f17610 7 #define LED_OFF 1
cotigac 0:f7ef26f17610 8
cotigac 0:f7ef26f17610 9 void StartHaptic(void);
cotigac 0:f7ef26f17610 10 void StopHaptic(void const *n);
cotigac 0:f7ef26f17610 11
nrithya 3:b61af6badaf2 12 Serial pc(USBTX, USBRX);
nrithya 3:b61af6badaf2 13 static int count=0;
nrithya 3:b61af6badaf2 14 bool ges_flag=false;
nrithya 3:b61af6badaf2 15
nrithya 3:b61af6badaf2 16 // Pin connections & address for Hexiwear
nrithya 3:b61af6badaf2 17 FXAS21002 gyro(PTC11, PTC10);
nrithya 3:b61af6badaf2 18 FXOS8700 accel(PTC11, PTC10);
nrithya 3:b61af6badaf2 19 FXOS8700 mag(PTC11, PTC10);
nrithya 3:b61af6badaf2 20 Timer t;
nrithya 3:b61af6badaf2 21
cotigac 0:f7ef26f17610 22 DigitalOut redLed(LED1);
cotigac 0:f7ef26f17610 23 DigitalOut greenLed(LED2);
cotigac 0:f7ef26f17610 24 DigitalOut blueLed(LED3);
cotigac 0:f7ef26f17610 25 DigitalOut haptic(PTB9);
cotigac 0:f7ef26f17610 26
cotigac 0:f7ef26f17610 27 /* Define timer for haptic feedback */
cotigac 0:f7ef26f17610 28 RtosTimer hapticTimer(StopHaptic, osTimerOnce);
cotigac 0:f7ef26f17610 29
cotigac 0:f7ef26f17610 30 /* Instantiate the Hexi KW40Z Driver (UART TX, UART RX) */
cotigac 0:f7ef26f17610 31 KW40Z kw40z_device(PTE24, PTE25);
cotigac 1:80e17bcc26e4 32
cotigac 1:80e17bcc26e4 33 void ButtonUp(void)
cotigac 1:80e17bcc26e4 34 {
cotigac 1:80e17bcc26e4 35 StartHaptic();
nrithya 3:b61af6badaf2 36 count++;
nrithya 3:b61af6badaf2 37 ges_flag=true;
cotigac 0:f7ef26f17610 38
nrithya 3:b61af6badaf2 39 /*redLed = LED_ON;
cotigac 1:80e17bcc26e4 40 greenLed = LED_OFF;
nrithya 3:b61af6badaf2 41 blueLed = LED_OFF;*/
nrithya 3:b61af6badaf2 42
cotigac 1:80e17bcc26e4 43 }
cotigac 1:80e17bcc26e4 44
cotigac 1:80e17bcc26e4 45 void ButtonDown(void)
cotigac 1:80e17bcc26e4 46 {
cotigac 1:80e17bcc26e4 47 StartHaptic();
cotigac 1:80e17bcc26e4 48
cotigac 1:80e17bcc26e4 49 redLed = LED_OFF;
cotigac 1:80e17bcc26e4 50 greenLed = LED_ON;
cotigac 1:80e17bcc26e4 51 blueLed = LED_OFF;
cotigac 1:80e17bcc26e4 52 }
cotigac 1:80e17bcc26e4 53
cotigac 1:80e17bcc26e4 54 void ButtonRight(void)
cotigac 1:80e17bcc26e4 55 {
cotigac 1:80e17bcc26e4 56 StartHaptic();
cotigac 1:80e17bcc26e4 57
cotigac 1:80e17bcc26e4 58 redLed = LED_OFF;
cotigac 1:80e17bcc26e4 59 greenLed = LED_OFF;
cotigac 1:80e17bcc26e4 60 blueLed = LED_ON;
cotigac 1:80e17bcc26e4 61 }
cotigac 1:80e17bcc26e4 62
cotigac 1:80e17bcc26e4 63 void ButtonLeft(void)
cotigac 1:80e17bcc26e4 64 {
cotigac 1:80e17bcc26e4 65 StartHaptic();
cotigac 1:80e17bcc26e4 66
cotigac 1:80e17bcc26e4 67 redLed = LED_ON;
cotigac 2:5b025ef2835a 68 greenLed = LED_ON;
cotigac 1:80e17bcc26e4 69 blueLed = LED_OFF;
cotigac 1:80e17bcc26e4 70 }
cotigac 1:80e17bcc26e4 71
cotigac 1:80e17bcc26e4 72 void ButtonSlide(void)
cotigac 1:80e17bcc26e4 73 {
cotigac 1:80e17bcc26e4 74 StartHaptic();
cotigac 1:80e17bcc26e4 75
cotigac 1:80e17bcc26e4 76 redLed = LED_ON;
cotigac 1:80e17bcc26e4 77 greenLed = LED_ON;
cotigac 2:5b025ef2835a 78 blueLed = LED_ON;
cotigac 1:80e17bcc26e4 79 }
cotigac 1:80e17bcc26e4 80
cotigac 0:f7ef26f17610 81 int main()
cotigac 0:f7ef26f17610 82 {
cotigac 0:f7ef26f17610 83 /* Register callbacks to application functions */
cotigac 1:80e17bcc26e4 84 kw40z_device.attach_buttonUp(&ButtonUp);
nrithya 3:b61af6badaf2 85 /*kw40z_device.attach_buttonDown(&ButtonDown);
cotigac 1:80e17bcc26e4 86 kw40z_device.attach_buttonLeft(&ButtonLeft);
cotigac 1:80e17bcc26e4 87 kw40z_device.attach_buttonRight(&ButtonRight);
nrithya 3:b61af6badaf2 88 kw40z_device.attach_buttonSlide(&ButtonSlide);*/
nrithya 3:b61af6badaf2 89
nrithya 3:b61af6badaf2 90 accel.accel_config();
nrithya 3:b61af6badaf2 91 mag.mag_config();
nrithya 3:b61af6badaf2 92 gyro.gyro_config();
nrithya 3:b61af6badaf2 93
nrithya 3:b61af6badaf2 94 float accel_data[3]; float accel_rms=0.0;
nrithya 3:b61af6badaf2 95 float mag_data[3]; float mag_rms=0.0;
nrithya 3:b61af6badaf2 96 float gyro_data[3];
cotigac 0:f7ef26f17610 97
cotigac 0:f7ef26f17610 98 while (true) {
nrithya 3:b61af6badaf2 99 if(ges_flag){
nrithya 3:b61af6badaf2 100
nrithya 3:b61af6badaf2 101 while(count==1){
nrithya 3:b61af6badaf2 102
nrithya 3:b61af6badaf2 103 ges_flag=false;
nrithya 3:b61af6badaf2 104 t.start();
nrithya 3:b61af6badaf2 105 //while(1){
nrithya 3:b61af6badaf2 106
nrithya 3:b61af6badaf2 107 gyro.acquire_gyro_data_dps(gyro_data);
nrithya 3:b61af6badaf2 108 //accel_rms = sqrt(((accel_data[0]*accel_data[0])+(accel_data[1]*accel_data[1])+(accel_data[2]*accel_data[2]))/3);
nrithya 3:b61af6badaf2 109 printf("%4.5f \t%4.5f \t%4.5f \t%4.5f \n\r",t.read(),gyro_data[0],gyro_data[1],gyro_data[2]);
nrithya 3:b61af6badaf2 110 wait(0.01);
nrithya 3:b61af6badaf2 111
nrithya 3:b61af6badaf2 112 accel.acquire_accel_data_g(accel_data);
nrithya 3:b61af6badaf2 113 //accel_rms = sqrt(((accel_data[0]*accel_data[0])+(accel_data[1]*accel_data[1])+(accel_data[2]*accel_data[2]))/3);
nrithya 3:b61af6badaf2 114 printf("%4.5f \t%4.5f \t%4.5f \t%4.5f \n\r",t.read(),accel_data[0],accel_data[1],accel_data[2]);
nrithya 3:b61af6badaf2 115 wait(0.01);
nrithya 3:b61af6badaf2 116
nrithya 3:b61af6badaf2 117 mag.acquire_mag_data_uT(mag_data);
nrithya 3:b61af6badaf2 118 //mag_rms = sqrt(((mag_data[0]*mag_data[0])+(mag_data[1]*mag_data[1])+(mag_data[2]*mag_data[2]))/3);
nrithya 3:b61af6badaf2 119 printf("%4.5f \t%4.5f \t%4.5f \t%4.5f \n\r",t.read(),mag_data[0],mag_data[1],mag_data[2]);
nrithya 3:b61af6badaf2 120 wait(0.01);
nrithya 3:b61af6badaf2 121 printf("%d\n\r",1);
nrithya 3:b61af6badaf2 122
nrithya 3:b61af6badaf2 123 Thread::wait(500);
nrithya 3:b61af6badaf2 124 }
nrithya 3:b61af6badaf2 125
nrithya 3:b61af6badaf2 126 if(count==2){
nrithya 3:b61af6badaf2 127
nrithya 3:b61af6badaf2 128 ges_flag=false;
nrithya 3:b61af6badaf2 129 count=0;
nrithya 3:b61af6badaf2 130 gyro.acquire_gyro_data_dps(gyro_data);
nrithya 3:b61af6badaf2 131 //accel_rms = sqrt(((accel_data[0]*accel_data[0])+(accel_data[1]*accel_data[1])+(accel_data[2]*accel_data[2]))/3);
nrithya 3:b61af6badaf2 132 printf("%4.5f \t%4.5f \t%4.5f \t%4.5f \n\r",t.read(),gyro_data[0],gyro_data[1],gyro_data[2]);
nrithya 3:b61af6badaf2 133 wait(0.01);
nrithya 3:b61af6badaf2 134
nrithya 3:b61af6badaf2 135 accel.acquire_accel_data_g(accel_data);
nrithya 3:b61af6badaf2 136 //accel_rms = sqrt(((accel_data[0]*accel_data[0])+(accel_data[1]*accel_data[1])+(accel_data[2]*accel_data[2]))/3);
nrithya 3:b61af6badaf2 137 printf("%4.5f \t%4.5f \t%4.5f \t%4.5f \n\r",t.read(),accel_data[0],accel_data[1],accel_data[2]);
nrithya 3:b61af6badaf2 138 wait(0.01);
nrithya 3:b61af6badaf2 139
nrithya 3:b61af6badaf2 140 mag.acquire_mag_data_uT(mag_data);
nrithya 3:b61af6badaf2 141 //mag_rms = sqrt(((mag_data[0]*mag_data[0])+(mag_data[1]*mag_data[1])+(mag_data[2]*mag_data[2]))/3);
nrithya 3:b61af6badaf2 142 printf("%4.5f \t%4.5f \t%4.5f \t%4.5f \n\r",t.read(),mag_data[0],mag_data[1],mag_data[2]);
nrithya 3:b61af6badaf2 143 wait(0.01);
nrithya 3:b61af6badaf2 144 printf("%d\n\r",0);
nrithya 3:b61af6badaf2 145 Thread::wait(500);
nrithya 3:b61af6badaf2 146
nrithya 3:b61af6badaf2 147 t.reset();
nrithya 3:b61af6badaf2 148
nrithya 3:b61af6badaf2 149 }
nrithya 3:b61af6badaf2 150
nrithya 3:b61af6badaf2 151
nrithya 3:b61af6badaf2 152
nrithya 3:b61af6badaf2 153
nrithya 3:b61af6badaf2 154
nrithya 3:b61af6badaf2 155 }
nrithya 3:b61af6badaf2 156 Thread::wait(50);
cotigac 0:f7ef26f17610 157 }
cotigac 0:f7ef26f17610 158 }
cotigac 0:f7ef26f17610 159
cotigac 0:f7ef26f17610 160 void StartHaptic(void)
cotigac 0:f7ef26f17610 161 {
cotigac 0:f7ef26f17610 162 hapticTimer.start(50);
cotigac 0:f7ef26f17610 163 haptic = 1;
cotigac 0:f7ef26f17610 164 }
cotigac 0:f7ef26f17610 165
cotigac 0:f7ef26f17610 166 void StopHaptic(void const *n) {
cotigac 0:f7ef26f17610 167 haptic = 0;
cotigac 0:f7ef26f17610 168 hapticTimer.stop();
cotigac 0:f7ef26f17610 169 }