Arduino Nano - MMA8452Q 3-axlig 12-/ 8-bitars Digital Accelerometer handledning (3 / 4 steg)
Steg 3: kod:
Arduino koden för MMMA8452Q kan hämtas från vår github repository-ControlEverythingCommunity
Här är länken för samma:
https://github.com/ControlEverythingCommunity/MMA8...
Databladet för MMA8452Q 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.
MMA8452Q
Denna kod är utformad att fungera med MMA8452Q_I2CS I2C Mini modulen tillgänglig från ControlEverything.com.
https://www.controleverything.com/content/Accelor...
#include < Wire.h >
MMA8452Q I2C adress är 0x1C(28)
#define Addr 0x1C
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);
SELECT-kontrollen register
Wire.write(0x2A);
StandBy-läge
Wire.write(0x00);
Stoppa I2C sändningen
Wire.endTransmission();
Starta I2C-överföring
Wire.beginTransmission(Addr);
SELECT-kontrollen register
Wire.write(0x2A);
Aktivt läge
Wire.write(0x01);
Stoppa I2C sändningen
Wire.endTransmission();
Starta I2C-överföring
Wire.beginTransmission(Addr);
SELECT-kontrollen register
Wire.write(0x0E);
Ange intervall till +/-2g
Wire.write(0x00);
Stoppa I2C sändningen
Wire.endTransmission();
Delay(300);
}
void loop()
{
unsigned int data [7].
Begäran 7 byte data
Wire.requestFrom (Addr, 7);
Läst 7 byte data
staus xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb
IF(Wire.available() == 7)
{
data [0] = Wire.read();
data [1] = Wire.read();
data [2] = Wire.read();
data [3] = Wire.read();
data [4] = Wire.read();
data [5] = Wire.read();
uppgifter [6] = Wire.read();
}
Konvertera data till 12-bitar
int xAccl = ((data [1] * 256) + data[2]) / 16;
om (xAccl > 2047)
{
xAccl-= 4096;
}
int yAccl = ((data [3] * 256) + data[4]) / 16;
om (yAccl > 2047)
{
yAccl-= 4096;
}
int zAccl = ((data [5] * 256) + data[6]) / 16;
om (zAccl > 2047)
{
zAccl-= 4096;
}
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);
Delay(500);
}