Xiaohai Li / Mbed 2 deprecated RPi_MOT_HAT

Dependencies:   mbed

Committer:
nightseas
Date:
Thu Aug 20 11:36:01 2015 +0000
Revision:
3:171f4d0ca77b
Add debug commander tool.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nightseas 3:171f4d0ca77b 1 #include "SysConfig.h"
nightseas 3:171f4d0ca77b 2
nightseas 3:171f4d0ca77b 3 void LedFlasher(void)
nightseas 3:171f4d0ca77b 4 {
nightseas 3:171f4d0ca77b 5 int ledNumOn;
nightseas 3:171f4d0ca77b 6 for(ledNumOn = 1; ledNumOn < LED_NUM_MAX; ledNumOn++)
nightseas 3:171f4d0ca77b 7 {
nightseas 3:171f4d0ca77b 8 LedOffAll();
nightseas 3:171f4d0ca77b 9 LedOn(ledNumOn);
nightseas 3:171f4d0ca77b 10 wait_ms(300);
nightseas 3:171f4d0ca77b 11 }
nightseas 3:171f4d0ca77b 12 }
nightseas 3:171f4d0ca77b 13
nightseas 3:171f4d0ca77b 14 void DebugFunc_Motor(void)
nightseas 3:171f4d0ca77b 15 {
nightseas 3:171f4d0ca77b 16 int cmdDebug;
nightseas 3:171f4d0ca77b 17 int dir = 's', turn = 'm';
nightseas 3:171f4d0ca77b 18 float speed = 0;
nightseas 3:171f4d0ca77b 19
nightseas 3:171f4d0ca77b 20 Mot_StartVelocimeter();
nightseas 3:171f4d0ca77b 21
nightseas 3:171f4d0ca77b 22 uart_db.printf("\n\r\n\r++++++++ Motor Test ++++++++\n\r\n\r");
nightseas 3:171f4d0ca77b 23 uart_db.printf("Usage: +.speed up, -.speed down, p.stop, \n\rw.forward, s.backward, a.turn left, d.turn right, q.quit test\n\r");
nightseas 3:171f4d0ca77b 24 uart_db.printf(" Input:");
nightseas 3:171f4d0ca77b 25
nightseas 3:171f4d0ca77b 26 while(1)
nightseas 3:171f4d0ca77b 27 {
nightseas 3:171f4d0ca77b 28 for(int i=0;i<3000;i++)
nightseas 3:171f4d0ca77b 29 {
nightseas 3:171f4d0ca77b 30 cmdDebug = uart_db.getc();
nightseas 3:171f4d0ca77b 31 switch(cmdDebug)
nightseas 3:171f4d0ca77b 32 {
nightseas 3:171f4d0ca77b 33 case '+':
nightseas 3:171f4d0ca77b 34 speed += 0.1;
nightseas 3:171f4d0ca77b 35 if(speed > 1)
nightseas 3:171f4d0ca77b 36 speed = 1;
nightseas 3:171f4d0ca77b 37 Mot_Ctrl(dir, turn, speed);
nightseas 3:171f4d0ca77b 38 uart_db.printf("\n\rMotor speed set to %.01f%%.\n\r", speed * 100.0);
nightseas 3:171f4d0ca77b 39 break;
nightseas 3:171f4d0ca77b 40
nightseas 3:171f4d0ca77b 41 case '-':
nightseas 3:171f4d0ca77b 42 speed -= 0.1;
nightseas 3:171f4d0ca77b 43 if(speed < 0)
nightseas 3:171f4d0ca77b 44 speed = 0;
nightseas 3:171f4d0ca77b 45 Mot_Ctrl(dir, turn, speed);
nightseas 3:171f4d0ca77b 46 uart_db.printf("\n\rMotor speed set to %.01f%%.\n\r", speed * 100.0);
nightseas 3:171f4d0ca77b 47 break;
nightseas 3:171f4d0ca77b 48
nightseas 3:171f4d0ca77b 49 case 'w':
nightseas 3:171f4d0ca77b 50 dir = 'f';
nightseas 3:171f4d0ca77b 51 turn = 'm';
nightseas 3:171f4d0ca77b 52 Mot_Ctrl(dir, turn, speed);
nightseas 3:171f4d0ca77b 53 uart_db.printf("\n\rMotor direction set to forward.\n\r");
nightseas 3:171f4d0ca77b 54 break;
nightseas 3:171f4d0ca77b 55
nightseas 3:171f4d0ca77b 56 case 's':
nightseas 3:171f4d0ca77b 57 dir = 'b';
nightseas 3:171f4d0ca77b 58 turn = 'm';
nightseas 3:171f4d0ca77b 59 Mot_Ctrl(dir, turn, speed);
nightseas 3:171f4d0ca77b 60 uart_db.printf("\n\rMotor direction set to backward.\n\r");
nightseas 3:171f4d0ca77b 61 break;
nightseas 3:171f4d0ca77b 62
nightseas 3:171f4d0ca77b 63 case 'a':
nightseas 3:171f4d0ca77b 64 turn = 'l';
nightseas 3:171f4d0ca77b 65 Mot_Ctrl(dir, turn, speed);
nightseas 3:171f4d0ca77b 66 uart_db.printf("\n\rMotor will turn left.\n\r");
nightseas 3:171f4d0ca77b 67 break;
nightseas 3:171f4d0ca77b 68
nightseas 3:171f4d0ca77b 69 case 'd':
nightseas 3:171f4d0ca77b 70 turn = 'r';
nightseas 3:171f4d0ca77b 71 Mot_Ctrl(dir, turn, speed);
nightseas 3:171f4d0ca77b 72 uart_db.printf("\n\rMotor will turn right.\n\r");
nightseas 3:171f4d0ca77b 73 break;
nightseas 3:171f4d0ca77b 74
nightseas 3:171f4d0ca77b 75 case 'p':
nightseas 3:171f4d0ca77b 76 dir = 's';
nightseas 3:171f4d0ca77b 77 turn = 'm';
nightseas 3:171f4d0ca77b 78 speed = 0;
nightseas 3:171f4d0ca77b 79 Mot_Ctrl(dir, turn, speed);
nightseas 3:171f4d0ca77b 80 uart_db.printf("\n\rMotor will stop.\n\r");
nightseas 3:171f4d0ca77b 81 break;
nightseas 3:171f4d0ca77b 82
nightseas 3:171f4d0ca77b 83 case 'q':
nightseas 3:171f4d0ca77b 84 uart_db.printf("\n\rQuiting test...\n\r");
nightseas 3:171f4d0ca77b 85 Mot_StopVelocimeter();
nightseas 3:171f4d0ca77b 86 return;
nightseas 3:171f4d0ca77b 87 }
nightseas 3:171f4d0ca77b 88 wait_ms(1);
nightseas 3:171f4d0ca77b 89 }
nightseas 3:171f4d0ca77b 90 uart_db.printf("\n\r[Speed Info]\n\rMOT1 = %drpm, MOT2 = %drpm, MOT3 = %drpm, MOT4 = %drpm.\n\r", Mot_GetSpeed(1), Mot_GetSpeed(2), Mot_GetSpeed(3), Mot_GetSpeed(4));
nightseas 3:171f4d0ca77b 91 }
nightseas 3:171f4d0ca77b 92 }
nightseas 3:171f4d0ca77b 93
nightseas 3:171f4d0ca77b 94 void DebugFunc_Servo(void)
nightseas 3:171f4d0ca77b 95 {
nightseas 3:171f4d0ca77b 96 int cmdDebug;
nightseas 3:171f4d0ca77b 97 int channel = 1;
nightseas 3:171f4d0ca77b 98 float angle = 0;
nightseas 3:171f4d0ca77b 99
nightseas 3:171f4d0ca77b 100 uart_db.printf("\n\r\n\r++++++++ Servo Test ++++++++\n\r\n\r");
nightseas 3:171f4d0ca77b 101 uart_db.printf("Usage: 1~4.select servo channel, +.increase angle, -.decrease angle, \n\rd.set default angle, q.quit test\n\r");
nightseas 3:171f4d0ca77b 102 uart_db.printf(" Input:");
nightseas 3:171f4d0ca77b 103
nightseas 3:171f4d0ca77b 104 while(1)
nightseas 3:171f4d0ca77b 105 {
nightseas 3:171f4d0ca77b 106 cmdDebug = uart_db.getc();
nightseas 3:171f4d0ca77b 107 switch(cmdDebug)
nightseas 3:171f4d0ca77b 108 {
nightseas 3:171f4d0ca77b 109 case '1':
nightseas 3:171f4d0ca77b 110 case '2':
nightseas 3:171f4d0ca77b 111 case '3':
nightseas 3:171f4d0ca77b 112 case '4':
nightseas 3:171f4d0ca77b 113 channel = cmdDebug - '0';
nightseas 3:171f4d0ca77b 114 uart_db.printf("\n\rSelect servo channel <%d>.\n\r", channel);
nightseas 3:171f4d0ca77b 115 break;
nightseas 3:171f4d0ca77b 116
nightseas 3:171f4d0ca77b 117 case '+':
nightseas 3:171f4d0ca77b 118 angle += 5;
nightseas 3:171f4d0ca77b 119 if(angle > 90)
nightseas 3:171f4d0ca77b 120 angle = 90;
nightseas 3:171f4d0ca77b 121 Servo_SetAngle(channel, angle);
nightseas 3:171f4d0ca77b 122 uart_db.printf("\n\rServo position set to %.01f degrees.\n\r", angle);
nightseas 3:171f4d0ca77b 123 break;
nightseas 3:171f4d0ca77b 124
nightseas 3:171f4d0ca77b 125 case '-':
nightseas 3:171f4d0ca77b 126 angle -= 5;
nightseas 3:171f4d0ca77b 127 if(angle < -90)
nightseas 3:171f4d0ca77b 128 angle = -90;
nightseas 3:171f4d0ca77b 129 Servo_SetAngle(channel, angle);
nightseas 3:171f4d0ca77b 130 uart_db.printf("\n\rServo position set to %.01f degrees.\n\r", angle);
nightseas 3:171f4d0ca77b 131 break;
nightseas 3:171f4d0ca77b 132
nightseas 3:171f4d0ca77b 133 case 'd':
nightseas 3:171f4d0ca77b 134 angle = 0;
nightseas 3:171f4d0ca77b 135 Servo_SetAngle(channel, angle);
nightseas 3:171f4d0ca77b 136 uart_db.printf("\n\rServo position set back to default.\n\r", angle);
nightseas 3:171f4d0ca77b 137 break;
nightseas 3:171f4d0ca77b 138
nightseas 3:171f4d0ca77b 139 case 'q':
nightseas 3:171f4d0ca77b 140 uart_db.printf("\n\rQuiting test...\n\r");
nightseas 3:171f4d0ca77b 141 Mot_StopVelocimeter();
nightseas 3:171f4d0ca77b 142 return;
nightseas 3:171f4d0ca77b 143 }
nightseas 3:171f4d0ca77b 144 wait_ms(1);
nightseas 3:171f4d0ca77b 145 }
nightseas 3:171f4d0ca77b 146 }
nightseas 3:171f4d0ca77b 147
nightseas 3:171f4d0ca77b 148 void DebugFunc_Us(void)
nightseas 3:171f4d0ca77b 149 {
nightseas 3:171f4d0ca77b 150 uart_db.printf("Test function not implemented...\n\r");
nightseas 3:171f4d0ca77b 151 }
nightseas 3:171f4d0ca77b 152
nightseas 3:171f4d0ca77b 153 void DebugFunc_Vmon(void)
nightseas 3:171f4d0ca77b 154 {
nightseas 3:171f4d0ca77b 155 uart_db.printf("Test function not implemented...\n\r");
nightseas 3:171f4d0ca77b 156 }
nightseas 3:171f4d0ca77b 157
nightseas 3:171f4d0ca77b 158 void DebugFunc_TestAll(void)
nightseas 3:171f4d0ca77b 159 {
nightseas 3:171f4d0ca77b 160 SelfTest();
nightseas 3:171f4d0ca77b 161 }
nightseas 3:171f4d0ca77b 162
nightseas 3:171f4d0ca77b 163 //Debug interface with text menu through serial port
nightseas 3:171f4d0ca77b 164 //This function is a loop with exit option
nightseas 3:171f4d0ca77b 165 void DebugCommander(void)
nightseas 3:171f4d0ca77b 166 {
nightseas 3:171f4d0ca77b 167 int quitFlag = 0, cmdDebug;
nightseas 3:171f4d0ca77b 168 while(!quitFlag)
nightseas 3:171f4d0ca77b 169 {
nightseas 3:171f4d0ca77b 170 uart_db.printf("\n\r\n\r============ RPi MOT HAT Debug Demo ============\n\r\n\r");
nightseas 3:171f4d0ca77b 171 uart_db.printf(" 0. All function auto test.\n\r");
nightseas 3:171f4d0ca77b 172 uart_db.printf(" 1. Motor control test.\n\r");
nightseas 3:171f4d0ca77b 173 uart_db.printf(" 2. Servo control test.\n\r");
nightseas 3:171f4d0ca77b 174 uart_db.printf(" 3. Ultrasound rangefinder test.\n\r");
nightseas 3:171f4d0ca77b 175 uart_db.printf(" 4. Power monitor test.\n\r");
nightseas 3:171f4d0ca77b 176 uart_db.printf(" q. Exit demo.\n\r\n\r");
nightseas 3:171f4d0ca77b 177 uart_db.printf(" Input:");
nightseas 3:171f4d0ca77b 178
nightseas 3:171f4d0ca77b 179 while(!uart_db.readable());
nightseas 3:171f4d0ca77b 180 cmdDebug = uart_db.getc();
nightseas 3:171f4d0ca77b 181
nightseas 3:171f4d0ca77b 182 switch(cmdDebug)
nightseas 3:171f4d0ca77b 183 {
nightseas 3:171f4d0ca77b 184 case '0':
nightseas 3:171f4d0ca77b 185 DebugFunc_TestAll();
nightseas 3:171f4d0ca77b 186 break;
nightseas 3:171f4d0ca77b 187
nightseas 3:171f4d0ca77b 188 case '1':
nightseas 3:171f4d0ca77b 189 DebugFunc_Motor();
nightseas 3:171f4d0ca77b 190 break;
nightseas 3:171f4d0ca77b 191
nightseas 3:171f4d0ca77b 192 case '2':
nightseas 3:171f4d0ca77b 193 DebugFunc_Servo();
nightseas 3:171f4d0ca77b 194 break;
nightseas 3:171f4d0ca77b 195
nightseas 3:171f4d0ca77b 196 case '3':
nightseas 3:171f4d0ca77b 197 DebugFunc_Us();
nightseas 3:171f4d0ca77b 198 break;
nightseas 3:171f4d0ca77b 199
nightseas 3:171f4d0ca77b 200 case '4':
nightseas 3:171f4d0ca77b 201 DebugFunc_Vmon();
nightseas 3:171f4d0ca77b 202 break;
nightseas 3:171f4d0ca77b 203
nightseas 3:171f4d0ca77b 204 case 'q':
nightseas 3:171f4d0ca77b 205 quitFlag = 1;
nightseas 3:171f4d0ca77b 206 break;
nightseas 3:171f4d0ca77b 207
nightseas 3:171f4d0ca77b 208 default:
nightseas 3:171f4d0ca77b 209 uart_db.printf("Incorrect input!\n\r");
nightseas 3:171f4d0ca77b 210 break;
nightseas 3:171f4d0ca77b 211 }
nightseas 3:171f4d0ca77b 212 }
nightseas 3:171f4d0ca77b 213 }
nightseas 3:171f4d0ca77b 214