In acest articol vom testa accelerometrul ADXL345.
Acest modul are un pret de 25 lei si poate fii cumparat de aici.
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: