asdf

Dependencies:   mbed

Committer:
yosatak
Date:
Wed Dec 04 08:19:12 2013 +0000
Revision:
0:e1b4cdf08086
aaa

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yosatak 0:e1b4cdf08086 1 #include "mbed.h"
yosatak 0:e1b4cdf08086 2 #define wt 0.1
yosatak 0:e1b4cdf08086 3
yosatak 0:e1b4cdf08086 4 I2C i2c(p9, p10); // sda, scl
yosatak 0:e1b4cdf08086 5 Serial pc(USBTX, USBRX);
yosatak 0:e1b4cdf08086 6
yosatak 0:e1b4cdf08086 7
yosatak 0:e1b4cdf08086 8 #define addr 0x3c
yosatak 0:e1b4cdf08086 9 char cmd[2];
yosatak 0:e1b4cdf08086 10
yosatak 0:e1b4cdf08086 11
yosatak 0:e1b4cdf08086 12
yosatak 0:e1b4cdf08086 13 void init_compass(){
yosatak 0:e1b4cdf08086 14
yosatak 0:e1b4cdf08086 15 cmd[0] = 0x02;
yosatak 0:e1b4cdf08086 16 cmd[1] = 0x00;
yosatak 0:e1b4cdf08086 17 i2c.write(addr, cmd, 2);
yosatak 0:e1b4cdf08086 18 }
yosatak 0:e1b4cdf08086 19
yosatak 0:e1b4cdf08086 20 long int x_get() {
yosatak 0:e1b4cdf08086 21 char data[1];
yosatak 0:e1b4cdf08086 22 //char cmd[2];
yosatak 0:e1b4cdf08086 23 int data_buff[2];
yosatak 0:e1b4cdf08086 24 short int buff;
yosatak 0:e1b4cdf08086 25
yosatak 0:e1b4cdf08086 26
yosatak 0:e1b4cdf08086 27 cmd[0] = 0x03;
yosatak 0:e1b4cdf08086 28 i2c.write(addr, cmd, 1);
yosatak 0:e1b4cdf08086 29 wait(wt);
yosatak 0:e1b4cdf08086 30 i2c.read(addr, data,1);
yosatak 0:e1b4cdf08086 31 data_buff[0] = data[0];
yosatak 0:e1b4cdf08086 32 wait(wt);
yosatak 0:e1b4cdf08086 33
yosatak 0:e1b4cdf08086 34 cmd[0] = 0x04;
yosatak 0:e1b4cdf08086 35 i2c.write(addr, cmd, 1);
yosatak 0:e1b4cdf08086 36 wait(wt);
yosatak 0:e1b4cdf08086 37 i2c.read(addr, data, 1);
yosatak 0:e1b4cdf08086 38 data_buff[1] = data[0];
yosatak 0:e1b4cdf08086 39
yosatak 0:e1b4cdf08086 40 buff = data_buff[0] << 8;
yosatak 0:e1b4cdf08086 41 buff = data_buff[1] | buff;
yosatak 0:e1b4cdf08086 42 /* if (buff & 0x00 == 0xff00){
yosatak 0:e1b4cdf08086 43 buff = buff - 0x80;
yosatak 0:e1b4cdf08086 44 buff = buff * -1;
yosatak 0:e1b4cdf08086 45 }*/
yosatak 0:e1b4cdf08086 46 return buff;
yosatak 0:e1b4cdf08086 47 }
yosatak 0:e1b4cdf08086 48
yosatak 0:e1b4cdf08086 49 long int z_get() {
yosatak 0:e1b4cdf08086 50 char data[1];
yosatak 0:e1b4cdf08086 51 int data_buff[2];
yosatak 0:e1b4cdf08086 52 short int buff;
yosatak 0:e1b4cdf08086 53
yosatak 0:e1b4cdf08086 54
yosatak 0:e1b4cdf08086 55 cmd[0] = 0x05;
yosatak 0:e1b4cdf08086 56 i2c.write(addr, cmd, 1);
yosatak 0:e1b4cdf08086 57 wait(wt);
yosatak 0:e1b4cdf08086 58 i2c.read(addr, data,1);
yosatak 0:e1b4cdf08086 59 data_buff[0] = data[0];
yosatak 0:e1b4cdf08086 60 wait(wt);
yosatak 0:e1b4cdf08086 61
yosatak 0:e1b4cdf08086 62 cmd[0] = 0x06;
yosatak 0:e1b4cdf08086 63 i2c.write(addr, cmd, 1);
yosatak 0:e1b4cdf08086 64 wait(wt);
yosatak 0:e1b4cdf08086 65 i2c.read(addr, data, 1);
yosatak 0:e1b4cdf08086 66 data_buff[1] = data[0];
yosatak 0:e1b4cdf08086 67
yosatak 0:e1b4cdf08086 68 buff = data_buff[0] << 8;
yosatak 0:e1b4cdf08086 69 buff = data_buff[1] | buff;
yosatak 0:e1b4cdf08086 70
yosatak 0:e1b4cdf08086 71 return buff;
yosatak 0:e1b4cdf08086 72 }
yosatak 0:e1b4cdf08086 73
yosatak 0:e1b4cdf08086 74 long int y_get() {
yosatak 0:e1b4cdf08086 75 char data[1];
yosatak 0:e1b4cdf08086 76 char data_buff[2];
yosatak 0:e1b4cdf08086 77 short int buff;
yosatak 0:e1b4cdf08086 78
yosatak 0:e1b4cdf08086 79
yosatak 0:e1b4cdf08086 80 cmd[0] = 0x07;
yosatak 0:e1b4cdf08086 81 i2c.write(addr, cmd, 1);
yosatak 0:e1b4cdf08086 82 wait(wt);
yosatak 0:e1b4cdf08086 83 i2c.read(addr, data,1);
yosatak 0:e1b4cdf08086 84 data_buff[0] = data[0];
yosatak 0:e1b4cdf08086 85 wait(wt);
yosatak 0:e1b4cdf08086 86
yosatak 0:e1b4cdf08086 87 cmd[0] = 0x08;
yosatak 0:e1b4cdf08086 88 i2c.write(addr, cmd, 1);
yosatak 0:e1b4cdf08086 89 wait(wt);
yosatak 0:e1b4cdf08086 90 i2c.read(addr, data, 1);
yosatak 0:e1b4cdf08086 91 data_buff[1] = data[0];
yosatak 0:e1b4cdf08086 92
yosatak 0:e1b4cdf08086 93 buff = data_buff[0] << 8;
yosatak 0:e1b4cdf08086 94 buff = data_buff[1] | buff;
yosatak 0:e1b4cdf08086 95
yosatak 0:e1b4cdf08086 96 return buff;
yosatak 0:e1b4cdf08086 97 }
yosatak 0:e1b4cdf08086 98
yosatak 0:e1b4cdf08086 99 int main() {
yosatak 0:e1b4cdf08086 100 init_compass();
yosatak 0:e1b4cdf08086 101 while(1) {
yosatak 0:e1b4cdf08086 102 pc.printf("%d/ %d/ %d\r\n", x_get(), y_get(), z_get());
yosatak 0:e1b4cdf08086 103 wait(0);
yosatak 0:e1b4cdf08086 104 }
yosatak 0:e1b4cdf08086 105 }