Component Test's Software to work with "Universal Controller Box" - Software is an interpreter or "compiler" for programs to be done with a .txt file and read off of the SD Card

Dependencies:   BridgeDriver FrontPanelButtons MCP23017 SDFileSystem TextLCD mbed

Committer:
mehatfie
Date:
Thu Sep 18 23:38:11 2014 +0000
Revision:
2:3e7baa3e3fec
Child:
3:078e9a1e8be3
- Revamped whole system and now works without stalling or freezing mid program; - now Object Oriented Based in terms of Devices (inheritance of functions)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mehatfie 2:3e7baa3e3fec 1 #include "Initialization.hpp"
mehatfie 2:3e7baa3e3fec 2 #include "Motor.hpp"
mehatfie 2:3e7baa3e3fec 3 #include "VoltageDriver.hpp"
mehatfie 2:3e7baa3e3fec 4
mehatfie 2:3e7baa3e3fec 5 //Initializations
mehatfie 2:3e7baa3e3fec 6 Timer timer; // general purpose timer
mehatfie 2:3e7baa3e3fec 7 I2C i2c( P0_10, P0_11 ); // I2C bus (SDA, SCL)
mehatfie 2:3e7baa3e3fec 8 BridgeDriver bridges(&i2c, 1); // Bridge
mehatfie 2:3e7baa3e3fec 9 TextLCD_I2C lcd( &i2c, MCP23008_SA0, TextLCD::LCD20x4 ); // LCD
mehatfie 2:3e7baa3e3fec 10 SDFileSystem sd(P0_18, P0_17, P0_15, P0_16, "sd"); // the pinout on the mbed LPC1768
mehatfie 2:3e7baa3e3fec 11
mehatfie 2:3e7baa3e3fec 12 DigitalIn killSw(KILL);
mehatfie 2:3e7baa3e3fec 13
mehatfie 2:3e7baa3e3fec 14 const int MAX_LINE_LENGTH = 100;
mehatfie 2:3e7baa3e3fec 15
mehatfie 2:3e7baa3e3fec 16 //struct Line lineData;
mehatfie 2:3e7baa3e3fec 17
mehatfie 2:3e7baa3e3fec 18 Device* Device::newDevice(int deviceFound, string _name, Line lineData){
mehatfie 2:3e7baa3e3fec 19
mehatfie 2:3e7baa3e3fec 20 switch (Device_Map[deviceFound]){
mehatfie 2:3e7baa3e3fec 21 case MOTOR:
mehatfie 2:3e7baa3e3fec 22 //Device::setName(_name);
mehatfie 2:3e7baa3e3fec 23 //Device::setType(MOTOR);
mehatfie 2:3e7baa3e3fec 24 return new Motor(lineData);
mehatfie 2:3e7baa3e3fec 25 break;
mehatfie 2:3e7baa3e3fec 26 case VOLTAGE_DRIVER:
mehatfie 2:3e7baa3e3fec 27 //setName(_name);
mehatfie 2:3e7baa3e3fec 28 //setType(MOTOR);
mehatfie 2:3e7baa3e3fec 29 return new VoltageDriver(lineData);
mehatfie 2:3e7baa3e3fec 30 break;
mehatfie 2:3e7baa3e3fec 31 }
mehatfie 2:3e7baa3e3fec 32 }
mehatfie 2:3e7baa3e3fec 33 /*
mehatfie 2:3e7baa3e3fec 34 void Device::setName(string _name){
mehatfie 2:3e7baa3e3fec 35 this->name = _name;
mehatfie 2:3e7baa3e3fec 36 }
mehatfie 2:3e7baa3e3fec 37 void Device::setType(DeviceType _type){
mehatfie 2:3e7baa3e3fec 38 this->type = _type;
mehatfie 2:3e7baa3e3fec 39 }*/
mehatfie 2:3e7baa3e3fec 40
mehatfie 2:3e7baa3e3fec 41 const char *DeviceNames[] = {"MOTOR", "VOLTAGE_DRIVER"};
mehatfie 2:3e7baa3e3fec 42 int numDevices = sizeof(DeviceNames)/sizeof(DeviceNames[0]);
mehatfie 2:3e7baa3e3fec 43 int currNumDevices = 0;
mehatfie 2:3e7baa3e3fec 44
mehatfie 2:3e7baa3e3fec 45 vector<Device*> devices;
mehatfie 2:3e7baa3e3fec 46 //Device devices[15];
mehatfie 2:3e7baa3e3fec 47
mehatfie 2:3e7baa3e3fec 48 void addDevice(int deviceFound, Line &lineData){
mehatfie 2:3e7baa3e3fec 49
mehatfie 2:3e7baa3e3fec 50 devices[currNumDevices] = Device::newDevice(deviceFound, lineData.word[1], lineData);
mehatfie 2:3e7baa3e3fec 51 currNumDevices++;
mehatfie 2:3e7baa3e3fec 52 }
mehatfie 2:3e7baa3e3fec 53
mehatfie 2:3e7baa3e3fec 54 void fullInit() {
mehatfie 2:3e7baa3e3fec 55
mehatfie 2:3e7baa3e3fec 56 killSw.mode(PullUp);
mehatfie 2:3e7baa3e3fec 57 initLCD();
mehatfie 2:3e7baa3e3fec 58 }
mehatfie 2:3e7baa3e3fec 59
mehatfie 2:3e7baa3e3fec 60 void initLCD(void) {
mehatfie 2:3e7baa3e3fec 61
mehatfie 2:3e7baa3e3fec 62 i2c.frequency(1000000);
mehatfie 2:3e7baa3e3fec 63 lcd.setBacklight(TextLCD::LightOn);
mehatfie 2:3e7baa3e3fec 64 wait(.6);
mehatfie 2:3e7baa3e3fec 65 lcd.cls(); //clear the display
mehatfie 2:3e7baa3e3fec 66 lcd.setAddress(0,0);
mehatfie 2:3e7baa3e3fec 67 lcd.printf("LCD Initialized");
mehatfie 2:3e7baa3e3fec 68 }
mehatfie 2:3e7baa3e3fec 69