






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.