この文書の現在のバージョンと選択したバージョンの差分を表示します。
| 次のリビジョン | 前のリビジョン | ||
| arduino_-_加速度センサ [2017/11/23 06:41] fifi 作成 | arduino_-_加速度センサ [2017/11/23 22:30] (現在) fifi | ||
|---|---|---|---|
| ライン 14: | ライン 14: | ||
| - Arduino Due 20/21番ピンソケット | - Arduino Due 20/21番ピンソケット | ||
| + | ### はまりポイント | ||
| + | |||
| + | - Arduino DUE は int が2バイト(16bit) | ||
| + | - Arduino UNO は int が1バイト(8bit) | ||
| + | |||
| + | ```c | ||
| + | #include <Wire.h> | ||
| + | |||
| + | #define DEVICE_ADDR (0x53) // スレーブデバイスのアドレス | ||
| + | byte axis_buff[6]; | ||
| + | |||
| + | void setup() | ||
| + | { | ||
| + | Serial.begin(9600); // シリアルの開始デバック用 | ||
| + | Wire.begin();  // I2Cの開始 | ||
| + | |||
| + | Serial.write("init"); | ||
| + | |||
| + | // DATA_FORMAT | ||
| + | // https://sites.google.com/a/gclue.jp/fab-zang-docs/ni-yinkiiot/adxl345-i2c | ||
| + | //writeI2c(0x31, 0b00001011); | ||
| + | writeI2c(0x31, 0b00000011); | ||
| + | // POWER_TCL | ||
| + | writeI2c(0x2d, 0b00001000); | ||
| + | } | ||
| + | |||
| + | void loop() | ||
| + | { | ||
| + | uint8_t length = 6; | ||
| + | readI2c(0x32, length, axis_buff); //レジスターアドレス 0x32から6バイト読む | ||
| + |  | ||
| + | int16_t x = (((int16_t)axis_buff[1]) << 8) | axis_buff[0];  | ||
| + | int16_t y = (((int16_t)axis_buff[3]) << 8) | axis_buff[2]; | ||
| + | int16_t z = (((int16_t)axis_buff[5]) << 8) | axis_buff[4]; | ||
| + |  | ||
| + | Serial.print( x); | ||
| + | Serial.print(","); | ||
| + | Serial.print( y ); | ||
| + | Serial.print(","); | ||
| + | Serial.println( z ); | ||
| + | |||
| + | // delay(100); | ||
| + | } | ||
| + | |||
| + | // I2Cへの書き込み | ||
| + | void writeI2c(byte register_addr, byte value) { | ||
| + | Wire.beginTransmission(DEVICE_ADDR);  | ||
| + | Wire.write(register_addr);  | ||
| + | Wire.write(value);  | ||
| + | Wire.endTransmission();   | ||
| + | } | ||
| + | |||
| + | // I2Cへの読み込み | ||
| + | void readI2c(byte register_addr, int num, byte buffer[]) { | ||
| + | Wire.beginTransmission(DEVICE_ADDR);  | ||
| + | Wire.write(register_addr);  | ||
| + | Wire.endTransmission();  | ||
| + | |||
| + | Wire.beginTransmission(DEVICE_ADDR);  | ||
| + | Wire.requestFrom(DEVICE_ADDR, num); | ||
| + | |||
| + | int i = 0; | ||
| + | while(Wire.available())   | ||
| + | { | ||
| + | buffer[i] = Wire.read();  | ||
| + | i++; | ||
| + | } | ||
| + | Wire.endTransmission();  | ||
| + | } | ||
| + | ``` | ||