Devices & Components
Grove - OLED Display 0.96"
ADXL345 3-axis accelerometer
Arduino Uno Case - Blue
Hardware & Tools
Arduino
Software & Tools
Arduino IDE
Project description
Code
ADXL345 measurement of tilt angle
c
1#include <Wire.h> // Wire library - used for I2C communication 2#include <Adafruit_GFX.h> 3#include <Adafruit_SSD1306.h>//OLED library 4 5Adafruit_SSD1306 display(128,64, &Wire, -1);//Set the screen size of OLED 6 7int ADXL345 = 0x53; // The ADXL345 sensor I2C address 8float X_out, Y_out, Z_out; // Outputs 9void setup() { 10 Serial.begin(9600); 11 Wire.begin(); // Initiate the Wire library 12 // Set ADXL345 in measuring mode 13 Wire.beginTransmission(ADXL345); // Start communicating with the device 14 Wire.write(0x2D); // Access/ talk to POWER_CTL Register - 0x2D 15 // Enable measurement 16 Wire.write(8); // (8dec -> 0000 1000 binary) Bit D3 High for measuring enable 17 Wire.endTransmission(); 18 display.begin(SSD1306_SWITCHCAPVCC, 0x3C);//Initialize OLED and set IIC communication address 19 delay(10); 20} 21void loop() { 22 Wire.beginTransmission(ADXL345); 23 Wire.write(0x32); // Start with register 0x32 (ACCEL_XOUT_H) 24 Wire.endTransmission(false); 25 Wire.requestFrom(ADXL345, 6, true); // Read 6 registers total, each axis value is stored in 2 registers 26 X_out = ( Wire.read()| Wire.read() << 8); // X-axis value 27 X_out = X_out/256; //For a range of +-2g, we need to divide the raw values by 256, according to the datasheet 28 Y_out = ( Wire.read()| Wire.read() << 8); // Y-axis value 29 Y_out = Y_out/256; 30 Z_out = ( Wire.read()| Wire.read() << 8); // Z-axis value 31 Z_out = Z_out/256; 32 Serial.print("Xa= "); 33 Serial.print(X_out); 34 Serial.print(" Ya= "); 35 Serial.print(Y_out); 36 Serial.print(" Za= "); 37 Serial.println(Z_out); 38 display.clearDisplay();//Clear screen 39 display.setTextColor(WHITE);//Setting text color, monochrome OLED is invalid, but must have 40 display.setTextSize(2);//Set text size 41 display.setCursor(0, 0); 42 display.print("X: "); 43 display.print(X_out); 44 display.setCursor(0, 20); 45 display.print("Y: "); 46 display.print(Y_out); 47 display.setCursor(0, 40); 48 display.print("Z: "); 49 display.print(Z_out); 50 display.display();//Execute Display 51 delay(100); 52}
Documentation
Using ADXL345
https://youtu.be/-CsvBWItFjA
Comments
Only logged in users can leave comments