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
Initialization.cpp@2:3e7baa3e3fec, 2014-09-18 (annotated)
- 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?
User | Revision | Line number | New 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 |