Accelerometru ADXL345

In acest articol vom testa accelerometrul ADXL345.

Modulul se poate alimenta cu +3.3V sau cu +5V. Conectarea cu Arduino se face pe magistrala I2C folosind doar 2 fire.

Pentru a afisa valorile returnate de catre senzor vom folosi un afisaj LCD 2004 cu adaptorul I2C, acesta este conectat ca si in acest articol.

Modulul este cel din poza de mai jos:

 

 

Sketchul folosit in acest articol este urmatorul:

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 20, 4);
int ADXL345 = 0x53; 
float X_out, Y_out, Z_out; 

void setup() {
   lcd.begin();
  lcd.setCursor(0, 0);
  lcd.print("Accelerometrul");
  lcd.setCursor(0, 1);
  lcd.print("ADXL345");
  lcd.setCursor(1, 3);
  lcd.print("electronicstore.ro");
  delay(3000);
  lcd.clear();
  Wire.begin();
  Wire.beginTransmission(ADXL345); 
  Wire.write(0x2D); 
  Wire.write(8); 
  Wire.endTransmission();
}
void loop() {
  // === Read acceleromter data === //
  Wire.beginTransmission(ADXL345);
  Wire.write(0x32); // Start with register 0x32 (ACCEL_XOUT_H)
  Wire.endTransmission(false);
  Wire.requestFrom(ADXL345, 6, true); // Read 6 registers total, each axis value is stored in 2 registers
  X_out = ( Wire.read()| Wire.read() << 8); // X-axis value
  X_out = X_out/256; //For a range of +-2g, we need to divide the raw values by 256, according to the datasheet
  Y_out = ( Wire.read()| Wire.read() << 8); // Y-axis value
  Y_out = Y_out/256;
  Z_out = ( Wire.read()| Wire.read() << 8); // Z-axis value
  Z_out = Z_out/256;
  lcd.setCursor(0, 0);
  lcd.print("Xa: ");
  lcd.print(X_out);
  lcd.setCursor(0, 1);
  lcd.print("Ya: ");
  lcd.print(Y_out);
  lcd.setCursor(0, 2);
  lcd.print("Za: ");
  lcd.print(Z_out);
  lcd.setCursor(1, 3);
  lcd.print("electronicstore.ro");
  delay(300);
  lcd.clear();
}

 Un filmulet cu montajul in functiune poate fi vizionat mai jos:

 

Autentificare