| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 | 
							- #include "UserTypes.h"
 
- // User data functions.  Modify these functions for your data items.
 
- // Start time for data
 
- static uint32_t startMicros;
 
- const uint8_t ADXL345_CS = 9;
 
- const uint8_t POWER_CTL = 0x2D;  //Power Control Register
 
- const uint8_t DATA_FORMAT = 0x31;
 
- const uint8_t DATAX0 = 0x32; //X-Axis Data 0
 
- const uint8_t DATAX1 = 0x33; //X-Axis Data 1
 
- const uint8_t DATAY0 = 0x34; //Y-Axis Data 0
 
- const uint8_t DATAY1 = 0x35; //Y-Axis Data 1
 
- const uint8_t DATAZ0 = 0x36; //Z-Axis Data 0
 
- const uint8_t DATAZ1 = 0x37; //Z-Axis Data 1
 
- void writeADXL345Register(const uint8_t registerAddress, const uint8_t value) {
 
-   // Max SPI clock frequency is 5 MHz with CPOL = 1 and CPHA = 1.
 
-   SPI.beginTransaction(SPISettings(5000000, MSBFIRST, SPI_MODE3));
 
-   digitalWrite(ADXL345_CS, LOW);
 
-   SPI.transfer(registerAddress);
 
-   SPI.transfer(value);
 
-   digitalWrite(ADXL345_CS, HIGH);
 
-   SPI.endTransaction();
 
- }
 
- void userSetup() {
 
-   SPI.begin();
 
-   pinMode(ADXL345_CS, OUTPUT);
 
-   digitalWrite(ADXL345_CS, HIGH);
 
-   //Put the ADXL345 into +/- 4G range by writing the value 0x01 to the DATA_FORMAT register.
 
-   writeADXL345Register(DATA_FORMAT, 0x01);
 
-   //Put the ADXL345 into Measurement Mode by writing 0x08 to the POWER_CTL register.
 
-   writeADXL345Register(POWER_CTL, 0x08);  //Measurement mode
 
- }
 
- // Acquire a data record.
 
- void acquireData(data_t* data) {
 
-   // Max SPI clock frequency is 5 MHz with CPOL = 1 and CPHA = 1.
 
-   SPI.beginTransaction(SPISettings(5000000, MSBFIRST, SPI_MODE3));
 
-   data->time = micros();
 
-   digitalWrite(ADXL345_CS, LOW);
 
-   // Read multiple bytes so or 0XC0 with address.
 
-   SPI.transfer(DATAX0 | 0XC0);
 
-   data->accel[0] = SPI.transfer(0) | (SPI.transfer(0) << 8);
 
-   data->accel[1] = SPI.transfer(0) | (SPI.transfer(0) << 8);
 
-   data->accel[2] = SPI.transfer(0) | (SPI.transfer(0) << 8);
 
-   digitalWrite(ADXL345_CS, HIGH);
 
-   SPI.endTransaction();
 
- }
 
- // Print a data record.
 
- void printData(Print* pr, data_t* data) {
 
-   if (startMicros == 0) {
 
-     startMicros = data->time;
 
-   }
 
-   pr->print(data->time - startMicros);
 
-   for (int i = 0; i < ACCEL_DIM; i++) {
 
-     pr->write(',');
 
-     pr->print(data->accel[i]);
 
-   }
 
-   pr->println();
 
- }
 
- // Print data header.
 
- void printHeader(Print* pr) {
 
-   startMicros = 0;
 
-   pr->println(F("micros,ax,ay,az"));
 
- }
 
 
  |