Mitchell Hatfield / Mbed 2 deprecated Component_Test_Interface

Dependencies:   BridgeDriver FrontPanelButtons MCP23017 SDFileSystem TextLCD mbed

Committer:
mehatfie
Date:
Tue Sep 23 23:42:32 2014 +0000
Revision:
6:d1594fd2ec5a
Parent:
5:e36e0538a903
Child:
9:5a0c4c6e39c7
- System Functional for Door_Latch_Test; - Fixed issue with Motors, needed to initialize the Motors for PWM; - Confirmed code works to read from SD Card that has spaces and tabs

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