Device to measure angle and get IMU measurements.

Dependencies:   mbed commands BLE_API nRF51822

main.cpp

Committer:
dkester
Date:
2015-05-20
Revision:
1:b44bd62c542f
Parent:
0:1c5088dae6e1
Child:
2:871b5efb2043

File content as of revision 1:b44bd62c542f:

#include "mbed.h"
#include "Sensors.h"
#include "Storage.h"

Serial pc(USBTX, USBRX);

DigitalOut  led(p21);
InterruptIn   button(p23);
Ticker ticker;

void printSensors(void)
{
    Sensors* sensors = Sensors::getInstance();
    sensors->updateIMU();
    pc.printf("angle: %.2f\n", sensors->getAngle());
    pc.printf("accelerometer x: %d y: %d z: %d\n",sensors->getAccelX(),sensors->getAccelY(),sensors->getAccelZ());
    pc.printf("temperature: %.2f\n", sensors->getTemp());
    pc.printf("gyroscope x: %d y: %d z: %d\n\n",sensors->getGyroX(),sensors->getGyroY(),sensors->getGyroZ());
}

void buttonInt( void )
{
    led = !led;
}

void motion(void)
{
    //Sensors::getInstance()->setDMP(0x11);
    pc.printf("Checking motion -> ");
    if (Sensors::getInstance()->checkDMP()) {
        led = 1;
        pc.printf("MOTION! ");
    } else {
        led = 0;
    }
    
    pc.printf("int enable: %d, ",Sensors::getInstance()->readRegister(0x38));
    pc.printf("th: %d, ",Sensors::getInstance()->readRegister(0x1f));
    pc.printf("status: %d ", Sensors::getInstance()->readRegister(0x61));
    pc.printf("int status: %d\n",Sensors::getInstance()->readRegister(0x3a));
    
    printSensors();
    
}

void memory(void)
{
    pc.printf("%d\n", Storage::getInstance()->setup());
}

int main(void)
{
    pc.baud(19200);
    led = 0;

    Sensors::getInstance()->setDMP(0x1a);

    ticker.attach(&motion,0.1);
    //button.fall(&buttonInt);

    while(true) {
        wait(0.001);
    }
}