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();
}
