Acceleration mätning med hjälp av BMA250 och partikel Photon (3 / 4 steg)
Steg 3: Kod för att mäta acceleration:
Kan börja med partikel koden nu.
När du använder modulen sensor med arduino, inkluderar vi application.h och spark_wiring_i2c.h bibliotek. "application.h" och spark_wiring_i2c.h bibliotek innehåller funktioner som underlättar i2c kommunikationen mellan sensorn och partikeln.
Hela partikel koden ges nedan för att underlätta för användaren:
#include < application.h >
#include < spark_wiring_i2c.h >
BMA250 I2C adress är 0x18(24)
#define Addr 0x18
int xAccl = 0, yAccl = 0, zAccl = 0;
void setup()
{
Variabeln
Particle.Variable("i2cdevice","BMA250");
Particle.Variable("xAccl",xAccl);
Particle.Variable("yAccl",yAccl);
Particle.Variable("zAccl",zAccl);
Initiera I2C kommunikation som MASTER
Wire.BEGIN();
Initiera 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
xAccl = ((data [1] * 256) + (data [0] & 0xC0)) / 64;
om (xAccl > 511)
{
xAccl-= 1024;
}
yAccl = ((data [3] * 256) + (data [2] & 0xC0)) / 64;
om (yAccl > 511)
{
yAccl-= 1024;
}
zAccl = ((data [5] * 256) + (data [4] & 0xC0)) / 64;
om (zAccl > 511)
{
zAccl-= 1024;
}
Utdata till dashboard
Particle.publish ("Acceleration i x-axeln:", String(xAccl));
Delay(1000);
Particle.publish ("Acceleration i y-axeln:", String(yAccl));
Delay(1000);
Particle.publish ("Acceleration i z-axeln:", String(zAccl));
Delay(1000);
}
Particle.Variable() funktion skapar variabler för att lagra utdata från sensorn och Particle.publish() funktion visar utdata på instrumentbrädan av webbplatsen.
Sensor utdata visas i bilden ovan som referens.