Stap 2: De Code!
Ik heb geüpload vervolgens de volgende code uit http://www.geeetech.com/wiki/index.php/BMA180_Triple_Axis_Accelerometer_Breakout
Code van de steekproef van de versnellingsmeter van BMA180 triple as / /
www.geeetech.com//
//
#include < wire.h >
#define BMA180 0x40 //address van de versnellingsmeter
#define RESET 0x10
#define PWR 0x0D
#define BW 0X20
#define bereik 0X35
#define gegevens 0x02
//
int offx = 31;
int uitJ = 47;
int offz = -23;
//
VOID Setup
{
Serial.begin(9600);
Wire.begin();
Serial.println ("Demo begon, initialiseren sensoren");
AccelerometerInit();
Serial.println ("sensoren zijn geïnitialiseerd");
}
//
VOID AccelerometerInit()
//
{
byte temp [1];
byte temp1;
//
writeTo(BMA180,RESET,0xB6);
modus wakker
writeTo(BMA180,PWR,0x10);
Low-pass filter,
readFrom (BMA180, BW, 1, temp);
temp1 = temp [0] & 0x0F;
writeTo (BMA180, BW, temp1);
bereik +/-2g
readFrom (BMA180, bereik, 1, temp);
temp1 = (temp [0] & 0xF1) | 0x04;
writeTo(BMA180,RANGE,temp1);
}
//
VOID AccelerometerRead()
{
in de 3 as-gegevens lezen, is elk 14 bits
afdrukken van de gegevens naar terminal
int n = 6;
byte resultaat [5];
readFrom (BMA180, gegevens, n, resultaat);
int x = ((resultaat [0] | [1] << 8 >> resultaat 2) + offx;
zweven x1 = x / 4096.0;
Serial.Print("x=");
Serial.Print(x1);
Serial.Print("g");
//
int y = ((resultaat [2] | [3] << 8 >> resultaat 2) + uitJ;
zweven y1 = y/4096.0;
Serial.Print(",y=");
Serial.Print(Y1);
Serial.Print("g");
//
int z = ((resultaat [4] | [5] << 8 >> resultaat 2) + offz;
zweven z1 = z/4096.0;
Serial.Print(",z=");
Serial.Print(Z1);
Serial.println("g");
}
//
void loop
{
AccelerometerRead();
delay(300); uitvoer vertragen
}
//
//---------------- Functions--------------------
Val schrijft naar adres registreren op ACC
VOID writeTo (int apparaat, byte adres, byte val)
{
Wire.beginTransmission(DEVICE); overdracht naar ACC starten
Wire.write(Address); Verzend adres registreren
Wire.write(val); waarde te schrijven verzenden
Wire.endTransmission(); einde trnsmisson
}
leest num bytes vanaf adres registreren in aan buff array
VOID readFrom (int apparaat, byte adres, int num, byte buff[])
{
Wire.beginTransmission(DEVICE); overdracht naar ACC starten
Wire.write(Address); reguster adres verzenden
Wire.endTransmission(); einde transmissie
Wire.beginTransmission(DEVICE); overdracht naar ACC starten
Wire.requestFrom(DEVICE,num); 6 beetjes aanvraagt bij ACC
int i = 0;
while(Wire.available()) //ACC kan abnormale
{
Buff [i] = Wire.read(); Ontvangen van een byte
i ++;
}
Wire.endTransmission(); einde transmissie
}