Ian Hua / Quadcopter-mbedRTOS
Committer:
pHysiX
Date:
Fri May 02 17:01:56 2014 +0000
Revision:
12:953d25061417
Parent:
10:ef5fe86f67fe
Child:
15:10edc6b12122
Added in all sensors. Need to add in EEPROM to complete control of Tilty. Finished all telemetry output and appropriate data rates.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pHysiX 12:953d25061417 1 /* RC & BT Command & Telemetry (50Hz) */
pHysiX 2:ab967d7b4346 2
pHysiX 1:43f8ac7ca6d7 3 #include "tasks.h"
pHysiX 1:43f8ac7ca6d7 4 #include "setup.h"
pHysiX 4:01921a136f58 5 #include "PwmIn.h"
pHysiX 1:43f8ac7ca6d7 6
pHysiX 1:43f8ac7ca6d7 7 float ypr_offset[3];
pHysiX 3:605fbcb54e75 8 bool box_demo = false;
pHysiX 5:4879ef0e6d41 9 bool rc_out = false;
pHysiX 5:4879ef0e6d41 10 bool gyro_out = false;
pHysiX 3:605fbcb54e75 11
pHysiX 4:01921a136f58 12 PwmIn rxModule[] = {p14, p15, p16, p17, p18};
pHysiX 12:953d25061417 13 AnalogIn voltageSense(p20);
pHysiX 12:953d25061417 14
pHysiX 12:953d25061417 15 float vIn = 0.0;
pHysiX 3:605fbcb54e75 16
pHysiX 3:605fbcb54e75 17 /* [YAW PITCH ROLL THROTTLE AUX] */
pHysiX 3:605fbcb54e75 18 int RCCommand[5] = {0, 0, 0, 0, 0};
pHysiX 1:43f8ac7ca6d7 19
pHysiX 1:43f8ac7ca6d7 20 void Task3(void const *argument)
pHysiX 1:43f8ac7ca6d7 21 {
pHysiX 1:43f8ac7ca6d7 22 if (BT.readable()) {
pHysiX 1:43f8ac7ca6d7 23 char data = BT.getc();
pHysiX 3:605fbcb54e75 24 if (data == 'B') {
pHysiX 4:01921a136f58 25 box_demo = true;
pHysiX 5:4879ef0e6d41 26 rc_out = false;
pHysiX 5:4879ef0e6d41 27 gyro_out = false;
pHysiX 3:605fbcb54e75 28 } else if (data == 'Z') {
pHysiX 5:4879ef0e6d41 29 box_demo = true;
pHysiX 5:4879ef0e6d41 30 rc_out = false;
pHysiX 5:4879ef0e6d41 31 gyro_out = false;
pHysiX 12:953d25061417 32 ypr_offset[0] = ypr[0];
pHysiX 12:953d25061417 33 ypr_offset[1] = ypr[1];
pHysiX 12:953d25061417 34 ypr_offset[2] = ypr[2];
pHysiX 5:4879ef0e6d41 35 } else if (data == 'R') {
pHysiX 5:4879ef0e6d41 36 box_demo = false;
pHysiX 5:4879ef0e6d41 37 rc_out = true;
pHysiX 5:4879ef0e6d41 38 gyro_out = false;
pHysiX 5:4879ef0e6d41 39 } else if (data == 'G') {
pHysiX 3:605fbcb54e75 40 box_demo = false;
pHysiX 5:4879ef0e6d41 41 rc_out = false;
pHysiX 5:4879ef0e6d41 42 gyro_out = true;
pHysiX 5:4879ef0e6d41 43 } else if (data == '0') {
pHysiX 5:4879ef0e6d41 44 box_demo = false;
pHysiX 5:4879ef0e6d41 45 rc_out = false;
pHysiX 5:4879ef0e6d41 46 gyro_out = false;
pHysiX 1:43f8ac7ca6d7 47 }
pHysiX 1:43f8ac7ca6d7 48 }
pHysiX 12:953d25061417 49
pHysiX 5:4879ef0e6d41 50 RCCommand[2] = rxModule[0].pulsewidth(); // Roll
pHysiX 5:4879ef0e6d41 51 RCCommand[3] = rxModule[1].pulsewidth(); // Throttle
pHysiX 5:4879ef0e6d41 52 RCCommand[1] = rxModule[2].pulsewidth(); // Pitch
pHysiX 5:4879ef0e6d41 53 RCCommand[0] = rxModule[3].pulsewidth(); // Yaw
pHysiX 5:4879ef0e6d41 54 RCCommand[4] = rxModule[4].pulsewidth(); // AUX
pHysiX 3:605fbcb54e75 55
pHysiX 5:4879ef0e6d41 56 if (rxModule[1].stallTimer.read_us() > 18820) {
pHysiX 5:4879ef0e6d41 57 for (int i = 0; i < 5; i++)
pHysiX 4:01921a136f58 58 RCCommand[i] = 0;
pHysiX 3:605fbcb54e75 59 }
pHysiX 5:4879ef0e6d41 60
pHysiX 12:953d25061417 61 if (box_demo) {
pHysiX 12:953d25061417 62 BT.printf("\nV%2.2f\n", voltageSense*VOLTAGE_SCALE);
pHysiX 12:953d25061417 63 BT.printf("\nA%3.2f\nT%2.2f\n", altimeter.Altitude_m(), altimeter.Temp_C());
pHysiX 12:953d25061417 64 } else if (rc_out)
pHysiX 5:4879ef0e6d41 65 BT.printf("%5d %5d %5d %5d %5d\n", RCCommand[0], RCCommand[1], RCCommand[2], RCCommand[3], RCCommand[4]);
pHysiX 12:953d25061417 66
pHysiX 3:605fbcb54e75 67
pHysiX 2:ab967d7b4346 68 //LED[3] = !LED[3];
pHysiX 1:43f8ac7ca6d7 69 }