On this page
IMU_demo
import libraries
#include "tap/board/board.hpp"
#include "drivers_singleton.hpp"
#include "tap/communication/serial/uart_terminal_device.hpp"
use the tap::communicatin::serial
namespace for convenience
using namespace tap::communication::serial;
initialize the board, a timer, and the IOStream.
src::Drivers *drivers = src::DoNotUse_getDrivers(); // gets the driver object
Board::initialize(); // initialize the whole board
tap::arch::PeriodicMicroTimer RunTimer(100000);
UartTerminalDevice ter(drivers);
ter.initialize();
modm::IOStream s(ter);
initialize the imu
drivers->bmi088.initialize(20,0,0);
every 100000 micro seconds read update the imu with drivers->bmi088.periodicIMUUpdate()
and print the roll, pitch, and yaw.
if(RunTimer.execute()){
drivers->bmi088.periodicIMUUpdate();
double roll = drivers->bmi088.getRoll();
double pitch = drivers->bmi088.getPitch();
double yaw = drivers->bmi088.getYaw();
// double ax = drivers->bmi088.getAx();
// double ay = drivers->bmi088.getAy();
// double az = drivers->bmi088.getAz();
// double gx = drivers->bmi088.getGx();
// double gy = drivers->bmi088.getGy();
// double gz = drivers->bmi088.getGz();
s.printf("roll %f | pitch %f | yaw %f\n", roll, pitch, yaw);
}
Code
#include "tap/board/board.hpp"
#include "drivers_singleton.hpp"
#include "tap/communication/serial/uart_terminal_device.hpp"
using namespace tap::communication::serial;
int main(){
src::Drivers *drivers = src::DoNotUse_getDrivers(); // gets the driver object
Board::initialize(); // initialize the whole board
tap::arch::PeriodicMicroTimer RunTimer(100000);
UartTerminalDevice ter(drivers);
ter.initialize();
modm::IOStream s(ter);
drivers->bmi088.initialize(20,0,0);
while(true){
if(RunTimer.execute()){
drivers->bmi088.periodicIMUUpdate();
double roll = drivers->bmi088.getRoll();
double pitch = drivers->bmi088.getPitch();
double yaw = drivers->bmi088.getYaw();
// double ax = drivers->bmi088.getAx();
// double ay = drivers->bmi088.getAy();
// double az = drivers->bmi088.getAz();
// double gx = drivers->bmi088.getGx();
// double gy = drivers->bmi088.getGy();
// double gz = drivers->bmi088.getGz();
s.printf("roll %f | pitch %f | yaw %f\n", roll, pitch, yaw);
}
}
}