Paso 3: código:
El código java para ADXL345 puede descargarse desde el repositorio de github-ControlEverythingCommunity
Aquí está el enlace para el mismo:
https://github.com/ControlEverythingCommunity/ADXL...
La hoja de datos de ADXL345 puede encontrarse aquí:
https://S3.amazonaws.com/controleverything.Media/c...
Hemos utilizado pi4j biblioteca de código java, los pasos para instalar pi4j en frambuesa pi se describe aquí:
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.
ADXL345
Este código está diseñado para trabajar con el módulo de Mini de I2C ADXL345_I2CS de ControlEverything.com.
https://www.controleverything.com/content/Accelor...
Import com.pi4j.io.i2c.I2CBus;
Import com.pi4j.io.i2c.I2CDevice;
Import com.pi4j.io.i2c.I2CFactory;
importación java.io.IOException;
clase pública ADXL345
{
público estático principal vacío (cadena args[]) produce excepción
{
Crear bus I2C
Bus I2CBus = I2CFactory.getInstance(I2CBus.BUS_1);
Haz I2C device, dispositivo I2C dirección es 0x53(83)
Dispositivo de I2CDevice = Bus.getDevice(0x53);
Seleccione registro de velocidad de ancho de banda
Modo normal, tarifa de datos de salida = 100 Hz
Device.Write (0x2C, (byte) 0x0A);
Seleccione registro de control de energía
Desactivar el auto-sleep
Device.Write (0x2D, (byte) 0x08);
Seleccione registro de formato de datos
Autoprueba interfaz discapacitado, 4 hilos, resolución, rango = + /-2g
Device.Write (0x31, (byte) 0x08);
Thread.Sleep(500);
Leer 6 bytes de datos
xAccl lsb xAccl msb, lsb yAccl, yAccl msb, lsb zAccl, zAccl msb
datos de Byte [] = new byte [6];
datos [0] = (byte)device.read(0x32);
datos [1] = (byte)device.read(0x33);
datos [2] = (byte)device.read(0x34);
datos [3] = (byte)device.read(0x35);
datos [4] = (byte)device.read(0x36);
datos [5] = (byte)device.read(0x37);
Convertir los datos en 10 bits
int xAccl = ((datos [1] & 0 x 03) * 256 + (datos [0] & 0xFF));
if(xAccl > 511)
{
xAccl-= 1024;
}
int yAccl = ((datos [3] & 0 x 03) * 256 + (datos [2] & 0xFF));
if(yAccl > 511)
{
yAccl-= 1024;
}
int zAccl = ((datos [5] & 0 x 03) * 256 + (datos [4] & 0xFF));
if(zAccl > 511)
{
zAccl-= 1024;
}
Datos de salida a pantalla
System.out.printf ("aceleración en el eje x: %d %n", xAccl);
System.out.printf ("aceleración en el eje y: %d %n", yAccl);
System.out.printf ("aceleración en el eje z: %d %n", zAccl);
}
}