This is for our FYDP project. 2 MPU6050s are used

Dependencies:   Servo mbed

Committer:
majik
Date:
Sun Mar 22 06:34:30 2015 +0000
Revision:
4:05484073a641
Parent:
3:47461d37adfb
BOTH IMUs WORK NOW. Put them in separate threads. Servo is included.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
majik 0:21019d94ad33 1 #ifndef ROBOT_H
majik 0:21019d94ad33 2 #define ROBOT_H
majik 0:21019d94ad33 3
majik 0:21019d94ad33 4 #include "mbed.h"
majik 0:21019d94ad33 5 #include "rtos.h"
majik 0:21019d94ad33 6 #include "stdint.h"
majik 0:21019d94ad33 7
majik 0:21019d94ad33 8 #include "HC05.h"
majik 0:21019d94ad33 9 #include "nRF24L01P.h"
majik 0:21019d94ad33 10
majik 0:21019d94ad33 11 #include "MPU6050_6Axis_MotionApps20.h"
majik 0:21019d94ad33 12 #include "MPU6051_6Axis_MotionApps20.h"
majik 0:21019d94ad33 13 #include "DMP.h"
majik 0:21019d94ad33 14 #include "IMUDATA.h"
majik 0:21019d94ad33 15 #include "ADNS5090.h"
majik 0:21019d94ad33 16 #include "ACS712.h"
majik 3:47461d37adfb 17 #include "Servo.h"
majik 0:21019d94ad33 18
majik 0:21019d94ad33 19 #include "reckon.h"
majik 0:21019d94ad33 20 #include "motors.h"
majik 0:21019d94ad33 21
majik 3:47461d37adfb 22 #define write_rate 100 //Maximum write rate (ms) of the motor
majik 3:47461d37adfb 23
majik 0:21019d94ad33 24 #define BT_BAUD_RATE 115200 //Baud rate of 9600
majik 0:21019d94ad33 25 #define TX_BT PTA2 //Bluetooth connection pins
majik 0:21019d94ad33 26 #define RX_BT PTA1 //Bluetooth connection pins
majik 0:21019d94ad33 27 #define EN_BT PTE30 //Bluetooth connection pins
majik 0:21019d94ad33 28
majik 0:21019d94ad33 29 #define MOSI_MOUSE PTB16 //Bluetooth connection pins
majik 0:21019d94ad33 30 #define MISO_MOUSE PTB17 //Bluetooth connection pins
majik 0:21019d94ad33 31 #define SCLK_MOUSE PTB11 //Bluetooth connection pins
majik 0:21019d94ad33 32 #define NCS_MOUSE_L PTB9 //Bluetooth connection pins
majik 0:21019d94ad33 33 #define NCS_MOUSE_R PTB8 //Bluetooth connection pins
majik 0:21019d94ad33 34
majik 0:21019d94ad33 35 //#define IMU_SDA_PIN PTE0
majik 0:21019d94ad33 36 //#define IMU_SCL_PIN PTE1
majik 0:21019d94ad33 37 #define IMU_POWER_PIN PTD6
majik 0:21019d94ad33 38 #define IMU2_POWER_PIN PTD4 //PTD4
majik 0:21019d94ad33 39 //#define IMU_NOTUSED_PIN PTE23
majik 0:21019d94ad33 40
majik 0:21019d94ad33 41 #define LED_PIN PTE3 //status LED pin
majik 0:21019d94ad33 42 #define LED_OFF led = 1; //status LED pin
majik 0:21019d94ad33 43 #define LED_ON led = 0; //status LED pin
majik 0:21019d94ad33 44
majik 0:21019d94ad33 45 //#define CURRENTSENSOR_PIN PTC2
majik 0:21019d94ad33 46 #define VOLTAGESENSOR_PIN PTB0
majik 0:21019d94ad33 47 //#define HIGH_CURRENT_SWITCH PTB18 //turn this to high to get high current flow
majik 0:21019d94ad33 48
majik 0:21019d94ad33 49
majik 0:21019d94ad33 50 //#define CURRENT_R1 180 //160.0 //values of the current sensor opamp resistors
majik 0:21019d94ad33 51 //#define CURRENT_R2 10
majik 0:21019d94ad33 52 //#define CURRENT_R3 80
majik 0:21019d94ad33 53 //#define CURRENT_R4 84.7
majik 0:21019d94ad33 54 //#define VREF3_3 3.3 //digital logic voltage
majik 0:21019d94ad33 55 //#define VREF5 5.0 //5v voltage //NOTE: 5v voltage is consistent when using new batts, but not using old blue batts
majik 0:21019d94ad33 56
majik 0:21019d94ad33 57 #define IR_L PTB1
majik 0:21019d94ad33 58 #define IR_C PTB2
majik 0:21019d94ad33 59 #define IR_R PTB3
majik 0:21019d94ad33 60 #define IR_B PTC6 //turn GPIO to high to multiplex L,C,R ADC to rear sensors
majik 0:21019d94ad33 61
majik 0:21019d94ad33 62
majik 0:21019d94ad33 63 #define MOT_AIN1_PIN PTA14
majik 0:21019d94ad33 64 #define MOT_AIN2_PIN PTA13
majik 0:21019d94ad33 65 #define MOT_PWMA_PIN PTA4 //Motor control pins
majik 0:21019d94ad33 66
majik 0:21019d94ad33 67 #define MOT_BIN1_PIN PTA16
majik 0:21019d94ad33 68 #define MOT_BIN2_PIN PTA17
majik 0:21019d94ad33 69 #define MOT_PWMB_PIN PTA5
majik 0:21019d94ad33 70
majik 0:21019d94ad33 71 #define MOT_STBY_PIN PTA15
majik 0:21019d94ad33 72
majik 0:21019d94ad33 73 //used for RF device
majik 0:21019d94ad33 74 #define TRANSFER_SIZE 4
majik 0:21019d94ad33 75 #define ROBOT1_ADDRESS ((unsigned long long) 0x17E7E7E7E7 )
majik 0:21019d94ad33 76 #define ROBOT2_ADDRESS ((unsigned long long) 0xC2C2C2C2C2 )
majik 0:21019d94ad33 77 #define ROBOT3_ADDRESS ((unsigned long long) 0x37E7E7E7E7 )
majik 0:21019d94ad33 78 #define ALLROBOT_ADDRESS ((unsigned long long) 0xE7E7E7E7E7 )
majik 0:21019d94ad33 79 #define ADDRESS_WIDTH 5
majik 0:21019d94ad33 80 const float M_PI = 3.14159265;
majik 0:21019d94ad33 81
majik 0:21019d94ad33 82 extern DigitalOut led;
majik 3:47461d37adfb 83 extern Servo myservo;
majik 0:21019d94ad33 84
majik 0:21019d94ad33 85 extern HC05 bt;
majik 0:21019d94ad33 86
majik 0:21019d94ad33 87 extern bool send_flag;
majik 0:21019d94ad33 88 extern bool obstacle_flag; //this alerts the robot if there is an obstacle somewhere.
majik 0:21019d94ad33 89 extern bool fwd_flag; //indicates that the robot is trying to move forward
majik 0:21019d94ad33 90 extern bool calibrate_flag;
majik 0:21019d94ad33 91 extern bool calibrate_optFlow_flag;
majik 0:21019d94ad33 92
majik 0:21019d94ad33 93 extern AnalogIn irL;
majik 0:21019d94ad33 94 extern AnalogIn irC;
majik 0:21019d94ad33 95 extern AnalogIn irR;
majik 0:21019d94ad33 96 extern DigitalOut irBack;
majik 0:21019d94ad33 97 extern AnalogIn voltage_sensor;
majik 0:21019d94ad33 98
majik 0:21019d94ad33 99 extern ACS712 current_sensor;
majik 0:21019d94ad33 100 extern ADNS5090 opt_flow_L;
majik 0:21019d94ad33 101 extern ADNS5090 opt_flow_R;
majik 0:21019d94ad33 102
majik 0:21019d94ad33 103 extern MPU6050 mpu;
majik 0:21019d94ad33 104 extern MPU6051 mpu2;
majik 0:21019d94ad33 105
majik 0:21019d94ad33 106 extern DigitalOut imuSwitch;
majik 0:21019d94ad33 107 extern DigitalOut imu2Switch;
majik 0:21019d94ad33 108 extern IMU_DATA imu_data;
majik 0:21019d94ad33 109 extern IMU_DATA imu2_data;
majik 0:21019d94ad33 110
majik 0:21019d94ad33 111 extern Reckon reckon;
majik 0:21019d94ad33 112
majik 0:21019d94ad33 113 extern Motors motors;
majik 0:21019d94ad33 114 extern RtosTimer *MotorStopTimer;
majik 0:21019d94ad33 115
majik 0:21019d94ad33 116 extern nRF24L01P rf; // RF communication device
majik 0:21019d94ad33 117
majik 0:21019d94ad33 118 extern unsigned long long long_time;
majik 0:21019d94ad33 119 extern Timer t;
majik 3:47461d37adfb 120 //extern Timer t_m; //Timer used for the motor thread
majik 3:47461d37adfb 121 extern time_t prev; //previous time for motor
majik 0:21019d94ad33 122 float getTime();
majik 0:21019d94ad33 123
majik 0:21019d94ad33 124 void initRobot();
majik 0:21019d94ad33 125 void moveMotors(int Lspeed, int Rspeed, int ms);
majik 0:21019d94ad33 126
majik 0:21019d94ad33 127 #endif