This is for our FYDP project. 2 MPU6050s are used
robot/robot.h@3:47461d37adfb, 2015-03-22 (annotated)
- Committer:
- majik
- Date:
- Sun Mar 22 00:43:42 2015 +0000
- Revision:
- 3:47461d37adfb
- Parent:
- 0:21019d94ad33
1 IMU, Servo added; -PTD0 is used by something mysterious, so I had to move the servo control line to PTA12
Who changed what in which revision?
User | Revision | Line number | New 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 |