SHOW:
|
|
- or go back to the newest paste.
| 1 | /* compass_robot - an application for the Pololu Orangutan SVP | |
| 2 | * | |
| 3 | * This application uses the Pololu AVR C/C++ Library. For help, see: | |
| 4 | * -User's guide: http://www.pololu.com/docs/0J20 | |
| 5 | * -Command reference: http://www.pololu.com/docs/0J18 | |
| 6 | * | |
| 7 | * Created: 5/13/2012 6:00:02 PM | |
| 8 | * Author: Dave | |
| 9 | */ | |
| 10 | ||
| 11 | #define F_CPU 20000000UL | |
| 12 | #include <pololu/orangutan.h> | |
| 13 | #include <stdio.h> | |
| 14 | #include <stdlib.h> | |
| 15 | #include "i2cmaster.h" | |
| 16 | #define COMPASS 0x3C | |
| 17 | ||
| 18 | int main() | |
| 19 | {
| |
| 20 | play_from_program_space(PSTR(">g32>>c32")); // Play welcoming notes.
| |
| 21 | ||
| 22 | lcd_goto_xy(0,0); | |
| 23 | print("i2c init");
| |
| 24 | i2c_init(); | |
| 25 | i2c_start_wait(COMPASS + I2C_WRITE); | |
| 26 | i2c_write(0x00); | |
| 27 | i2c_write(0x70); | |
| 28 | ||
| 29 | i2c_start_wait(COMPASS + I2C_WRITE); | |
| 30 | i2c_write(0x01); | |
| 31 | i2c_write(0xA0); | |
| 32 | ||
| 33 | i2c_start_wait(COMPASS + I2C_WRITE); | |
| 34 | i2c_write(0x02); | |
| 35 | i2c_write(0x00); | |
| 36 | lcd_goto_xy(0, 0); | |
| 37 | print("i2c init done");
| |
| 38 | delay_ms(1000); | |
| 39 | ||
| 40 | int buffer[6]; | |
| 41 | int x, y, z = 0; | |
| 42 | short i; | |
| 43 | ||
| 44 | - | x = (buffer[0] << 8) | buffer[1]; |
| 44 | + | |
| 45 | - | z = (buffer[2] << 8) | buffer[3]; |
| 45 | + | |
| 46 | - | y = (buffer[4] << 8) | buffer[5]; |
| 46 | + | |
| 47 | i2c_start(COMPASS + I2C_READ); | |
| 48 | i2c_write(0x06); | |
| 49 | ||
| 50 | for (i = 0; i < 6; i++) {
| |
| 51 | buffer[i] = i2c_readNak(); | |
| 52 | } | |
| 53 | ||
| 54 | x = (buffer[0] << 8) | buffer[1]; | |
| 55 | z = (buffer[2] << 8) | buffer[3]; | |
| 56 | y = (buffer[4] << 8) | buffer[5]; | |
| 57 | ||
| 58 | lcd_goto_xy(0, 1); | |
| 59 | sprintf(msg, "%d %d %d", x, y, z); | |
| 60 | print(msg); | |
| 61 | ||
| 62 | delay_ms(1000); | |
| 63 | lcd_goto_xy(0, 1); | |
| 64 | print(" ");
| |
| 65 | delay_ms(200); | |
| 66 | } | |
| 67 | } |