Yamaguchi Atsushi / Mbed 2 deprecated l3gd20

Dependencies:   mbed

Committer:
yamaguchiatsushi
Date:
Thu Dec 02 01:55:51 2021 +0000
Revision:
0:950c605f154f
Child:
1:04b7521f737d
update for mbed

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yamaguchiatsushi 0:950c605f154f 1 # include<mbed.h>
yamaguchiatsushi 0:950c605f154f 2
yamaguchiatsushi 0:950c605f154f 3 I2CSlave slave(D9, D10);
yamaguchiatsushi 0:950c605f154f 4
yamaguchiatsushi 0:950c605f154f 5 void main()
yamaguchiatsushi 0:950c605f154f 6 {
yamaguchiatsushi 0:950c605f154f 7 // Create I2C bus
yamaguchiatsushi 0:950c605f154f 8 int file;
yamaguchiatsushi 0:950c605f154f 9 char *bus = "/dev/i2c-1";
yamaguchiatsushi 0:950c605f154f 10 if((file = open(bus, O_RDWR)) < 0)
yamaguchiatsushi 0:950c605f154f 11 {
yamaguchiatsushi 0:950c605f154f 12 printf("Failed to open the bus. \n");
yamaguchiatsushi 0:950c605f154f 13 exit(1);
yamaguchiatsushi 0:950c605f154f 14 }
yamaguchiatsushi 0:950c605f154f 15 // Get I2C device, L3GD20 I2C address is 0x6A(106)
yamaguchiatsushi 0:950c605f154f 16 // ioctl(file, I2C_SLAVE, 0x6A);
yamaguchiatsushi 0:950c605f154f 17 slave.address(0x6A);
yamaguchiatsushi 0:950c605f154f 18 int i = slave.receive();
yamaguchiatsushi 0:950c605f154f 19
yamaguchiatsushi 0:950c605f154f 20 // Enable X, Y, Z-Axis and disable Power down mode(0x0F)
yamaguchiatsushi 0:950c605f154f 21 char config[2] = {0};
yamaguchiatsushi 0:950c605f154f 22 config[0] = 0x20;
yamaguchiatsushi 0:950c605f154f 23 config[1] = 0x0F;
yamaguchiatsushi 0:950c605f154f 24 write(file, config, 2);
yamaguchiatsushi 0:950c605f154f 25 // Full scale range, 2000 dps(0x30)
yamaguchiatsushi 0:950c605f154f 26 config[0] = 0x23;
yamaguchiatsushi 0:950c605f154f 27 config[1] = 0x30;
yamaguchiatsushi 0:950c605f154f 28 write(file, config, 2);
yamaguchiatsushi 0:950c605f154f 29 wait(1);
yamaguchiatsushi 0:950c605f154f 30
yamaguchiatsushi 0:950c605f154f 31 // Read 6 bytes of data
yamaguchiatsushi 0:950c605f154f 32 // lsb first
yamaguchiatsushi 0:950c605f154f 33 // Read xGyro lsb data from register(0x28)
yamaguchiatsushi 0:950c605f154f 34 char reg[1] = {0x28};
yamaguchiatsushi 0:950c605f154f 35 write(file, reg, 1);
yamaguchiatsushi 0:950c605f154f 36 char data[1] = {0};
yamaguchiatsushi 0:950c605f154f 37 if(read(file, data, 1) != 1)
yamaguchiatsushi 0:950c605f154f 38 {
yamaguchiatsushi 0:950c605f154f 39 printf("Error : Input/Output Error \n");
yamaguchiatsushi 0:950c605f154f 40 exit(1);
yamaguchiatsushi 0:950c605f154f 41 }
yamaguchiatsushi 0:950c605f154f 42 char data_0 = data[0];
yamaguchiatsushi 0:950c605f154f 43
yamaguchiatsushi 0:950c605f154f 44 // Read xGyro msb data from register(0x29)
yamaguchiatsushi 0:950c605f154f 45 reg[0] = 0x29;
yamaguchiatsushi 0:950c605f154f 46 write(file, reg, 1);
yamaguchiatsushi 0:950c605f154f 47 read(file, data, 1);
yamaguchiatsushi 0:950c605f154f 48 char data_1 = data[0];
yamaguchiatsushi 0:950c605f154f 49
yamaguchiatsushi 0:950c605f154f 50 // Read yGyro lsb data from register(0x2A)
yamaguchiatsushi 0:950c605f154f 51 reg[0] = 0x2A;
yamaguchiatsushi 0:950c605f154f 52 write(file, reg, 1);
yamaguchiatsushi 0:950c605f154f 53 read(file, data, 1);
yamaguchiatsushi 0:950c605f154f 54 char data_2 = data[0];
yamaguchiatsushi 0:950c605f154f 55
yamaguchiatsushi 0:950c605f154f 56 // Read yGyro msb data from register(0x2B)
yamaguchiatsushi 0:950c605f154f 57 reg[0] = 0x2B;
yamaguchiatsushi 0:950c605f154f 58 write(file, reg, 1);
yamaguchiatsushi 0:950c605f154f 59 read(file, data, 1);
yamaguchiatsushi 0:950c605f154f 60 char data_3 = data[0];
yamaguchiatsushi 0:950c605f154f 61
yamaguchiatsushi 0:950c605f154f 62 // Read zGyro lsb data from register(0x2C)
yamaguchiatsushi 0:950c605f154f 63 reg[0] = 0x2C;
yamaguchiatsushi 0:950c605f154f 64 write(file, reg, 1);
yamaguchiatsushi 0:950c605f154f 65 read(file, data, 1);
yamaguchiatsushi 0:950c605f154f 66 char data_4 = data[0];
yamaguchiatsushi 0:950c605f154f 67
yamaguchiatsushi 0:950c605f154f 68 // Read zGyro msb data from register(0x2D)
yamaguchiatsushi 0:950c605f154f 69 reg[0] = 0x2D;
yamaguchiatsushi 0:950c605f154f 70 write(file, reg, 1);
yamaguchiatsushi 0:950c605f154f 71 read(file, data, 1);
yamaguchiatsushi 0:950c605f154f 72 char data_5 = data[0];
yamaguchiatsushi 0:950c605f154f 73
yamaguchiatsushi 0:950c605f154f 74 // Convert the data
yamaguchiatsushi 0:950c605f154f 75 int xGyro = (data_1 * 256 + data_0);
yamaguchiatsushi 0:950c605f154f 76 if(xGyro > 32767)
yamaguchiatsushi 0:950c605f154f 77 {
yamaguchiatsushi 0:950c605f154f 78 xGyro -= 65536;
yamaguchiatsushi 0:950c605f154f 79 }
yamaguchiatsushi 0:950c605f154f 80
yamaguchiatsushi 0:950c605f154f 81 int yGyro = (data_3 * 256 + data_2);
yamaguchiatsushi 0:950c605f154f 82 if(yGyro > 32767)
yamaguchiatsushi 0:950c605f154f 83 {
yamaguchiatsushi 0:950c605f154f 84 yGyro -= 65536;
yamaguchiatsushi 0:950c605f154f 85 }
yamaguchiatsushi 0:950c605f154f 86
yamaguchiatsushi 0:950c605f154f 87 int zGyro = (data_5 * 256 + data_4);
yamaguchiatsushi 0:950c605f154f 88 if(zGyro > 32767)
yamaguchiatsushi 0:950c605f154f 89 {
yamaguchiatsushi 0:950c605f154f 90 zGyro -= 65536;
yamaguchiatsushi 0:950c605f154f 91 }
yamaguchiatsushi 0:950c605f154f 92
yamaguchiatsushi 0:950c605f154f 93 // Output data to screen
yamaguchiatsushi 0:950c605f154f 94 printf("Rotation in X-Axis : %d \n", xGyro);
yamaguchiatsushi 0:950c605f154f 95 printf("Rotation in Y-Axis : %d \n", yGyro);
yamaguchiatsushi 0:950c605f154f 96 printf("Rotation in Z-Axis : %d \n", zGyro);
yamaguchiatsushi 0:950c605f154f 97 }