First tests of accelerometer ADXL335 using I2C controlled 20×4 LCD
For the tests I used already installed for 16×2 display module LiquidCrystal_I2C library (see distance meter and other posts)
The accelerometer IC itself is described on Analog Devices and has pretty simple interface when mounted on GY-61 board. There are just 3 connectors for each direction acceleration analog signals and power. It seems that one can power GY-61 module with 5V but I sticked to 3v3 and also used it as the reference voltage for analog input.
The code to find min/max values needed for calibration of the device.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display
#define XPIN A3
#define YPIN A2
#define ZPIN A1
int myx, myy, myz;
int maxx = 0, maxy = 0, maxz = 0;
int minx = 1024, miny = 1024, minz = 1024;
void setup() {
analogReference(EXTERNAL); // 3.3v -> AREF
lcd.init(); lcd.backlight(); lcd.clear();
lcd.print(" x y z");
lcd.setCursor(0,1); lcd.print("Akt.:");
lcd.setCursor(0,2); lcd.print("Min :");
lcd.setCursor(0,3); lcd.print("Max :");
}
void loop() {
myx = analogRead(XPIN); // some suggest delay(2) after each read
myy = analogRead(YPIN);
myz = analogRead(ZPIN);
minx = min(myx,minx); miny = min(myy,miny); minz = min(myz,minz);
maxx = max(maxx,myx); maxy = max(maxy,myy); maxz = max(maxz,myz);
lcd.setCursor(6,1);
lcd.print(myx); lcd.print(" "); lcd.print(myy);
lcd.print(" "); lcd.print(myz); lcd.print(" ");
lcd.setCursor(6,2);
lcd.print(minx); lcd.print(" "); lcd.print(miny);
lcd.print(" "); lcd.print(minz); lcd.print(" ");
lcd.setCursor(6,3);
lcd.print(maxx); lcd.print(" "); lcd.print(maxy);
lcd.print(" "); lcd.print(maxz); lcd.print(" ");
delay(50);
}
It seems that indeed 0G is around 511, and -1G/1G is around 110 from the 0G reading, so ca. 400/620 – see picture,
Next steps could include combining this sensor with HMC5883 on GY-273 board
It will be easy, because GY-273 board uses I2C interface (non-conflicting address with LCD controlling module), and with A1-A3 ocupied by GY-61, and A4 and A5 by I2C module we have only A0 available (on UNO board).
