Partikel Photon - MPU-6000 6-axliga Motion Tracking Sensor handledning (3 / 4 steg)
Steg 3: kod:
Partikel koden för MPU-6000 kan hämtas från vår github repository-ControlEverythingCommunity
Här är länken för samma:
https://github.com/ControlEverythingCommunity/MPU-...
Databladet för MPU-6000 kan hittas här:
https://s3.amazonaws.com/controleverything.Media/c...
Vi har använt två bibliotek för partikel-koden, som är application.h och spark_wiring_i2c.h. Spark_wiring_i2c bibliotek krävs för att underlätta I2C kommunikationen med sensor.
Du kan också kopiera koden från här, det ges enligt följande:
Distribueras med en fri vilja licens.
Använda det något sätt du vill, vinst eller gratis, förutsatt att den passar i licenser av dess tillhörande arbeten.
MPU-6000
Denna kod är utformad att fungera med MPU-6000_I2CS I2C Mini modulen tillgänglig från ControlEverything.com.
https://www.controleverything.com/content/Accelor...
#include < application.h >
#include < spark_wiring_i2c.h >
MPU-6000 I2C adress är 0x68(104)
#define Addr 0x68
int xGyro = 0, yGyro = 0, zGyro = 0, xAccl = 0, yAccl = 0, zAccl = 0;
void setup()
{
Variabeln
Particle.Variable ("i2cdevice", "MPU-6000");
Particle.Variable ("xAccl", xAccl);
Particle.Variable ("yAccl", yAccl);
Particle.Variable ("zAccl", zAccl);
Particle.Variable ("xGyro", xGyro);
Particle.Variable ("yGyro", yGyro);
Particle.Variable ("zGyro", zGyro);
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 gyroskop konfigurationen register
Wire.write(0x1B);
Fullskaligt utbud = 2000 dps
Wire.write(0x18);
Stoppa I2C sändningen
Wire.endTransmission();
Starta I2C-överföring
Wire.beginTransmission(Addr);
Välj accelerometer konfigurationen register
Wire.write(0x1C);
Fullskaligt utbud = +/-16g
Wire.write(0x18);
Stoppa I2C sändningen
Wire.endTransmission();
Starta I2C-överföring
Wire.beginTransmission(Addr);
Välj power management register
Wire.write(0x6B);
PLL med xGyro referens
Wire.write(0x01);
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(0x3B);
Stoppa I2C sändningen
Wire.endTransmission();
Begäran 6 byte data
Wire.requestFrom (Addr, 6);
Läst 6 byte data
om (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(800);
Konvertera data
xAccl = ((data [1] * 256) + data[0]);
om (xAccl > 32767)
{
xAccl-= 65536;
}
yAccl = ((data [3] * 256) + data[2]);
om (yAccl > 32767)
{
yAccl-= 65536;
}
zAccl = ((data [5] * 256) + data[4]);
om (zAccl > 32767)
{
zAccl-= 65536;
}
Delay(800);
Starta I2C-överföring
Wire.beginTransmission(Addr);
Välj dataregister
Wire.write(0x43);
Stoppa I2C sändningen
Wire.endTransmission();
Begäran 6 byte data
Wire.requestFrom (Addr, 6);
Läst 6 byte data
om (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(800);
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;
}
Delay(800);
Utdata till dashboard
Particle.publish ("Acceleration i x-axeln:", String(xAccl));
Particle.publish ("Acceleration i y-axeln:", String(yAccl));
Particle.publish ("Acceleration i z-axeln:", String(zAccl));
Delay(1000);
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);
}