Stap 3: Code:
De code van de arduino voor MMMA8452Q kan worden gedownload van onze github archief-ControlEverythingCommunity
Hier is de link voor hetzelfde:
https://github.com/ControlEverythingCommunity/MMA8...
Het gegevensblad van MMA8452Q 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.
MMA8452Q
Deze code is ontworpen om te werken met de MMA8452Q_I2CS I2C Mini Module beschikbaar vanaf ControlEverything.com.
https://www.controleverything.com/content/Accelor...
#include < Wire.h >
MMA8452Q I2C adres is 0x1C(28)
#define Addr 0x1C
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);
Besturingselement SELECT register
Wire.write(0x2A);
Standby-modus
Wire.write(0x00);
Stoppen met I2C transmissie
Wire.endTransmission();
I2C-overdracht starten
Wire.beginTransmission(Addr);
Besturingselement SELECT register
Wire.write(0x2A);
Actieve modus
Wire.write(0x01);
Stoppen met I2C transmissie
Wire.endTransmission();
I2C-overdracht starten
Wire.beginTransmission(Addr);
Besturingselement SELECT register
Wire.write(0x0E);
Reeks tot +/-2g
Wire.write(0x00);
Stoppen met I2C transmissie
Wire.endTransmission();
delay(300);
}
void loop
{
unsigned int gegevens [7];
7 bytes aan gegevens aanvragen
Wire.requestFrom (Addr, 7);
Lees 7 bytes aan gegevens
staus xAccl lsb, msb xAccl, yAccl lsb, msb yAccl, zAccl lsb, msb zAccl
if(Wire.available() == 7)
{
gegevens [0] = Wire.read();
gegevens [1] = Wire.read();
gegevens [2] = Wire.read();
gegevens [3] = Wire.read();
gegevens [4] = Wire.read();
gegevens [5] = Wire.read();
gegevens [6] = Wire.read();
}
De gegevens converteren naar 12-bits
int. xAccl = ((gegevens [1] * 256) + data[2]) / 16;
Als (xAccl > 2047)
{
xAccl-= 4096;
}
int. yAccl = ((gegevens [3] * 256) + data[4]) / 16;
Als (yAccl > 2047)
{
yAccl-= 4096;
}
int. zAccl = ((gegevens [5] * 256) + data[6]) / 16;
Als (zAccl > 2047)
{
zAccl-= 4096;
}
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);
delay(500);
}