3rd year group project. Electronic and Electrical Engineering. Heriot-Watt University. This is the code for the mbed for the Automatic Little Object Organiser (ALOO).
Dependencies: MCP23017 TCS3472_I2C WattBob_TextLCD mbed
globals.h@28:7e4d29977d72, 2015-12-01 (annotated)
- Committer:
- dreamselec
- Date:
- Tue Dec 01 20:54:26 2015 +0000
- Revision:
- 28:7e4d29977d72
- Parent:
- 27:2cb1bdb7ae3d
- Child:
- 29:9c0339e3c593
Intialization sequence optimised, it will also sync with PC's current state.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dreamselec | 10:16ba52f8e025 | 1 | |
dreamselec | 2:7a55cb10259f | 2 | |
dreamselec | 9:dc8f155b71c8 | 3 | |
dreamselec | 4:4eebb4de22a7 | 4 | #ifndef _globals_h_ |
dreamselec | 4:4eebb4de22a7 | 5 | #define _globals_h_ |
dreamselec | 2:7a55cb10259f | 6 | |
dreamselec | 10:16ba52f8e025 | 7 | #include "Block.h" |
dreamselec | 10:16ba52f8e025 | 8 | #include "mbed.h" |
dreamselec | 10:16ba52f8e025 | 9 | //#include "MCP23017.h" |
dreamselec | 10:16ba52f8e025 | 10 | //#include "fpga.h" |
dreamselec | 10:16ba52f8e025 | 11 | |
dreamselec | 10:16ba52f8e025 | 12 | class FPGA; |
dreamselec | 10:16ba52f8e025 | 13 | class TCS3472_I2C; |
dreamselec | 10:16ba52f8e025 | 14 | class MCP23017; |
dreamselec | 10:16ba52f8e025 | 15 | class WattBob_TextLCD; |
dreamselec | 10:16ba52f8e025 | 16 | |
dreamselec | 4:4eebb4de22a7 | 17 | extern mbed::Serial pc; |
dreamselec | 10:16ba52f8e025 | 18 | extern MCP23017 *i2cport; |
dreamselec | 7:b6e31bfdb2af | 19 | extern int kDefaultBaudRate; |
dreamselec | 10:16ba52f8e025 | 20 | extern WattBob_TextLCD *lcd; |
dreamselec | 2:7a55cb10259f | 21 | //extern SerialBase gParity; |
dreamselec | 2:7a55cb10259f | 22 | extern int gStopBits; |
dreamselec |
8:e1da2ae62885 | 23 | extern bool connectedToPC; |
dreamselec | 10:16ba52f8e025 | 24 | extern bool runServoTest; |
dreamselec |
23:db91aaa43a9e | 25 | extern bool runBreakBeamTest; |
dreamselec | 25:792540d69c49 | 26 | extern bool runColourSensorTest; |
dreamselec | 25:792540d69c49 | 27 | extern bool getColourSensorValue; |
dreamselec | 25:792540d69c49 | 28 | extern bool getBlockColourValue; |
dreamselec | 25:792540d69c49 | 29 | extern float gIntegrationTime; |
dreamselec | 25:792540d69c49 | 30 | extern int gToggleServoNumber; |
dreamselec | 26:bbcc25418ffa | 31 | extern int errorMultiplier; |
dreamselec | 27:2cb1bdb7ae3d | 32 | extern int hazReadingCount; |
dreamselec | 2:7a55cb10259f | 33 | |
dreamselec |
6:98fe30430194 | 34 | const int kCommandBufferSize = 80; |
dreamselec | 7:b6e31bfdb2af | 35 | const int kSmallBufferSize = 5; |
dreamselec | 27:2cb1bdb7ae3d | 36 | const float kServoWait = 0.20; |
dreamselec | 2:7a55cb10259f | 37 | |
dreamselec | 26:bbcc25418ffa | 38 | extern float currentMinError[3]; |
dreamselec | 26:bbcc25418ffa | 39 | extern float currentMaxError[3]; |
dreamselec | 28:7e4d29977d72 | 40 | extern bool pcModeChanged; |
dreamselec | 2:7a55cb10259f | 41 | #define FOREVER for(;;) |
dreamselec | 2:7a55cb10259f | 42 | |
dreamselec |
6:98fe30430194 | 43 | const char CommandTypeValue [3] = {'!', '?', ':'}; |
dreamselec |
6:98fe30430194 | 44 | const char kCommandTerminator = ';'; |
dreamselec |
8:e1da2ae62885 | 45 | enum CommandTypeRaw { InvalidType = -1, Set = 0, Query = 1, Reply = 2 }; |
dreamselec |
6:98fe30430194 | 46 | |
dreamselec | 20:4e0f0944f28f | 47 | const float kMinRedBlock[4] = {4.812, 2.286, 1.316, 1}; |
dreamselec | 26:bbcc25418ffa | 48 | const float kMaxRedBlock[4] = {5.474, 3.105, 1.429, 1}; |
dreamselec | 20:4e0f0944f28f | 49 | const float kAverageRedBlock[4] = {5.25134482758621, 2.85965517241379, 1.35858620689655, 1}; |
dreamselec | 28:7e4d29977d72 | 50 | const float kMinError[3] = { 0.389641483105392, 0.383777881434993, 0.0500744881279823}; |
dreamselec | 28:7e4d29977d72 | 51 | const float kMaxError[3] = { 0.238327377883225, 0.139481384106522, 0.0502648605358003}; |
dreamselec | 20:4e0f0944f28f | 52 | |
dreamselec | 20:4e0f0944f28f | 53 | extern Block defaultHazBlock; |
dreamselec | 9:dc8f155b71c8 | 54 | extern Block _HazBlock; |
dreamselec | 10:16ba52f8e025 | 55 | extern FPGA *fpga; |
dreamselec | 10:16ba52f8e025 | 56 | |
dreamselec | 10:16ba52f8e025 | 57 | extern TCS3472_I2C rgbSensor; |
dreamselec | 9:dc8f155b71c8 | 58 | |
dreamselec |
6:98fe30430194 | 59 | enum Servos {Stopping = 1, Sorting = 2}; |
dreamselec |
6:98fe30430194 | 60 | enum StoppingServoPositions {Stop = 0, Go = 1}; |
dreamselec | 20:4e0f0944f28f | 61 | enum SortingServoPositions {NonHaz = 0, Haz = 1}; |
dreamselec | 17:af373246bf80 | 62 | enum Controls { Start = 0, Pause = 1}; |
dreamselec | 17:af373246bf80 | 63 | enum PCModes { None = -1, Normal = 0, Maintanence = 1}; |
dreamselec | 17:af373246bf80 | 64 | |
dreamselec | 17:af373246bf80 | 65 | extern PCModes currentMode; |
dreamselec |
18:44a1c1a30166 | 66 | extern Controls currentState; |
dreamselec | 20:4e0f0944f28f | 67 | void DefaultHazBlock(); |
dreamselec | 10:16ba52f8e025 | 68 | |
dreamselec | 10:16ba52f8e025 | 69 | int readSwitches(); |
dreamselec | 20:4e0f0944f28f | 70 | bool displayAbortDialog(); |
dreamselec | 20:4e0f0944f28f | 71 | void displayPCStatus(); |
dreamselec |
6:98fe30430194 | 72 | |
dreamselec |
8:e1da2ae62885 | 73 | void connectToPC(CommandTypeRaw typeRaw=Set); |
dreamselec |
8:e1da2ae62885 | 74 | void disconnectToPC(CommandTypeRaw typeRaw=Set); |
dreamselec |
8:e1da2ae62885 | 75 | void hazBlock(CommandTypeRaw typeRaw); |
dreamselec |
8:e1da2ae62885 | 76 | void getCurrentBlock(CommandTypeRaw typeRaw=Query); |
dreamselec |
8:e1da2ae62885 | 77 | |
dreamselec | 15:777390eb5afd | 78 | void setIntegrationTimeTo(float integrationTime); |
dreamselec |
8:e1da2ae62885 | 79 | void previewOnPC(bool on); |
dreamselec | 25:792540d69c49 | 80 | void testColourSensor(Controls state); |
dreamselec |
8:e1da2ae62885 | 81 | |
dreamselec | 17:af373246bf80 | 82 | void testServos(Controls state); |
dreamselec |
8:e1da2ae62885 | 83 | void resetServos(); |
dreamselec |
8:e1da2ae62885 | 84 | |
dreamselec |
8:e1da2ae62885 | 85 | void getPortInfo(); |
dreamselec |
8:e1da2ae62885 | 86 | void setPortBaudRate(int baudRate); |
dreamselec |
14:cf2f255b5560 | 87 | void setPortParity(int parity); |
dreamselec |
8:e1da2ae62885 | 88 | |
dreamselec |
23:db91aaa43a9e | 89 | void testBreakBeams(Controls state); |
dreamselec |
8:e1da2ae62885 | 90 | |
dreamselec | 26:bbcc25418ffa | 91 | void printColourDescription(Colour colour); |
dreamselec | 26:bbcc25418ffa | 92 | void printBlockDescription(Block block); |
dreamselec |
6:98fe30430194 | 93 | #endif |