No sé cómo establecer el rango para el acelerómetro ADXL345. Todo lo que estoy obteniendo es datos digitales en bruto. ¿Cómo lo convierto a g con un rango de 2 g para cálculos adicionales? Es para mi Proyecto del año final.
Aquí está el código:
#include "GY_85.h"
#include <Wire.h>
GY_85 GY85; //create the object
void setup()
{
Wire.begin();
delay(10);
Serial.begin(115200);
delay(10);
GY85.init();
delay(10);
}
void loop()
{
int ax = GY85.accelerometer_x( GY85.readFromAccelerometer() );
int ay = GY85.accelerometer_y( GY85.readFromAccelerometer() );
int az = GY85.accelerometer_z( GY85.readFromAccelerometer() );
int cx = GY85.compass_x( GY85.readFromCompass() );
int cy = GY85.compass_y( GY85.readFromCompass() );
int cz = GY85.compass_z( GY85.readFromCompass() );
float gx = GY85.gyro_x( GY85.readGyro() );
float gy = GY85.gyro_y( GY85.readGyro() );
float gz = GY85.gyro_z( GY85.readGyro() );
float gt = GY85.temp ( GY85.readGyro() );
float xg = ax * 0.0039;
float yg = ay * 0.0039;
float zg = az * 0.0039;
float mx = cx * 0.92;
float my = cy * 0.92;
float mz = cz * 0.92;
float xds = gx / 14.375;
float yds = gy / 14.375;
float zds = gz / 14.375;
Serial.print ( "accelerometer" );
Serial.print ( " x:" );
Serial.print ( xg );
Serial.print ( " y:" );
Serial.print ( yg );
Serial.print ( " z:" );
Serial.print ( zg );
Serial.print ( " compass" );
Serial.print ( " x:" );
Serial.print ( mx );
Serial.print ( " y:" );
Serial.print ( my );
Serial.print (" z:");
Serial.print ( mz );
Serial.print ( " gyro" );
Serial.print ( " x:" );
Serial.print ( xds );
Serial.print ( " y:" );
Serial.print ( yds );
Serial.print ( " z:" );
Serial.print ( zds );
Serial.print ( " gyro temp:" );
Serial.println( gt );
delay(100); // only read every 0,5 seconds, 10ms for 100Hz, 20ms for 50Hz
}