I have searched many websites for whole week in order to get my MMA7455 work. But I just couldn't get it right!
my code is as below. and the result always showed " X: 0 Y: 0 Z: 0"
Is there anyone can help me? I am so sad.....
thanks lot.
#include <Wire.h>
#define ADDRESS 0x1D //Address for Accelerometer
//REGISTERS
#define MODE_CONTROL 0x16 //Mode control register
#define X_OUT 0x06 //8 bit register containing value for X
#define Y_OUT 0x07 //8 bit register containing value for Y
#define Z_OUT 0x08 //8 bit register containing value for Z
#define SETUP 0x05 //MESUREMENT MODE, 2g
//required setup function
void setup() {
Wire.begin();
Serial.begin(9600);
I2C_Write(MODE_CONTROL, SETUP);
}
//required loop function
void loop() {
Serial.print("X: ");
Serial.print(I2C_Read(X_OUT));
Serial.print(" Y: ");
Serial.print(I2C_Read(Y_OUT));
Serial.print(" Z: ");
Serial.println(I2C_Read(Z_OUT));
delay(100);
}
//function to write byte data into a register
void I2C_Write(byte REG, byte data) {
Wire.beginTransmission(ADDRESS); //device address 0x1D
Wire.write(REG); //0x16
Wire.write(data); //measurement mode,2g
Wire.endTransmission();
}
//function to read byte data from a register
byte I2C_Read(byte REG){
byte val = 0x00;
Wire.beginTransmission(ADDRESS);
Wire.write(REG);
Wire.endTransmission();
Wire.requestFrom(ADDRESS, 1);
if(Wire.available() > 0) {
val = Wire.read();
}
Wire.endTransmission();
return val;
}

