このライブラリーはテストに作ったものです。近いうちに他の関数を加えた形でアップデートするつもりです。 read_8(int reg)、read_16(int reg) で レジスターregの値を8bit、16bitで読み込み、そのまま返します。受け取り側の変数をint8_t、int16_t で定義すれば正負に分かれた値を得られます。 write_8(int reg,int data)、write_16(int reg,int data)で レジスターregに8bit、16bit 書き込み、成功したら0、失敗したら1を返します。確認はread_8、read_16を用いています。 conect() でデバイスが使用可能かを調べ、見つかれば0、なければ1を返します。 reg_reset() で全てのレジスタの値を0にします。成功したら0、失敗したらその時点で処理を停止し、失敗したレジスタを返します。 レジスタは公式のデータシートに書いてあるものと文字は同じです。 もしかしたらうまく行かない関数があるかもしれません。次のアプデのときに修正予定です。

Dependents:   Nucleo_L3GD20_MMA7361_Kalman

Revision:
1:354deb9168c0
Parent:
0:f2770227e24c
Child:
2:de6dc4af9b75
--- a/l3gd20.h	Wed Jan 28 05:16:22 2015 +0000
+++ b/l3gd20.h	Wed Sep 28 11:11:52 2016 +0000
@@ -1,6 +1,8 @@
 #ifndef _L3GD20_H_20150124_1526_
 #define _L3GD20_H_20150124_1526_
 
+#include "binary.h"
+
 #define WHO_AM_I         0x0F
 #define CTRL_REG1        0x20
 #define CTRL_REG2        0x21
@@ -29,12 +31,17 @@
 #define INT1_DURATION    0x38
 #define READ             0x80
 #define WRITE            0x00
+#define X                0
+#define Y                2
+#define Z                4
 
 
 class l3gd20{
 private:
     SPI l3gdev;
     DigitalOut l3gcs;
+    Serial pcdev;
+    int scale;
 public:
     l3gd20();
     l3gd20(int fhz);
@@ -46,7 +53,15 @@
     uint8_t read_8(uint8_t reg);
     uint16_t read_16(uint8_t reg);
     int write_8(uint8_t reg,uint8_t data);
+    void s_write_8(uint8_t reg,uint8_t data);
     int write_16(uint8_t reg,uint16_t data);
+    int get_scale();
+    int set_scale(int dps);
+    int get_temp();
+    int16_t get_rotate_by_bit(int axis);
+    float get_rotate_by_rad(int axis);
+    float get_rotate(int axis);
+    float deg_to_rad(float deg);
 };
 
 #endif
\ No newline at end of file