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.
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
Generated on Tue Jul 12 2022 21:39:02 by 1.7.2