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:
Sat Nov 28 23:28:22 2015 +0000
Revision:
23:db91aaa43a9e
Parent:
20:4e0f0944f28f
Child:
25:792540d69c49
Added break beam test mode, also values and status of tests are now synced with PC.

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