#include <Wire.h>
// ADXL345 I2C address is 0x53(83)
#define ADXL345_ADDR 0x53
void setup() {
// Initialize I2C communication
Wire.begin();
// Initialize Serial communication
Serial.begin(115200);
// Start I2C transmission to set up ADXL345
Wire.beginTransmission(ADXL345_ADDR);
// Access register 0x2D (Power control)
Wire.write(0x2D);
// Set measure bit (0x08)
Wire.write(0x08);
// Stop I2C transmission
Wire.endTransmission();
delay(10);
}
void loop() {
// Start I2C transmission to read data from ADXL345
Wire.beginTransmission(ADXL345_ADDR);
// Select register 0x32 (Data start)
Wire.write(0x32);
// Stop I2C transmission
Wire.endTransmission();
// Request 6 bytes of data from ADXL345
Wire.requestFrom(ADXL345_ADDR, 6);
// Read 6 bytes of data (x, y, and z acceleration)
int x = Wire.read() | (Wire.read() << 8);
int y = Wire.read() | (Wire.read() << 8);
int z = Wire.read() | (Wire.read() << 8);
// Convert to g-force (assuming ±16g range and 10-bit data)
float x_g = x * 0.0039; // 0.0039 g/LSB for ±16g
float y_g = y * 0.0039;
float z_g = z * 0.0039;
// Create JSON string manually
String jsonString = "{";
jsonString += "\"time\": " + String(millis()) + ", ";
jsonString += "\"x\": " + String(x_g, 4) + ", ";
jsonString += "\"y\": " + String(y_g, 4) + ", ";
jsonString += "\"z\": " + String(z_g, 4);
jsonString += "}";
// Send JSON string over Serial
Serial.println(jsonString);
delay(100);
}