//I2C color sensor #define AVAGO (0×74) //Not really used, but alas, here it is for reference. #define AVAGO_W (0xE8) //write #define AVAGO_R (0xE9) //read
//I2C 3 axis accelerometer #define AXL_W (0×3A) //write #define AXL_R (0×3B) //read #include “/TWI_hack.c”inline int i2c_setRegister(int address, int value);
void axl_init();
int axl_read_x();void setup()
{ Serial.begin(9600); i2c_init(); axl_init();
}void loop()
{ Serial.println(axl_read_x()); delay(100);
}void axl_init()
{ i2c_start(AXL_W); // set device address and write mode i2c_setRegister(0×20,0×47); //address,value i2c_stop();
}int axl_read_x()
{ int x=-1; i2c_start(AXL_W); // set device address and write mode i2c_write(0×29); //X out i2c_rep_start(AXL_R); //send another start x =i2c_readNak(); //Read one byte, and then send the no-ACK to signal done i2c_stop(); if(x>127) x= (255-x)*-1; //x+=255; return x;
}inline int i2c_setRegister(int address, int value)
{ i2c_write(address); //address (this one isn’t error checked for ACK) return i2c_write(value); //value
}
I2C class notes
Dec 2, 10:32 AM
Comments
← Sweet God, yes. Almost Transformers →