Arduino Nano - MPU-6000 6 axel Motion Tracking Sensor handledning (3 / 4 steg)
Steg 3: kod:
Arduino 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 inkluderar bibliotek Wire.h att underlätta I2c kommunikationen av sensorn med Arduino styrelsen.
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 < Wire.h >
MPU-6000 I2C adress är 0x68(104)
#define Addr 0x68
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 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
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();
}
Konvertera data
int xAccl = data [0] * 256 + data [1].
int yAccl = data [2] * 256 + data [3].
int zAccl = data [4] * 256 + data [5].
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
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();
}
Konvertera data
int xGyro = data [0] * 256 + data [1].
int yGyro = data [2] * 256 + data [3].
int zGyro = data [4] * 256 + data [5].
Utdata till seriell monitor
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);
Serial.Print ("x-axeln av Rotation:");
Serial.println(xGyro);
Serial.Print ("y-axeln av Rotation:");
Serial.println(yGyro);
Serial.Print ("z-axeln av Rotation:");
Serial.println(zGyro);
Delay(500);
}