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

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?

UserRevisionLine numberNew 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