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:
Mon Nov 30 21:29:51 2015 +0000
Revision:
26:bbcc25418ffa
Parent:
25:792540d69c49
Child:
27:2cb1bdb7ae3d
Small changes in program so it doesn't get stuck and PC receives correct commands. Also commented out hard-coded red values. currently use a buffer error variables which can be set to anything.

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 2:7a55cb10259f 32
dreamselec 6:98fe30430194 33 const int kCommandBufferSize = 80;
dreamselec 7:b6e31bfdb2af 34 const int kSmallBufferSize = 5;
dreamselec 20:4e0f0944f28f 35 const float kServoWait = 0.25;
dreamselec 2:7a55cb10259f 36
dreamselec 26:bbcc25418ffa 37 extern float currentMinError[3];
dreamselec 26:bbcc25418ffa 38 extern float currentMaxError[3];
dreamselec 26:bbcc25418ffa 39
dreamselec 2:7a55cb10259f 40 #define FOREVER for(;;)
dreamselec 2:7a55cb10259f 41
dreamselec 6:98fe30430194 42 const char CommandTypeValue [3] = {'!', '?', ':'};
dreamselec 6:98fe30430194 43 const char kCommandTerminator = ';';
dreamselec 8:e1da2ae62885 44 enum CommandTypeRaw { InvalidType = -1, Set = 0, Query = 1, Reply = 2 };
dreamselec 6:98fe30430194 45
dreamselec 20:4e0f0944f28f 46 const float kMinRedBlock[4] = {4.812, 2.286, 1.316, 1};
dreamselec 26:bbcc25418ffa 47 const float kMaxRedBlock[4] = {5.474, 3.105, 1.429, 1};
dreamselec 20:4e0f0944f28f 48 const float kAverageRedBlock[4] = {5.25134482758621, 2.85965517241379, 1.35858620689655, 1};
dreamselec 20:4e0f0944f28f 49 const float kMinError[3] = { 0.0836632980714298, 0.200602918123719, 0.0313459732480518};
dreamselec 20:4e0f0944f28f 50 const float kMaxError[3] = { 0.0423996480376129, 0.0857952490051849, 0.051828726617427};
dreamselec 20:4e0f0944f28f 51
dreamselec 20:4e0f0944f28f 52 extern Block defaultHazBlock;
dreamselec 9:dc8f155b71c8 53 extern Block _HazBlock;
dreamselec 10:16ba52f8e025 54 extern FPGA *fpga;
dreamselec 10:16ba52f8e025 55
dreamselec 10:16ba52f8e025 56 extern TCS3472_I2C rgbSensor;
dreamselec 9:dc8f155b71c8 57
dreamselec 6:98fe30430194 58 enum Servos {Stopping = 1, Sorting = 2};
dreamselec 6:98fe30430194 59 enum StoppingServoPositions {Stop = 0, Go = 1};
dreamselec 20:4e0f0944f28f 60 enum SortingServoPositions {NonHaz = 0, Haz = 1};
dreamselec 17:af373246bf80 61 enum Controls { Start = 0, Pause = 1};
dreamselec 17:af373246bf80 62 enum PCModes { None = -1, Normal = 0, Maintanence = 1};
dreamselec 17:af373246bf80 63
dreamselec 17:af373246bf80 64 extern PCModes currentMode;
dreamselec 18:44a1c1a30166 65 extern Controls currentState;
dreamselec 20:4e0f0944f28f 66 void DefaultHazBlock();
dreamselec 10:16ba52f8e025 67
dreamselec 10:16ba52f8e025 68 int readSwitches();
dreamselec 20:4e0f0944f28f 69 bool displayAbortDialog();
dreamselec 20:4e0f0944f28f 70 void displayPCStatus();
dreamselec 6:98fe30430194 71
dreamselec 8:e1da2ae62885 72 void connectToPC(CommandTypeRaw typeRaw=Set);
dreamselec 8:e1da2ae62885 73 void disconnectToPC(CommandTypeRaw typeRaw=Set);
dreamselec 8:e1da2ae62885 74 void hazBlock(CommandTypeRaw typeRaw);
dreamselec 8:e1da2ae62885 75 void getCurrentBlock(CommandTypeRaw typeRaw=Query);
dreamselec 8:e1da2ae62885 76
dreamselec 15:777390eb5afd 77 void setIntegrationTimeTo(float integrationTime);
dreamselec 8:e1da2ae62885 78 void previewOnPC(bool on);
dreamselec 25:792540d69c49 79 void testColourSensor(Controls state);
dreamselec 8:e1da2ae62885 80
dreamselec 17:af373246bf80 81 void testServos(Controls state);
dreamselec 8:e1da2ae62885 82 void resetServos();
dreamselec 8:e1da2ae62885 83
dreamselec 8:e1da2ae62885 84 void getPortInfo();
dreamselec 8:e1da2ae62885 85 void setPortBaudRate(int baudRate);
dreamselec 14:cf2f255b5560 86 void setPortParity(int parity);
dreamselec 8:e1da2ae62885 87
dreamselec 23:db91aaa43a9e 88 void testBreakBeams(Controls state);
dreamselec 8:e1da2ae62885 89
dreamselec 26:bbcc25418ffa 90 void printColourDescription(Colour colour);
dreamselec 26:bbcc25418ffa 91 void printBlockDescription(Block block);
dreamselec 6:98fe30430194 92 #endif