Acceleration mätning med hjälp av BMA250 och Arduino Nano (3 / 4 steg)
Steg 3: Arduino kod för Acceleration mätning:
Kan börja med arduino koden nu.
När du använder modulen sensor med arduino, inkluderar vi Wire.h bibliotek. "Wire" bibliotek innehåller funktioner som underlättar i2c kommunikationen mellan sensorn och arduino styrelsen.
Hela arduino koden ges nedan för att underlätta för användaren:
#include < Wire.h >
BMA250 I2C adress är 0x18(24)
#define Addr 0x18
void setup()
{
Initialisera I2C kommunikation som MASTER
Wire.BEGIN();
Initialisera seriell kommunikation, ange baudvärde = 9600
Serial.BEGIN(9600);
Starta I2C-överföring
Wire.beginTransmission(Addr);
Välj intervall urval register
Wire.write(0x0F);
Ange intervall +/-2g
Wire.write(0x03);
Stoppa I2C sändningen
Wire.endTransmission();
Starta I2C-överföring
Wire.beginTransmission(Addr);
Välj bandbredd register
Wire.write(0x10);
Ställa in bandbredden 7.81 Hz
Wire.write(0x08);
Stoppa I2C sändningen
Wire.endTransmission(); Delay(300);}
void loop()
{
unsigned int data [0];
Starta I2C-överföring
Wire.beginTransmission(Addr);
Välj Data register (0x02 − 0x07)
Wire.write(0x02);
Stoppa I2C sändningen
Wire.endTransmission();
Begäran 6 byte
Wire.requestFrom (Addr, 6);
Läs de sex byte
xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb
IF(Wire.available() == 6)
{
data [0] = Wire.read();
data [1] = Wire.read();
data [2] = Wire.read();
data [3] = Wire.read();
data [4] = Wire.read();
data [5] = Wire.read();
}
Delay(300);
Konvertera data till 10 bitar
flyta xAccl = ((data [1] * 256,0) + (data [0] & 0xC0)) / 64;
om (xAccl > 511)
{
xAccl-= 1024;
}
flyta yAccl = ((data [3] * 256,0) + (data [2] & 0xC0)) / 64;
om (yAccl > 511)
{
yAccl-= 1024;
}
flyta zAccl = ((data [5] * 256,0) + (data [4] & 0xC0)) / 64;
om (zAccl > 511)
{
zAccl-= 1024;
}
Utdata till seriell bildskärmen
Serial.Print ("Acceleration i x-axeln:");
Serial.println(xAccl);
Serial.Print ("Acceleration i y-axeln:");
Serial.println(yAccl);
Serial.Print ("Acceleration i z-axeln:");
Serial.println(zAccl);
}
I tråd bibliotek används Wire.write() och Wire.read() för att skriva kommandon och läsa sensor utdata. Serial.Print() och Serial.println() används för att Visa sensor utdata på den seriella monitorn för arduino IDE.
Sensor utdata visas i bilden ovan.