Schritt 3: Code:
Der Partikel-Code für MPU-6000 kann heruntergeladen werden von unserem Github Repository-ControlEverythingCommunity
Hier ist der Link für das gleiche:
https://github.com/ControlEverythingCommunity/MPU-...
Das Datenblatt des MPU-6000 finden Sie hier:
https://S3.amazonaws.com/controleverything.Media/c...
Wir haben zwei Bibliotheken für Partikel Code verwendet die application.h und spark_wiring_i2c.h sind. Spark_wiring_i2c Bibliothek ist erforderlich, um die I2C Kommunikation mit dem Sensor zu erleichtern.
Sie können auch kopieren Sie den Code von hier, es ist wie folgt gegeben:
Mit einer freien Lizenz vertrieben.
Verwenden Sie es wie Sie wollen, profitieren oder frei, vorausgesetzt, es passt in die Lizenzen für die damit verbundenen arbeiten.
MPU-6000
Dieser Code dient zur Arbeit mit dem MPU-6000_I2CS I2C-Mini-Modul von ControlEverything.com zur Verfügung.
https://www.controleverything.com/Content/Accelor...
#include < application.h >
#include < spark_wiring_i2c.h >
MPU-6000 I2C Adresse ist 0x68(104)
#define Addr 0x68
Int xGyro = 0, yGyro = 0 zGyro = 0 xAccl = 0, yAccl = 0, zAccl = 0;
void setup()
{
Variable setzen
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);
I2C Kommunikation als Master zu initialisieren
Wire.Begin();
Initialisieren, seriellen Kommunikation, eingestellte Baudrate = 9600
Serial.Begin(9600);
I2C Übertragung starten
Wire.beginTransmission(Addr);
Wählen Sie Gyroskop-Konfigurations-register
Wire.Write(0x1B);
Volle Maßstabsbereich = 2000 Dps
Wire.Write(0x18);
I2C Übertragung stoppen
Wire.endTransmission();
I2C Übertragung starten
Wire.beginTransmission(Addr);
Wählen Sie Beschleunigungsmesser-Konfigurations-register
Wire.Write(0x1C);
Volle Maßstabsbereich = +/-16g
Wire.Write(0x18);
I2C Übertragung stoppen
Wire.endTransmission();
I2C Übertragung starten
Wire.beginTransmission(Addr);
Wählen Sie Energieverwaltung registrieren
Wire.Write(0x6B);
PLL mit xGyro Bezug
Wire.Write(0x01);
I2C Übertragung stoppen
Wire.endTransmission();
Delay(300);
}
void loop()
{
unsigned Int Daten [6];
I2C Übertragung starten
Wire.beginTransmission(Addr);
Wählen Sie Datenregister
Wire.Write(0x3B);
I2C Übertragung stoppen
Wire.endTransmission();
6 Byte an Daten anfordern
Wire.requestFrom (Addr, 6);
Lesen Sie 6 Byte an Daten
Wenn (Wire.available() == 6)
{
Daten [0] = Wire.read();
Daten [1] = Wire.read();
Daten [2] = Wire.read();
Daten [3] = Wire.read();
Daten [4] = Wire.read();
Daten [5] = Wire.read();
}
Delay(800);
Konvertieren Sie die Daten
xAccl = ((Daten [1] * 256) + data[0]);
Wenn (xAccl > 32767)
{
xAccl = 65536;
}
yAccl = ((Daten [3] * 256) + data[2]);
Wenn (yAccl > 32767)
{
yAccl = 65536;
}
zAccl = ((Daten [5] * 256) + data[4]);
Wenn (zAccl > 32767)
{
zAccl = 65536;
}
Delay(800);
I2C Übertragung starten
Wire.beginTransmission(Addr);
Wählen Sie Datenregister
Wire.Write(0x43);
I2C Übertragung stoppen
Wire.endTransmission();
6 Byte an Daten anfordern
Wire.requestFrom (Addr, 6);
Lesen Sie 6 Byte an Daten
Wenn (Wire.available() == 6)
{
Daten [0] = Wire.read();
Daten [1] = Wire.read();
Daten [2] = Wire.read();
Daten [3] = Wire.read();
Daten [4] = Wire.read();
Daten [5] = Wire.read();
}
Delay(800);
Konvertieren Sie die Daten
xGyro = ((Daten [1] * 256) + data[0]);
Wenn (xGyro > 32767)
{
xGyro = 65536;
}
yGyro = ((Daten [3] * 256) + data[2]);
Wenn (yGyro > 32767)
{
yGyro = 65536;
}
zGyro = ((Daten [5] * 256) + data[4]);
Wenn (zGyro > 32767)
{
zGyro = 65536;
}
Delay(800);
Ausgabedaten-Dashboard
Particle.Publish ("Beschleunigung in X-Achse:", String(xAccl));
Particle.Publish ("Beschleunigung in Y-Achse:", String(yAccl));
Particle.Publish ("Beschleunigung in z-Achse:", String(zAccl));
Delay(1000);
Particle.Publish ("X-Achse der Drehung:", String(xGyro));
Particle.Publish ("Y-Achse der Drehung:", String(yGyro));
Particle.Publish ("z-Achse der Drehung:", String(zGyro));
Delay(1000);
}