![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Everything put together
Dependencies: FastAnalogIn MODSERIAL PID QEI RPCInterface Servo mbed-rtos mbed telemetry
Revision 6:f7a2197dd8aa, committed 2016-04-01
- Comitter:
- vsutardja
- Date:
- Fri Apr 01 19:46:22 2016 +0000
- Parent:
- 5:7cba3ffc38bb
- Commit message:
- init
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
telemetry.lib | Show annotated file Show diff for this revision Revisions of this file |
diff -r 7cba3ffc38bb -r f7a2197dd8aa main.cpp --- a/main.cpp Fri Apr 01 01:26:59 2016 +0000 +++ b/main.cpp Fri Apr 01 19:46:22 2016 +0000 @@ -9,19 +9,17 @@ // ========= // Telemetry // ========= -MODSERIAL telemetry_serial(PTC4, PTC3); // TX, RX -telemetry::MbedHal telemetry_hal(telemetry_serial); // Hardware Abstraction Layer -telemetry::Telemetry telemetry_obj(telemetry_hal); // Telemetry - -telemetry::Numeric<uint32_t> tele_time_ms(telemetry_obj, "time", "Time", "ms", 0); -telemetry::NumericArray<uint16_t, 128> tele_linescan(telemetry_obj, "linescan", "Linescan", "ADC", 0); +//MODSERIAL telemetry_serial(PTC4, PTC3); // TX, RX +//telemetry::MbedHal telemetry_hal(telemetry_serial); // Hardware Abstraction Layer +//telemetry::Telemetry telemetry_obj(telemetry_hal); // Telemetry // ============= // Communication // ============= Serial pc(USBTX, USBRX); // USB connection -//Serial bt(PTC4, PTC3); // BlueSMiRF connection +Serial bt(PTC4, PTC3); // BlueSMiRF connection +//int idx = 0; char cmd; // Command char ch; char in[5]; @@ -95,87 +93,87 @@ // ================ // Communications -//void communication(void const *args) { -// while (true) { -// bt.printf("\r\nPress q to return to this prompt.\r\n"); -// bt.printf("Available diagnostics:\r\n"); -// bt.printf(" [0] Velocity\r\n"); -// bt.printf(" [1] Steering\r\n"); -// bt.printf(" [2] Change Kp\r\n"); -// bt.printf(" [3] Change Ki\r\n"); -// bt.printf(" [4] Change Kd\r\n"); -// bt.printf(" [5] Change Ks\r\n"); -// bt.printf(" [6] Change reference velocity\r\n"); -// cmd = bt.getc(); -// while (cmd != 'q') { -// switch(atoi(&cmd)){ -// case 0: -// bt.printf("Duty cycle: %f, Pulse count: %d, Velocity: %f, Kp: %f, Ki: %f, Kd: %f\r\n", d, curr_pulses, velocity, Kp, Ki, Kd); -// break; -// case 1: -// bt.printf("Servo angle: %f, Track center: %d, t_int: %d\r\n", a, center, t_int); -// break; -// case 2: -// bt.printf("Current: %f, New (5 digits): ", Kp); -// for (int i = 0; i < 5; i++) { -// in[i] = bt.getc(); -// bt.putc(in[i]); -// } -// bt.printf("\r\n"); -// Kp = atof(in); -// motor_ctrl.setTunings(Kp, Ki, Kd); -// cmd = 'q'; -// break; -// case 3: -// bt.printf("Current: %f, New (5 digits): ", Ki); -// for (int i = 0; i < 5; i++) { -// in[i] = bt.getc(); -// bt.putc(in[i]); -// } -// bt.printf("\r\n"); -// Ki = atof(in); -// motor_ctrl.setTunings(Kp, Ki, Kd); -// cmd = 'q'; -// break; -// case 4: -// bt.printf("Current: %f, New (5 digits): ", Kd); -// for (int i = 0; i < 5; i++) { -// in[i] = bt.getc(); -// bt.putc(in[i]); -// } -// bt.printf("\r\n"); -// Kd = atof(in); -// motor_ctrl.setTunings(Kp, Ki, Kd); -// cmd = 'q'; -// break; -// case 5: -// bt.printf("Current: %f, New (5 digits): ", Ks); -// for (int i = 0; i < 5; i++) { -// in[i] = bt.getc(); -// bt.putc(in[i]); -// } -// bt.printf("\r\n"); -// Ks = atof(in); -// cmd = 'q'; -// break; -// case 6: -// bt.printf("Current: %f, New (5 digits): ", ref_v); -// for (int i = 0; i < 5; i++) { -// in[i] = bt.getc(); -// bt.putc(in[i]); -// } -// bt.printf("\r\n"); -// ref_v = atof(in); -// motor_ctrl.setSetPoint(ref_v); -// cmd = 'q'; -// break; -// } -// if (bt.readable()) { -// cmd = bt.getc(); -// } -// } -// } -//} +void communication(void const *args) { + while (true) { + bt.printf("\r\nPress q to return to this prompt.\r\n"); + bt.printf("Available diagnostics:\r\n"); + bt.printf(" [0] Velocity\r\n"); + bt.printf(" [1] Steering\r\n"); + bt.printf(" [2] Change Kp\r\n"); + bt.printf(" [3] Change Ki\r\n"); + bt.printf(" [4] Change Kd\r\n"); + bt.printf(" [5] Change Ks\r\n"); + bt.printf(" [6] Change reference velocity\r\n"); + cmd = bt.getc(); + while (cmd != 'q') { + switch(atoi(&cmd)){ + case 0: + bt.printf("Duty cycle: %f, Pulse count: %d, Velocity: %f, Kp: %f, Ki: %f, Kd: %f\r\n", d, curr_pulses, velocity, Kp, Ki, Kd); + break; + case 1: + bt.printf("Servo angle: %f, Track center: %d, t_int: %d\r\n", a, center, t_int); + break; + case 2: + bt.printf("Current: %f, New (5 digits): ", Kp); + for (int i = 0; i < 5; i++) { + in[i] = bt.getc(); + bt.putc(in[i]); + } + bt.printf("\r\n"); + Kp = atof(in); + motor_ctrl.setTunings(Kp, Ki, Kd); + cmd = 'q'; + break; + case 3: + bt.printf("Current: %f, New (5 digits): ", Ki); + for (int i = 0; i < 5; i++) { + in[i] = bt.getc(); + bt.putc(in[i]); + } + bt.printf("\r\n"); + Ki = atof(in); + motor_ctrl.setTunings(Kp, Ki, Kd); + cmd = 'q'; + break; + case 4: + bt.printf("Current: %f, New (5 digits): ", Kd); + for (int i = 0; i < 5; i++) { + in[i] = bt.getc(); + bt.putc(in[i]); + } + bt.printf("\r\n"); + Kd = atof(in); + motor_ctrl.setTunings(Kp, Ki, Kd); + cmd = 'q'; + break; + case 5: + bt.printf("Current: %f, New (5 digits): ", Ks); + for (int i = 0; i < 5; i++) { + in[i] = bt.getc(); + bt.putc(in[i]); + } + bt.printf("\r\n"); + Ks = atof(in); + cmd = 'q'; + break; + case 6: + bt.printf("Current: %f, New (5 digits): ", ref_v); + for (int i = 0; i < 5; i++) { + in[i] = bt.getc(); + bt.putc(in[i]); + } + bt.printf("\r\n"); + ref_v = atof(in); + motor_ctrl.setSetPoint(ref_v); + cmd = 'q'; + break; + } + if (bt.readable()) { + cmd = bt.getc(); + } + } + } +} // Read data from camera void read_camera() { @@ -191,7 +189,6 @@ for (int i = 0; i < 128; i++) { clk = 0; img[i] = ao.read_u16(); - tele_linescan[i] = img[i]; clk = 1; wait_us(1); } @@ -290,17 +287,13 @@ motor_ctrl.setMode(1); // Initialize bluetooth -// bt.baud(115200); + bt.baud(115200); // Initialize communications thread -// Thread communication_thread(communication); - - telemetry_obj.transmit_header(); - + Thread communication_thread(communication); // Start motor controller while (true) { - telemetry_obj.do_io(); curr_pulses = qei.getPulses(); //for (int i = 0; i < MVG_AVG - 1; i++) { // v_prev[i] = abs(1.5 - 0.5 * (1.5 - v_prev[i+1])); @@ -317,6 +310,6 @@ d = motor_ctrl.compute(); motor = 1.0 - d; wait(interval); -// pc.printf("Exposure: %d, Center: %d, Angle: %f\r\n", t_int, center, a); + pc.printf("Exposure: %d, Center: %d, Angle: %f\r\n", t_int, center, a); } } \ No newline at end of file
diff -r 7cba3ffc38bb -r f7a2197dd8aa telemetry.lib --- a/telemetry.lib Fri Apr 01 01:26:59 2016 +0000 +++ b/telemetry.lib Fri Apr 01 19:46:22 2016 +0000 @@ -1,1 +1,1 @@ -telemetry#aca5a32d2759 +https://developer.mbed.org/teams/EE192-Team-4/code/telemetry/#aca5a32d2759