Stap 3: Code:
De code van de arduino voor MPU-6000 kan worden gedownload van onze github archief-ControlEverythingCommunity
Hier is de link voor hetzelfde:
https://github.com/ControlEverythingCommunity/MPU-...
Het gegevensblad van MPU-6000 kan hier worden gevonden:
https://S3.amazonaws.com/controleverything.Media/c...
We nemen de bibliotheek Wire.h om de I2c communicatie van de sensor met de Arduino board.
U kunt ook de code kopiëren vanaf hier, het wordt als volgt gegeven:
Gedistribueerd met een licentie van de vrije wil.
Gebruik het elke manier wilt u, op de winst of het gratis, mits het past in de licenties van de bijbehorende werken.
MPU-6000
Deze code is ontworpen om te werken met de MPU-6000_I2CS I2C Mini Module beschikbaar vanaf ControlEverything.com.
https://www.controleverything.com/content/Accelor...
#include < Wire.h >
MPU-6000 I2C adres is 0x68(104)
#define Addr 0x68
VOID Setup
{
I2C communicatie als Master initialiseren
Wire.begin();
Initialiseren van seriële communicatie, set baud-rate = 9600
Serial.begin(9600);
I2C-overdracht starten
Wire.beginTransmission(Addr);
Selecteer gyroscoop configuratie register
Wire.write(0x1B);
Bereik van het volledige schaalbereik = 2000 dps
Wire.write(0x18);
Stop I2C transmissie
Wire.endTransmission();
I2C-overdracht starten
Wire.beginTransmission(Addr);
Selecteer versnellingsmeter configuratie register
Wire.write(0x1C);
Bereik van het volledige schaalbereik = +/-16g
Wire.write(0x18);
Stop I2C transmissie
Wire.endTransmission();
I2C-overdracht starten
Wire.beginTransmission(Addr);
Selecteer energiebeheer registreren
Wire.write(0x6B);
PLL met xGyro referentie
Wire.write(0x01);
Stop I2C transmissie
Wire.endTransmission();
delay(300);
}
void loop
{
unsigned int gegevens [6];
I2C-overdracht starten
Wire.beginTransmission(Addr);
Selecteer gegevens registreren
Wire.write(0x3B);
Stop I2C transmissie
Wire.endTransmission();
6 bytes aan gegevens aanvragen
Wire.requestFrom (Addr, 6);
Lees 6 byte van de gegevens
if(Wire.available() == 6)
{
gegevens [0] = Wire.read();
gegevens [1] = Wire.read();
gegevens [2] = Wire.read();
gegevens [3] = Wire.read();
gegevens [4] = Wire.read();
gegevens [5] = Wire.read();
}
De gegevens converteren
int xAccl gegevens [0] = * 256 + gegevens [1];
int yAccl gegevens [2] = * 256 + gegevens [3];
int zAccl = data [4] * 256 + gegevens [5];
I2C-overdracht starten
Wire.beginTransmission(Addr);
Selecteer gegevens registreren
Wire.write(0x43);
Stop I2C transmissie
Wire.endTransmission();
6 bytes aan gegevens aanvragen
Wire.requestFrom (Addr, 6);
Lees 6 byte van de gegevens
if(Wire.available() == 6)
{
gegevens [0] = Wire.read();
gegevens [1] = Wire.read();
gegevens [2] = Wire.read();
gegevens [3] = Wire.read();
gegevens [4] = Wire.read();
gegevens [5] = Wire.read();
}
De gegevens converteren
int xGyro gegevens [0] = * 256 + gegevens [1];
int yGyro gegevens [2] = * 256 + gegevens [3];
int zGyro = data [4] * 256 + gegevens [5];
Uitvoergegevens naar seriële monitor
Serial.Print ("versnelling van de x-as:");
Serial.println(xAccl);
Serial.Print ("versnelling van de y-as:");
Serial.println(yAccl);
Serial.Print ("versnelling in de z-as:");
Serial.println(zAccl);
Serial.Print ("x-as van rotatie:");
Serial.println(xGyro);
Serial.Print ("y-as van rotatie:");
Serial.println(yGyro);
Serial.Print ("z-as van rotatie:");
Serial.println(zGyro);
delay(500);
}