KS0270
Nuevo
Sensor de inclinación de aceleración digital Triaxial MMA8452Q. Marca Keyestudio
El MMA8452Q es un sensor de aceleración de micromáquina capacitivo inteligente de baja potencia y tres ejes con resolución de 12 bits. Este sensor de aceleración tiene un rico rendimiento integrado, presentado con opciones flexibles programables por el usuario y dos configuraciones de pines de interrupción. La función de interrupción integrada puede ahorrar el consumo total de energía y eliminar la carga de sondear constantemente los datos en el procesador principal.
Además, MMA8452Q tiene un rango opcional de usuario de ± 2g / ± 4g / ± 8g, que puede generar datos de filtrado de paso alto y datos no filtrados en tiempo real. Este dispositivo puede configurar una función incorporada para generar una señal de interrupción de activación inercial, que permite a MMA8452Q mantener un modo de baja energía en estado estático mientras se monitorea el evento.
![]()

![]()
#include <Wire.h> // Debe incluir la biblioteca Wire para I2C
#include <SparkFun_MMA8452Q.h> // Incluye la biblioteca SFE_MMA8452Q
// Comience a usar la biblioteca creando una instancia del MMA8452Q
// clase. Lo llamaremos "aceleración". Eso es lo que haremos referencia de
// aquí en adelante.
MMA8452Q accel;
// La función de configuración simplemente comienza en serie e inicializa
// acelerómetro.
Configuración de vacío ()
{
Serial.begin (9600);
Serial.println ("Código de prueba MMA8452Q");
// ¡Elige tu aventura! Hay algunas opciones cuando se trata
// para inicializar el MMA8452Q:
// 1. init predeterminado. Esto establecerá el acelerómetro
// con un rango de escala completa de +/- 2g y una velocidad de datos de salida
// de 800 Hz (más rápido).
accel.init ();
// 2. Inicializar con la configuración FULL-SCALE. Puedes establecer la escala
// usando SCALE_2G, SCALE_4G o SCALE_8G como valor.
// Eso establecerá la escala en +/- 2g, 4g u 8g respectivamente.
//accel.init(SCALE_4G); // Descomenta esto si lo deseas
// 3. Inicializar con FULL-SCALE y DATA RATE. Si tu
// quiere control sobre qué tan rápido produce su acelerómetro
// los datos utilizan una de las siguientes opciones en el segundo parámetro:
// ODR_800, ODR_400, ODR_200, ODR_100, ODR_50, ODR_12,
// ODR_6, o ODR_1.
// Establece en 800, 400, 200, 100, 50, 12.5, 6.25 o 1.56 Hz.
//accel.init(SCALE_8G, ODR_6);
}
// La función de bucle simplemente buscará nuevos datos de la
// acelerómetro e imprímelo si está disponible.
void loop ()
{
// Usa la función accel.available () para esperar nuevos datos
// desde el acelerómetro.
if (accel.available ())
{
// Primero, use acel.read () para leer las nuevas variables:
accel.read ();
// accel.read () actualizará dos conjuntos de variables.
// * int's x, yyz almacenarán los valores de 12 bits firmados
// lectura del acelerómetro.
// * floats cx, cy y cz almacenarán el cálculo
// aceleración a partir de esos valores de 12 bits. Estas variables
// están en unidades de g.
// Verifique las dos declaraciones de funciones a continuación para ver un ejemplo
// de cómo usar estas variables.
printCalculatedAccels ();
// printAccels (); // Descomentamiento para imprimir lecturas digitales
// La biblioteca también admite la detección de retrato / paisaje
// del MMA8452Q. Echa un vistazo a esta declaración de función para
// un ejemplo de cómo usar eso.
printOrientation ();
Serial.println (); // Imprimir nueva línea cada vez.
}
}
// La función demuestra cómo usar accel.x, accel.y y
// variables accel.z
// Antes de usar estas variables debes llamar a accel.read ()
// función!
void printAccels ()
{
Serial.print (accel.x, 3);
Serial.print ("\ t");
Serial.print (accel.y, 3);
Serial.print ("\ t");
Serial.print (accel.z, 3);
Serial.print ("\ t");
}
// Esta función demuestra cómo usar el archivo accel.cx, accel.cy,
// y las variables accel.cz
// Antes de usar estas variables debes llamar a accel.read ()
// función!
void printCalculatedAccels ()
{
Serial.print (accel.cx, 3);
Serial.print ("\ t");
Serial.print (accel.cy, 3);
Serial.print ("\ t");
Serial.print (accel.cz, 3);
Serial.print ("\ t");
}
// Esta función demuestra cómo usar el archivo accel.readPL ()
// función, que lee el estado de retrato / paisaje de
// sensor.
void printOrientation ()
{
// accel.readPL () devolverá un byte que contiene información
// sobre la orientación del sensor. Será cualquiera
// PORTRAIT_U, PORTRAIT_D, LANDSCAPE_R, LANDSCAPE_L o
// LOCKOUT.
byte pl = accel.readPL ();
interruptor (pl)
{
caso PORTRAIT_U:
Serial.print ("Portrait Up");
descanso;
estuche PORTRAIT_D:
Serial.print ("Portrait Down");
descanso;
caso LANDSCAPE_R:
Serial.print ("Paisaje a la derecha");
descanso;
caso LANDSCAPE_L:
Serial.print ("Paisaje a la izquierda");
descanso;
caso LOCKOUT:
Serial.print ("Flat");
descanso;
}
}
Cablee como el diagrama anterior y grabe el código, luego de encenderlo, luego abra el monitor serie para mostrar la aceleración triaxial del sensor y su estado, como se muestra en el gráfico a continuación.