Paso 2: El código!
Luego subí el siguiente código de http://www.geeetech.com/wiki/index.php/BMA180_Triple_Axis_Accelerometer_Breakout
BMA180 ejes acelerómetro muestra código / /
www.geeetech.com//
//
#include < wire.h >
#define BMA180 0 x 40 //address del acelerómetro
#define RESET 0 x 10
#define PWR 0x0D
#define BW 0 x 20
#define rango 0X35
#define datos 0 x 02
//
int offx = 31;
offy int = 47;
milFD int = -23;
//
void setup()
{
Serial.Begin(9600);
Wire.Begin();
Serial.println ("Demo iniciado, inicialización de los sensores");
AccelerometerInit();
Serial.println ("sensores han sido inicializados");
}
//
void AccelerometerInit()
//
{
temp de Byte [1];
temp1 bytes;
//
writeTo(BMA180,RESET,0xB6);
modo de despertador
writeTo(BMA180,PWR,0x10);
filtro de paso bajo,
readFrom (BMA180, BW, 1, temp);
temp1 = temp [0] & 0x0F;
writeTo (BMA180, BW, temp1);
rango de +/-2g
readFrom (BMA180, gama, 1, temp);
temp1 = (temp [0] & 0xF1) | 0 x 04;
writeTo(BMA180,RANGE,temp1);
}
//
void AccelerometerRead()
{
leer en los datos de 3 ejes, cada uno es de 14 bits
imprimir los datos al terminal de
int n = 6;
resultado de Byte [5];
readFrom (BMA180, resultado n, datos,);
int x = ((resultado [0] | resultado [1] << 8 >> 2) + offx;
Float x1 = x / 4096.0;
Serial.Print("x=");
Serial.Print(x1);
Serial.Print("g");
//
int y = ((resultado [2] | resultado [3] << 8 >> 2) + offy;
Float y1 = y/4096.0;
Serial.Print(",y=");
Serial.Print(Y1);
Serial.Print("g");
//
int z = ((resultado [4] | resultado [5] << 8 >> 2) + milFD;
Float z1 = z/4096.0;
Serial.Print(",z=");
Serial.Print(Z1);
Serial.println("g");
}
//
void loop()
{
AccelerometerRead();
Delay(300); reducir la velocidad de salida
}
//
//---------------- Functions--------------------
Escribe registro de dirección de val en ACC
writeTo vacío (int dispositivo, dirección de byte, byte val)
{
Wire.beginTransmission(DEVICE); iniciar transmisión a ACC
Wire.Write(Address); Dirección de registro
Wire.Write(Val); enviar valor a escribir
Wire.endTransmission(); trnsmisson final
}
Lee num bytes a partir de registro de dirección en a matriz de buff
void readFrom (int dispositivo, dirección de byte, int num, buff[]) bytes
{
Wire.beginTransmission(DEVICE); iniciar transmisión a ACC
Wire.Write(Address); Dirección reguster
Wire.endTransmission(); transmisión final
Wire.beginTransmission(DEVICE); iniciar transmisión a ACC
Wire.requestFrom(DEVICE,num); solicitud de 6 pedacitos de ACC
int i = 0;
while(Wire.Available()) //ACC puede anormal
{
Buff [i] = Wire.read(); recibir un byte
i ++;
}
Wire.endTransmission(); transmisión final
}