Mitchell Hatfield / Mbed 2 deprecated Component_Test_Interface

Dependencies:   BridgeDriver FrontPanelButtons MCP23017 SDFileSystem TextLCD mbed

Committer:
mehatfie
Date:
Fri Sep 19 00:46:26 2014 +0000
Revision:
3:078e9a1e8be3
Parent:
2:3e7baa3e3fec
- Working properly for Motor, Voltage_Driver, and looping; - successful looping and program completion; - organizing for more readable and understandable code is starting

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mehatfie 2:3e7baa3e3fec 1 #include "Motor.hpp"
mehatfie 0:22618cf06f45 2 //#include "mbed.h"
mehatfie 0:22618cf06f45 3 //#include "LocalPinNames.h"
mehatfie 0:22618cf06f45 4 //#include "BridgeDriver.h"
mehatfie 2:3e7baa3e3fec 5
mehatfie 2:3e7baa3e3fec 6 //Constructor
mehatfie 2:3e7baa3e3fec 7 Motor::Motor(Line lineData){
mehatfie 2:3e7baa3e3fec 8 /*
mehatfie 2:3e7baa3e3fec 9 //Order of Line: Command, Local_Name, VOLTAGE_DRIVER, Channel(1,2,3,4,5,6,7,8)
mehatfie 2:3e7baa3e3fec 10 if (lineData.numWords != 4){
mehatfie 2:3e7baa3e3fec 11 //Error Check, incorrect number of parameter, error out
mehatfie 2:3e7baa3e3fec 12 //return 0;
mehatfie 2:3e7baa3e3fec 13 }*/
mehatfie 2:3e7baa3e3fec 14
mehatfie 2:3e7baa3e3fec 15 /*lcd.setAddress(0,3);
mehatfie 2:3e7baa3e3fec 16 lcd.printf("CHECK Motor Construct");
mehatfie 2:3e7baa3e3fec 17 wait(2);*/
mehatfie 2:3e7baa3e3fec 18
mehatfie 2:3e7baa3e3fec 19 string channel = lineData.word[3]; //Parameter is a single character, so dereference the point to the word
mehatfie 2:3e7baa3e3fec 20
mehatfie 2:3e7baa3e3fec 21 if ((channel.compare("A") == 0) || (channel.compare("a") == 0))
mehatfie 2:3e7baa3e3fec 22 this->motor = BridgeDriver::MOTOR_A;
mehatfie 2:3e7baa3e3fec 23 else if ((channel.compare("B") == 0) || (channel.compare("b") == 0))
mehatfie 2:3e7baa3e3fec 24 this->motor = BridgeDriver::MOTOR_B;
mehatfie 2:3e7baa3e3fec 25 else if ((channel.compare("C") == 0) || (channel.compare("c") == 0))
mehatfie 2:3e7baa3e3fec 26 this->motor = BridgeDriver::MOTOR_C;
mehatfie 2:3e7baa3e3fec 27 else if ((channel.compare("D") == 0) || (channel.compare("d") == 0))
mehatfie 2:3e7baa3e3fec 28 this->motor = BridgeDriver::MOTOR_D;
mehatfie 2:3e7baa3e3fec 29 }
mehatfie 2:3e7baa3e3fec 30
mehatfie 2:3e7baa3e3fec 31
mehatfie 2:3e7baa3e3fec 32 enum BridgeDriver::Motors Motor::getMotor(){
mehatfie 2:3e7baa3e3fec 33 return this->motor;
mehatfie 2:3e7baa3e3fec 34 }
mehatfie 2:3e7baa3e3fec 35
mehatfie 2:3e7baa3e3fec 36 //A line consists of [ __(Local_Name)__ __(function)__ __(parameter1)__ __(parameter2)__ __(parameter3)__ ... and so on]
mehatfie 2:3e7baa3e3fec 37 int Motor::interpret(Line &lineData){
mehatfie 2:3e7baa3e3fec 38 /*
mehatfie 2:3e7baa3e3fec 39 lcd.setAddress(0,2);
mehatfie 2:3e7baa3e3fec 40 lcd.printf("CHECK Motor 123456");
mehatfie 2:3e7baa3e3fec 41 lcd.setAddress(0,3);
mehatfie 2:3e7baa3e3fec 42 lcd.printf("func: %s ", lineData.word[1]);
mehatfie 2:3e7baa3e3fec 43 wait(2);*/
mehatfie 2:3e7baa3e3fec 44
mehatfie 2:3e7baa3e3fec 45 //Order of Line: Local_Name, Function_Name, Param1, Param2, Param3,.......
mehatfie 2:3e7baa3e3fec 46 //char localname[15] = lineData.word[0]; //just for the sake of following the variable easily and understanding
mehatfie 2:3e7baa3e3fec 47 string func = lineData.word[1];
mehatfie 2:3e7baa3e3fec 48
mehatfie 2:3e7baa3e3fec 49 /******************************************************************************/
mehatfie 2:3e7baa3e3fec 50 /*** <Func: enableBrake> ***/
mehatfie 2:3e7baa3e3fec 51 /******************************************************************************/
mehatfie 2:3e7baa3e3fec 52 if (func.compare("enableBrake") == 0){
mehatfie 2:3e7baa3e3fec 53
mehatfie 2:3e7baa3e3fec 54 if (lineData.numWords != 4){
mehatfie 2:3e7baa3e3fec 55 //Error Check, incorrect number of parameter, error out
mehatfie 2:3e7baa3e3fec 56 return 0;
mehatfie 2:3e7baa3e3fec 57 }
mehatfie 2:3e7baa3e3fec 58
mehatfie 2:3e7baa3e3fec 59 //Initialize and Convert Parameters
mehatfie 2:3e7baa3e3fec 60 string enable = lineData.word[2];
mehatfie 2:3e7baa3e3fec 61 int enableValue = 0;
mehatfie 2:3e7baa3e3fec 62 sscanf(enable.c_str(), "%d", &enableValue);
mehatfie 2:3e7baa3e3fec 63
mehatfie 2:3e7baa3e3fec 64 bridges.enableBraking(getMotor(), enableValue);
mehatfie 2:3e7baa3e3fec 65 }
mehatfie 2:3e7baa3e3fec 66
mehatfie 2:3e7baa3e3fec 67 /******************************************************************************/
mehatfie 2:3e7baa3e3fec 68 /*** <Func: forceBrake> ***/
mehatfie 2:3e7baa3e3fec 69 /******************************************************************************/
mehatfie 2:3e7baa3e3fec 70 else if (func.compare("forceBrake") == 0){
mehatfie 2:3e7baa3e3fec 71
mehatfie 2:3e7baa3e3fec 72 if (lineData.numWords != 3){
mehatfie 2:3e7baa3e3fec 73 //Error Check, incorrect number of parameter, error out
mehatfie 2:3e7baa3e3fec 74 return 0;
mehatfie 2:3e7baa3e3fec 75 }
mehatfie 2:3e7baa3e3fec 76
mehatfie 2:3e7baa3e3fec 77 bridges.forceBrake(getMotor());
mehatfie 2:3e7baa3e3fec 78 }
mehatfie 2:3e7baa3e3fec 79
mehatfie 2:3e7baa3e3fec 80
mehatfie 2:3e7baa3e3fec 81 /******************************************************************************/
mehatfie 2:3e7baa3e3fec 82 /*** <Func: drive> ***/
mehatfie 2:3e7baa3e3fec 83 /******************************************************************************/
mehatfie 2:3e7baa3e3fec 84 else if (func.compare("drive") == 0){
mehatfie 2:3e7baa3e3fec 85
mehatfie 2:3e7baa3e3fec 86 /*lcd.setAddress(0,2);
mehatfie 2:3e7baa3e3fec 87 lcd.printf("wrd2: %s", lineData.word[1]);
mehatfie 2:3e7baa3e3fec 88 lcd.setAddress(0,3);
mehatfie 2:3e7baa3e3fec 89 lcd.printf("TEST2 ");
mehatfie 2:3e7baa3e3fec 90 wait(2);*/
mehatfie 2:3e7baa3e3fec 91
mehatfie 2:3e7baa3e3fec 92 if (lineData.numWords != 4){
mehatfie 2:3e7baa3e3fec 93 //Error Check, incorrect number of parameter, error out
mehatfie 2:3e7baa3e3fec 94 return 0;
mehatfie 2:3e7baa3e3fec 95 }
mehatfie 2:3e7baa3e3fec 96
mehatfie 2:3e7baa3e3fec 97 //Initialize Parameters
mehatfie 2:3e7baa3e3fec 98 string speed = lineData.word[2];
mehatfie 2:3e7baa3e3fec 99 string dir = lineData.word[3];
mehatfie 2:3e7baa3e3fec 100
mehatfie 2:3e7baa3e3fec 101 //Initialize Convertion Variables if needed
mehatfie 2:3e7baa3e3fec 102 float speedValue;
mehatfie 2:3e7baa3e3fec 103 int dirValue = 0;
mehatfie 2:3e7baa3e3fec 104
mehatfie 2:3e7baa3e3fec 105 //Convert string to usable values
mehatfie 2:3e7baa3e3fec 106 //NOTE both atof and atoi functions return 0 if no valid conversion could be performed
mehatfie 2:3e7baa3e3fec 107 sscanf(speed.c_str(), "%f", &speedValue);
mehatfie 2:3e7baa3e3fec 108 speedValue = speedValue / 100;
mehatfie 2:3e7baa3e3fec 109
mehatfie 2:3e7baa3e3fec 110 if (speedValue <= 0)
mehatfie 2:3e7baa3e3fec 111 return 0; //Error Out because a value gives no functionality or is wrong
mehatfie 2:3e7baa3e3fec 112
mehatfie 2:3e7baa3e3fec 113 if (dir.compare("CC") == 0 || dir.compare("cc") == 0)
mehatfie 2:3e7baa3e3fec 114 dirValue = -1; //Turn Clockwise
mehatfie 2:3e7baa3e3fec 115 else if (dir.compare("C") == 0 || dir.compare("c") == 0)
mehatfie 2:3e7baa3e3fec 116 dirValue = 1; //Turn CounterClockwise
mehatfie 2:3e7baa3e3fec 117 else
mehatfie 2:3e7baa3e3fec 118 return 0; //Error Out since the parameter is incorrect
mehatfie 2:3e7baa3e3fec 119
mehatfie 2:3e7baa3e3fec 120
mehatfie 2:3e7baa3e3fec 121 bridges.drive(getMotor(), dirValue, speedValue); //Turn on the Motor
mehatfie 2:3e7baa3e3fec 122
mehatfie 2:3e7baa3e3fec 123 }
mehatfie 2:3e7baa3e3fec 124 /******************************************************************************/
mehatfie 2:3e7baa3e3fec 125 /**** <Func: off> ****/
mehatfie 2:3e7baa3e3fec 126 /******************************************************************************/
mehatfie 2:3e7baa3e3fec 127 else if (func.compare("off") == 0){
mehatfie 2:3e7baa3e3fec 128
mehatfie 2:3e7baa3e3fec 129 /*lcd.setAddress(0,2);
mehatfie 2:3e7baa3e3fec 130 lcd.printf("wrd2: %s", lineData.word[1]);
mehatfie 2:3e7baa3e3fec 131 lcd.setAddress(0,3);
mehatfie 2:3e7baa3e3fec 132 lcd.printf("TEST2 ");
mehatfie 2:3e7baa3e3fec 133 wait(1);*/
mehatfie 2:3e7baa3e3fec 134
mehatfie 2:3e7baa3e3fec 135 if (lineData.numWords != 2){
mehatfie 2:3e7baa3e3fec 136 //Error Check, incorrect number of parameter, error out
mehatfie 2:3e7baa3e3fec 137 return 0;
mehatfie 2:3e7baa3e3fec 138 }
mehatfie 2:3e7baa3e3fec 139
mehatfie 2:3e7baa3e3fec 140 bridges.drive(getMotor(), 0, 0); //Turn off the Motor
mehatfie 2:3e7baa3e3fec 141 }
mehatfie 2:3e7baa3e3fec 142
mehatfie 2:3e7baa3e3fec 143 else {
mehatfie 2:3e7baa3e3fec 144 return 0;
mehatfie 2:3e7baa3e3fec 145
mehatfie 2:3e7baa3e3fec 146 }
mehatfie 2:3e7baa3e3fec 147
mehatfie 2:3e7baa3e3fec 148 return 1;
mehatfie 2:3e7baa3e3fec 149 }
mehatfie 2:3e7baa3e3fec 150
mehatfie 2:3e7baa3e3fec 151
mehatfie 2:3e7baa3e3fec 152
mehatfie 2:3e7baa3e3fec 153
mehatfie 2:3e7baa3e3fec 154
mehatfie 2:3e7baa3e3fec 155
mehatfie 2:3e7baa3e3fec 156
mehatfie 2:3e7baa3e3fec 157 /*
mehatfie 2:3e7baa3e3fec 158 int Motor::enableBrake(){
mehatfie 2:3e7baa3e3fec 159
mehatfie 2:3e7baa3e3fec 160 if (lineData.numWords != 4){
mehatfie 2:3e7baa3e3fec 161 //Error Check, incorrect number of parameter, error out
mehatfie 2:3e7baa3e3fec 162 return 0;
mehatfie 2:3e7baa3e3fec 163 }
mehatfie 2:3e7baa3e3fec 164
mehatfie 2:3e7baa3e3fec 165 //Initialize and Convert Parameters
mehatfie 2:3e7baa3e3fec 166 char *enable = lineData.word[2];
mehatfie 2:3e7baa3e3fec 167 int enableValue = atoi(enable);
mehatfie 2:3e7baa3e3fec 168
mehatfie 2:3e7baa3e3fec 169 //If the atoi returned anything besides 0, it worked properly
mehatfie 2:3e7baa3e3fec 170 if (enableValue)
mehatfie 2:3e7baa3e3fec 171 bridges.enableBraking(getMotor(), enableValue);
mehatfie 2:3e7baa3e3fec 172 else{
mehatfie 2:3e7baa3e3fec 173 //Error Check, incorrect number of parameter, error out
mehatfie 2:3e7baa3e3fec 174 return 0;
mehatfie 2:3e7baa3e3fec 175 }
mehatfie 2:3e7baa3e3fec 176
mehatfie 2:3e7baa3e3fec 177 return 1;
mehatfie 2:3e7baa3e3fec 178 }
mehatfie 2:3e7baa3e3fec 179
mehatfie 2:3e7baa3e3fec 180 int Motor::forceBrake(){
mehatfie 2:3e7baa3e3fec 181
mehatfie 2:3e7baa3e3fec 182 if (lineData.numWords != 3){
mehatfie 2:3e7baa3e3fec 183 //Error Check, incorrect number of parameter, error out
mehatfie 2:3e7baa3e3fec 184 return 0;
mehatfie 2:3e7baa3e3fec 185 }
mehatfie 2:3e7baa3e3fec 186
mehatfie 2:3e7baa3e3fec 187 bridges.forceBrake(getMotor());
mehatfie 2:3e7baa3e3fec 188 }
mehatfie 2:3e7baa3e3fec 189
mehatfie 2:3e7baa3e3fec 190 int Motor::drive(){
mehatfie 2:3e7baa3e3fec 191
mehatfie 2:3e7baa3e3fec 192 if (lineData.numWords != 4){
mehatfie 2:3e7baa3e3fec 193 //Error Check, incorrect number of parameter, error out
mehatfie 2:3e7baa3e3fec 194 return 0;
mehatfie 2:3e7baa3e3fec 195 }
mehatfie 2:3e7baa3e3fec 196
mehatfie 2:3e7baa3e3fec 197 //Initialize Parameters
mehatfie 2:3e7baa3e3fec 198 char *speed = lineData.word[2];
mehatfie 2:3e7baa3e3fec 199 char *dir = lineData.word[3];
mehatfie 2:3e7baa3e3fec 200
mehatfie 2:3e7baa3e3fec 201 //Initialize Convertion Variables if needed
mehatfie 2:3e7baa3e3fec 202 float speedValue;
mehatfie 2:3e7baa3e3fec 203 int dirValue = 0;
mehatfie 2:3e7baa3e3fec 204
mehatfie 2:3e7baa3e3fec 205 //Convert string to usable values
mehatfie 2:3e7baa3e3fec 206 //NOTE both atof and atoi functions return 0 if no valid conversion could be performed
mehatfie 2:3e7baa3e3fec 207 speedValue = atof(speed) / 100;
mehatfie 2:3e7baa3e3fec 208
mehatfie 2:3e7baa3e3fec 209 if (speedValue <= 0)
mehatfie 2:3e7baa3e3fec 210 return 0; //Error Out because a value gives no functionality or is wrong
mehatfie 2:3e7baa3e3fec 211
mehatfie 2:3e7baa3e3fec 212 if (strncmp(dir,"CC", 2) == 0 || strncmp(dir,"cc", 2) == 0)
mehatfie 2:3e7baa3e3fec 213 dirValue = -1; //Turn Clockwise
mehatfie 2:3e7baa3e3fec 214 else if (strncmp(dir,"C", 1) == 0 || strncmp(dir,"c", 1) == 0)
mehatfie 2:3e7baa3e3fec 215 dirValue = 1; //Turn CounterClockwise
mehatfie 2:3e7baa3e3fec 216 else
mehatfie 2:3e7baa3e3fec 217 return 0; //Error Out since the parameter is incorrect
mehatfie 2:3e7baa3e3fec 218
mehatfie 2:3e7baa3e3fec 219 bridges.drive(getMotor(), dirValue, speedValue); //Turn on the Motor
mehatfie 2:3e7baa3e3fec 220 }
mehatfie 2:3e7baa3e3fec 221 */
mehatfie 2:3e7baa3e3fec 222
mehatfie 2:3e7baa3e3fec 223
mehatfie 2:3e7baa3e3fec 224