Paso 3: código:
El código de arduino para MMMA8452Q puede descargarse desde el repositorio de github-ControlEverythingCommunity
Aquí está el enlace para el mismo:
https://github.com/ControlEverythingCommunity/MMA8...
La hoja de datos de MMA8452Q se puede encontrar aquí:
https://S3.amazonaws.com/controleverything.Media/c...
Incluimos la biblioteca Wire.h para facilitar la comunicación I2c del sensor con la placa Arduino.
También puede copiar el código desde aquí, se da como sigue:
Distribuido con una licencia de libre albedrío.
Se usa cualquier forma desea, beneficio o libre, siempre cabe en las licencias de sus obras anexas.
MMA8452Q
Este código está diseñado para trabajar con el módulo de Mini de I2C MMA8452Q_I2CS de ControlEverything.com.
https://www.controleverything.com/content/Accelor...
#include < Wire.h >
Dirección I2C MMA8452Q es 0x1C(28)
#define Addr 0x1C
void setup()
{
Inicializar la comunicación I2C como maestro
Wire.Begin();
Inicializar la comunicación Serial, juego velocidad en baudios = 9600
Serial.Begin(9600);
Iniciar transmisión I2C
Wire.beginTransmission(Addr);
Registro de control Select
Wire.Write(0x2A);
Modo de espera
Wire.Write(0x00);
Detener la transmisión I2C
Wire.endTransmission();
Iniciar transmisión I2C
Wire.beginTransmission(Addr);
Registro de control Select
Wire.Write(0x2A);
Modo activo
Wire.Write(0x01);
Detener la transmisión I2C
Wire.endTransmission();
Iniciar transmisión I2C
Wire.beginTransmission(Addr);
Registro de control Select
Wire.Write(0x0E);
Rango de +-2g
Wire.Write(0x00);
Detener la transmisión I2C
Wire.endTransmission();
Delay(300);
}
void loop()
{
unsigned int datos [7];
Solicitud de 7 bytes de datos
Wire.requestFrom (Addr, 7);
Leer 7 bytes de datos
Estado xAccl lsb, xAccl msb, lsb yAccl, yAccl msb, lsb zAccl, zAccl msb
if(Wire.Available() == 7)
{
datos [0] = Wire.read();
datos [1] = Wire.read();
datos [2] = Wire.read();
datos [3] = Wire.read();
datos [4] = Wire.read();
datos [5] = Wire.read();
datos [6] = Wire.read();
}
Convertir los datos en 12 bits
int xAccl = ((datos [1] * 256) + data[2]) / 16;
Si (xAccl > 2047)
{
xAccl-= 4096;
}
int yAccl = ((datos [3] * 256) + data[4]) / 16;
Si (yAccl > 2047)
{
yAccl-= 4096;
}
int zAccl = ((datos [5] * 256) + data[6]) / 16;
Si (zAccl > 2047)
{
zAccl-= 4096;
}
Salida de datos monitor serial
Serial.Print ("aceleración en el eje x:");
Serial.println(xAccl);
Serial.Print ("aceleración en el eje:");
Serial.println(yAccl);
Serial.Print ("aceleración en el eje z:");
Serial.println(zAccl);
Delay(500);
}