Check program for 9DOF stick from Sparkfun.com
Dependencies: mbed ITG3200 HMC5843 ADXL345
main.cpp
- Committer:
- Digixx
- Date:
- 2011-10-07
- Revision:
- 0:9410b3e6aea5
- Child:
- 1:18f68a0b0793
File content as of revision 0:9410b3e6aea5:
#include "mbed.h"
#include "HMC5843.h"
#include "ADXL345.h"
#include "ITG3200.h"
DigitalOut myled(LED1);
HMC5843 cmp(p28, p27); // sda, scl
ADXL345 acc(p28, p27); // sda, scl
ITG3200 gyr(p28, p27); // sda, scl
Serial pc(USBTX, USBRX); // tx, rx
int main() {
pc.baud(115200);
//values x,y,z
int readings[3];
//ID Buffer
char buffer[3];
pc.printf("%c" ,13,10,13,10,13,10);
// do init stuff
//Continuous mode, , 10Hz measurement rate.
// HMC5843_CONTINUOUS, HMC5843_10HZ_NORMAL HMC5843_1_0GA
cmp.setDefault();
//Wait some time(Need at least 5ms)
wait(0.1);
cmp.getAddress(buffer);
pc.printf("cmp Id=%c%c%c \n\r",buffer[0],buffer[1],buffer[2]);
// These are here to test whether any of the initialization fails. It will print the failure
if (acc.setPowerControl(0x00)){
pc.printf("acc: didn't intitialize power control\n");
return 0; }
wait(.001);
//Full resolution, +/-16g, 4mg/LSB.
if(acc.setDataFormatControl(0x0B)){
pc.printf("didn't set data format\n");
return 0; }
wait(.001);
//3.2kHz data rate.
if(acc.setDataRate(ADXL345_3200HZ)){
pc.printf("didn't set data rate\n");
return 0; }
wait(.001);
//Measurement mode.
if(acc.setPowerControl(MeasurementMode)) {
pc.printf("didn't set the power control to measurement\n");
return 0; }
pc.printf("Acc Id=%x \n\r", acc.getDeviceID());
pc.printf("%c" ,13,10);
//Set highest bandwidth.
gyr.setLpBandwidth(LPFBW_256HZ);
pc.printf("Gyro Id=%x \n\r", gyr.getWhoAmI());
pc.printf("%c" ,13,10);
wait(1);
while (1) {
cmp.readData(readings);
pc.printf("C %+4i %+4i %+4i",(int16_t)readings[0],(int16_t)readings[1],(int16_t)readings[2]);
wait(0.05);
acc.getOutput(readings);
pc.printf(" A %+5i %+5i %+5i",(int16_t)readings[0],(int16_t)readings[1],(int16_t)readings[2]);
wait(0.05);
pc.printf(" G %+5i %+5i %+5i",(int16_t)gyr.getGyroX(),(int16_t)gyr.getGyroY(),(int16_t)gyr.getGyroX());
pc.printf("%c" ,13,10);
wait(0.05);
if (myled) {
myled=0;
} else {
myled=1;
}
}
}
Uwe Gartmann