Code for an autonomous plane I'm building. Includes process scheduling, process communication, and hardware sensor interfacing (via I2C). NOTE: currently in development, source code will be updated frequently.

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers sensor.h Source File

sensor.h

00001 #ifndef SENSOR_H
00002 #define SENSOR_H
00003 
00004 #define DEBUG 1
00005 
00006 #include "mbed.h"
00007 
00008 
00009 
00010 #define accel_w 0xA6
00011 #define ACCEL_X 0x32 // x: 0x32,0x33 y: 0x34,0x35 z: 0x36,0x37 Little Endian!!! (x = 0x33<<8|0x22). 2's complement 16bit
00012 #define ACCEL_POWER_CTL 0x2D
00013 #define gyro_w 0xD2
00014 #define GYRO_X 0x28 // x: 0x28,0x29 y: 0x2A,0x2B z: 0x2C,0x2D Little Endian! (x = 0x28<<8|0x22). 2's complement 16bit
00015 #define GYRO_CTRL_REG1 0x20
00016 #define compass_w 0x3C
00017 #define compass_r 0x3D
00018 #define barometer_w 0xEE
00019 #define barometer_r 0xEF
00020 
00021 struct sensor
00022 {
00023     int16_t ax, ay, az;
00024     int16_t gx, gy, gz;
00025     int16_t gx0, gy0, gz0;
00026     char raw_data[6];
00027 };
00028 
00029 struct config
00030 {
00031     int frequency;
00032     int accel_resolution;
00033 };
00034 
00035 
00036 char set_i2c_pointer(char addr, char reg);   
00037 
00038 int read(char addr, char reg, char *buf, int n);
00039 
00040 int write(char addr, char reg, char *buf, int n);
00041 
00042 int read_accelerometer(struct sensor* s);
00043 int accelerometer_standby();
00044 int accelerometer_measure();
00045 
00046 int read_gyro(struct sensor* s);
00047 int gyro_turnon();
00048 int gyro_turnoff();
00049 
00050 int read_compass(void);
00051 int read_barometer(void);
00052 
00053 int config_accelerometer(void);
00054 int config_gyro();
00055 int config_compass(void);
00056 int config_barometer(void);
00057 
00058 int config_gy80(struct config *c);
00059 
00060 #endif //SENSOR_H