motion data on button press
Dependencies: FXAS21002 FXOS8700 Hexi_KW40Z
Fork of Hexi_Buttons_Example by
main.cpp
- Committer:
- nrithya
- Date:
- 2018-06-03
- Revision:
- 3:b61af6badaf2
- Parent:
- 2:5b025ef2835a
File content as of revision 3:b61af6badaf2:
#include "mbed.h" #include "Hexi_KW40Z.h" #include "FXOS8700.h" #include "FXAS21002.h" #define LED_ON 0 #define LED_OFF 1 void StartHaptic(void); void StopHaptic(void const *n); Serial pc(USBTX, USBRX); static int count=0; bool ges_flag=false; // Pin connections & address for Hexiwear FXAS21002 gyro(PTC11, PTC10); FXOS8700 accel(PTC11, PTC10); FXOS8700 mag(PTC11, PTC10); Timer t; DigitalOut redLed(LED1); DigitalOut greenLed(LED2); DigitalOut blueLed(LED3); DigitalOut haptic(PTB9); /* Define timer for haptic feedback */ RtosTimer hapticTimer(StopHaptic, osTimerOnce); /* Instantiate the Hexi KW40Z Driver (UART TX, UART RX) */ KW40Z kw40z_device(PTE24, PTE25); void ButtonUp(void) { StartHaptic(); count++; ges_flag=true; /*redLed = LED_ON; greenLed = LED_OFF; blueLed = LED_OFF;*/ } void ButtonDown(void) { StartHaptic(); redLed = LED_OFF; greenLed = LED_ON; blueLed = LED_OFF; } void ButtonRight(void) { StartHaptic(); redLed = LED_OFF; greenLed = LED_OFF; blueLed = LED_ON; } void ButtonLeft(void) { StartHaptic(); redLed = LED_ON; greenLed = LED_ON; blueLed = LED_OFF; } void ButtonSlide(void) { StartHaptic(); redLed = LED_ON; greenLed = LED_ON; blueLed = LED_ON; } int main() { /* Register callbacks to application functions */ kw40z_device.attach_buttonUp(&ButtonUp); /*kw40z_device.attach_buttonDown(&ButtonDown); kw40z_device.attach_buttonLeft(&ButtonLeft); kw40z_device.attach_buttonRight(&ButtonRight); kw40z_device.attach_buttonSlide(&ButtonSlide);*/ accel.accel_config(); mag.mag_config(); gyro.gyro_config(); float accel_data[3]; float accel_rms=0.0; float mag_data[3]; float mag_rms=0.0; float gyro_data[3]; while (true) { if(ges_flag){ while(count==1){ ges_flag=false; t.start(); //while(1){ gyro.acquire_gyro_data_dps(gyro_data); //accel_rms = sqrt(((accel_data[0]*accel_data[0])+(accel_data[1]*accel_data[1])+(accel_data[2]*accel_data[2]))/3); 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]); wait(0.01); accel.acquire_accel_data_g(accel_data); //accel_rms = sqrt(((accel_data[0]*accel_data[0])+(accel_data[1]*accel_data[1])+(accel_data[2]*accel_data[2]))/3); 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]); wait(0.01); mag.acquire_mag_data_uT(mag_data); //mag_rms = sqrt(((mag_data[0]*mag_data[0])+(mag_data[1]*mag_data[1])+(mag_data[2]*mag_data[2]))/3); 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]); wait(0.01); printf("%d\n\r",1); Thread::wait(500); } if(count==2){ ges_flag=false; count=0; gyro.acquire_gyro_data_dps(gyro_data); //accel_rms = sqrt(((accel_data[0]*accel_data[0])+(accel_data[1]*accel_data[1])+(accel_data[2]*accel_data[2]))/3); 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]); wait(0.01); accel.acquire_accel_data_g(accel_data); //accel_rms = sqrt(((accel_data[0]*accel_data[0])+(accel_data[1]*accel_data[1])+(accel_data[2]*accel_data[2]))/3); 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]); wait(0.01); mag.acquire_mag_data_uT(mag_data); //mag_rms = sqrt(((mag_data[0]*mag_data[0])+(mag_data[1]*mag_data[1])+(mag_data[2]*mag_data[2]))/3); 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]); wait(0.01); printf("%d\n\r",0); Thread::wait(500); t.reset(); } } Thread::wait(50); } } void StartHaptic(void) { hapticTimer.start(50); haptic = 1; } void StopHaptic(void const *n) { haptic = 0; hapticTimer.stop(); }