FiFiWiki2

FiFiWikiの第2版

ユーザ用ツール

サイト用ツール


arduino_-_加速度センサ

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
arduino_-_加速度センサ [2017/11/23 06:42]
fifi
arduino_-_加速度センサ [2017/11/23 22:30] (現在)
fifi
ライン 13: ライン 13:
  - Arduino Uno A4/A5 及び R3 追加ピンソケット  - Arduino Uno A4/A5 及び R3 追加ピンソケット
  - Arduino Due 20/​21番ピンソケット  - Arduino Due 20/​21番ピンソケット
 +
 +### はまりポイント
 +
 + - Arduino DUE は int が2バイト(16bit)
 + - Arduino UNO は int が1バイト(8bit)
  
 ```c ```c
 #include <​Wire.h>​ #include <​Wire.h>​
 + 
 #define DEVICE_ADDR (0x53) // スレーブデバイスのアドレス #define DEVICE_ADDR (0x53) // スレーブデバイスのアドレス
 byte axis_buff[6];​ byte axis_buff[6];​
 + 
 void setup() void setup()
 { {
   Serial.begin(9600);​ // シリアルの開始デバック用   Serial.begin(9600);​ // シリアルの開始デバック用
   Wire.begin(); ​      // I2Cの開始   Wire.begin(); ​      // I2Cの開始
-  ​+ 
   Serial.write("​init"​);​   Serial.write("​init"​);​
-  ​+ 
   // DATA_FORMAT   // DATA_FORMAT
-  writeI2c(0x31, ​0x00);+  ​// https://​sites.google.com/​a/​gclue.jp/​fab-zang-docs/​ni-yinkiiot/​adxl345-i2c 
 +  //writeI2c(0x31, ​0b00001011);​ 
 +  writeI2c(0x31,​ 0b00000011);
   // POWER_TCL   // POWER_TCL
-  writeI2c(0x2d, ​0x08);+  writeI2c(0x2d, ​0b00001000);
 } }
 + 
 void loop() void loop()
  
   uint8_t length = 6;   uint8_t length = 6;
   readI2c(0x32,​ length, axis_buff); //​レジスターアドレス 0x32から6バイト読む   readI2c(0x32,​ length, axis_buff); //​レジスターアドレス 0x32から6バイト読む
-  ​int x = (((int)axis_buff[1]) << 8) | axis_buff[0]; ​   +  ​ 
-  ​int y = (((int)axis_buff[3]) << 8) | axis_buff[2];​ +  int16_t ​x = (((int16_t)axis_buff[1]) << 8) | axis_buff[0]; ​   
-  ​int z = (((int)axis_buff[5]) << 8) | axis_buff[4];​ +  ​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 * 32.0 / 8192.0);+   
 +  Serial.print( x);
   Serial.print(","​);​   Serial.print(","​);​
-  Serial.print( y * 32.0 / 8192.0 ​);+  Serial.print( y  );
   Serial.print(","​);​   Serial.print(","​);​
-  Serial.println( z * 32.0 / 8192.0 ​); +  Serial.println( z  ); 
-   +  
-  delay(100);+//  ​delay(100);​
 } }
 + 
 // I2Cへの書き込み // I2Cへの書き込み
 void writeI2c(byte register_addr,​ byte value) { void writeI2c(byte register_addr,​ byte value) {
ライン 57: ライン 65:
   Wire.endTransmission(); ​       ​   Wire.endTransmission(); ​       ​
 } }
 + 
 // I2Cへの読み込み // I2Cへの読み込み
 void readI2c(byte register_addr,​ int num, byte buffer[]) { void readI2c(byte register_addr,​ int num, byte buffer[]) {
ライン 63: ライン 71:
   Wire.write(register_addr); ​             Wire.write(register_addr); ​          
   Wire.endTransmission(); ​           Wire.endTransmission(); ​        
 + 
   Wire.beginTransmission(DEVICE_ADDR); ​   Wire.beginTransmission(DEVICE_ADDR); ​
   Wire.requestFrom(DEVICE_ADDR,​ num);      Wire.requestFrom(DEVICE_ADDR,​ num);   
 + 
   int i = 0;   int i = 0;
   while(Wire.available()) ​       ​   while(Wire.available()) ​       ​
arduino_-_加速度センサ.txt · 最終更新: 2017/11/23 22:30 by fifi