ADXL345 - Beschleunigung in 3-Achsen über SPI auslesen
Der auf dem Funkmodul Preon32 eingesetzte Mikrocontroller verfügt über eine Vielzahl von Schnittstellen.
Über diese lassen sich sowohl Sensoren als auch Aktoren mit unterschiedlichen Protokollen ansteuern. Für das Funkmodul passend
entwickelt bietet VIRTENIO ein Sensormodul VariSen für das Preon32Shuttle an, dass eine Vielzahl von Sensoren
für unterschiedliche Messgrößen enthält.
In diesem Beispiel wird ein digitaler Sensor für Beschleunigung (ADXL345) am SPI betrieben. Der Sensor verfügt über eine ChipSelect-Leitung, um ihn einzuschalten. Der Treiber ermöglicht eine Konfiguration, so dass in diesem Beispiel eine kontinuierliche Erfassung der Beschleunigung eingestellt ist. Im Programmverlauf werden Beschleunigung in einem zeitlichen Abstand von 1000ms in 3-Achsen (X, Y, Z) erfasst und als Sensorwerte ausgegeben.
/*
* Copyright (c) 2011., Virtenio GmbH
* All rights reserved.
*/
package com.virtenio.webdemo.sensor;
import com.virtenio.drivers.gpio.GPIO;
import com.virtenio.drivers.gpio.NativeGPIO;
import com.virtenio.drivers.sensors.spi.ADXL345;
import com.virtenio.drivers.spi.NativeSPI;
import java.io.IOException;
public class AccelerationI2C {
public static void main(String[] args) throws IOException, InterruptedException {
NativeSPI spi = NativeSPI.getInstance(2);
spi.close();
spi.open(ADXL345.SPI_MODE, ADXL345.SPI_BIT_ORDER, ADXL345.SPI_MAX_SPEED);
GPIO accelCs = NativeGPIO.getInstance(20);
ADXL345 accelerationSensor = new ADXL345(spi, accelCs);
accelerationSensor.setDataFormat(ADXL345.DATA_FORMAT_RANGE_2G);
accelerationSensor.setDataRate(ADXL345.DATA_RATE_3200HZ);
accelerationSensor.setPowerControl(ADXL345.POWER_CONTROL_MEASURE);
while (true) {
// capture measured value every 1000ms
short[] ch = new short[3];
int offset = 0;
accelerationSensor.getValues(ch, offset);
System.out.println("Acceleration " +
"CH[0]:" + ch[0] + " " +
"CH[1]:" + ch[1] + " " +
"CH[2]:" + ch[2]);
Thread.sleep(1000);
}
}
}


