ryo seki
/
compass
aa
main.cpp@0:e455520e1583, 2013-02-27 (annotated)
- Committer:
- akudohune
- Date:
- Wed Feb 27 02:33:02 2013 +0000
- Revision:
- 0:e455520e1583
aaa
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
akudohune | 0:e455520e1583 | 1 | #include "mbed.h" |
akudohune | 0:e455520e1583 | 2 | |
akudohune | 0:e455520e1583 | 3 | I2C i2c(p9, p10); // sda, scl |
akudohune | 0:e455520e1583 | 4 | Serial pc(USBTX, USBRX); // tx, rx |
akudohune | 0:e455520e1583 | 5 | |
akudohune | 0:e455520e1583 | 6 | #define ADDR 0x14 // define the I2C Address |
akudohune | 0:e455520e1583 | 7 | |
akudohune | 0:e455520e1583 | 8 | int main() { |
akudohune | 0:e455520e1583 | 9 | char cmd[4]; |
akudohune | 0:e455520e1583 | 10 | while(1) { |
akudohune | 0:e455520e1583 | 11 | cmd[0] = 0x0; // pointer to command register |
akudohune | 0:e455520e1583 | 12 | cmd[1] = 0x51; // Start ranging, results in cm |
akudohune | 0:e455520e1583 | 13 | i2c.write(ADDR, cmd, 2); // Send command string |
akudohune | 0:e455520e1583 | 14 | |
akudohune | 0:e455520e1583 | 15 | wait(0.07); // Could also poll, 65ms is typical |
akudohune | 0:e455520e1583 | 16 | |
akudohune | 0:e455520e1583 | 17 | // Set pointer to location 2 (first echo) |
akudohune | 0:e455520e1583 | 18 | cmd[0] = 0x2; |
akudohune | 0:e455520e1583 | 19 | i2c.write(ADDR, cmd, 1); |
akudohune | 0:e455520e1583 | 20 | i2c.read(ADDR, cmd, 2); // read the two-byte echo result |
akudohune | 0:e455520e1583 | 21 | |
akudohune | 0:e455520e1583 | 22 | // print the ranging data to the screen |
akudohune | 0:e455520e1583 | 23 | float echo = 0.01 * ((cmd[0] << 8) + cmd[1]); |
akudohune | 0:e455520e1583 | 24 | pc.printf("Range = %.2f\n", echo); |
akudohune | 0:e455520e1583 | 25 | wait(0.1); |
akudohune | 0:e455520e1583 | 26 | } |
akudohune | 0:e455520e1583 | 27 | } |