Gränssnitt för 3-axlig gyroskop Sensor BMG160 med partikeln (4 / 5 steg)
Steg 4: 3-axlig gyroskop mätning partikel koden:
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 >
BMG160 I2C adress är 0x68(104)
#define Addr 0x68
int xGyro = 0, yGyro = 0, zGyro = 0;
void setup()
{
Variabeln
Particle.Variable("i2cdevice","BMG160");
Particle.Variable("xGyro",xGyro);
Particle.Variable("yGyro",yGyro);
Particle.Variable("zGyro",zGyro);
Initialisera I2C kommunikation som MASTER
Wire.BEGIN();
Initialisera seriell kommunikation
Serial.BEGIN(9600);
Starta I2C-överföring
Wire.beginTransmission(Addr);
Välj Mätområde register
Wire.write(0x0F);
Konfigurera fullt skalutslag 2000 dps
Wire.write(0x80);
Stoppa I2C sändningen
Wire.endTransmission();
Starta I2C-överföring
Wire.beginTransmission(Addr);
Välj bandbredd register
Wire.write(0x10);
Ställa in bandbredden = 200 Hz
Wire.write(0x04);
Stoppa I2C sändningen
Wire.endTransmission();
Delay(300);
}
void loop()
{
unsigned int data [6].
Starta I2C-överföring
Wire.beginTransmission(Addr);
Välj dataregister
Wire.write(0x02);
Stoppa I2C sändningen
Wire.endTransmission();
Begäran 6 byte data
Wire.requestFrom (Addr, 6);
Läst 6 byte data
xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro 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
xGyro = ((data [1] * 256) + data[0]);
om (xGyro > 32767)
{
xGyro-= 65536;
}
yGyro = ((data [3] * 256) + data[2]);
om (yGyro > 32767)
{
yGyro-= 65536;
}
zGyro = ((data [5] * 256) + data[4]);
om (zGyro > 32767)
{
zGyro-= 65536;
}
Utdata till dashboard
Particle.publish ("x-axeln av Rotation:", String(xGyro));
Particle.publish ("y-axeln av Rotation:", String(yGyro));
Particle.publish ("z-axeln av Rotation:", String(zGyro));
Delay(1000);
}