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 Nov 24 00:24:39 2015 +0000
Revision:
18:44a1c1a30166
Parent:
17:af373246bf80
Child:
20:4e0f0944f28f
Implemented new algorithm, now supports different modes on 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 2:7a55cb10259f 25
dreamselec 6:98fe30430194 26 const int kCommandBufferSize = 80;
dreamselec 7:b6e31bfdb2af 27 const int kSmallBufferSize = 5;
dreamselec 2:7a55cb10259f 28
dreamselec 2:7a55cb10259f 29 #define FOREVER for(;;)
dreamselec 2:7a55cb10259f 30
dreamselec 6:98fe30430194 31 const char CommandTypeValue [3] = {'!', '?', ':'};
dreamselec 6:98fe30430194 32 const char kCommandTerminator = ';';
dreamselec 8:e1da2ae62885 33 enum CommandTypeRaw { InvalidType = -1, Set = 0, Query = 1, Reply = 2 };
dreamselec 6:98fe30430194 34
dreamselec 9:dc8f155b71c8 35 const Block kDefaultHazBlock = Block(Block::Small);
dreamselec 9:dc8f155b71c8 36 extern Block _HazBlock;
dreamselec 10:16ba52f8e025 37 extern FPGA *fpga;
dreamselec 10:16ba52f8e025 38
dreamselec 10:16ba52f8e025 39 extern TCS3472_I2C rgbSensor;
dreamselec 9:dc8f155b71c8 40
dreamselec 6:98fe30430194 41 enum Servos {Stopping = 1, Sorting = 2};
dreamselec 6:98fe30430194 42 enum StoppingServoPositions {Stop = 0, Go = 1};
dreamselec 10:16ba52f8e025 43 enum SortingServoPositions {NonHaz = 1, Haz = 0};
dreamselec 17:af373246bf80 44 enum Controls { Start = 0, Pause = 1};
dreamselec 17:af373246bf80 45 enum PCModes { None = -1, Normal = 0, Maintanence = 1};
dreamselec 17:af373246bf80 46
dreamselec 17:af373246bf80 47 extern PCModes currentMode;
dreamselec 18:44a1c1a30166 48 extern Controls currentState;
dreamselec 10:16ba52f8e025 49
dreamselec 10:16ba52f8e025 50 int readSwitches();
dreamselec 6:98fe30430194 51
dreamselec 8:e1da2ae62885 52 void connectToPC(CommandTypeRaw typeRaw=Set);
dreamselec 8:e1da2ae62885 53 void disconnectToPC(CommandTypeRaw typeRaw=Set);
dreamselec 8:e1da2ae62885 54 void hazBlock(CommandTypeRaw typeRaw);
dreamselec 8:e1da2ae62885 55 void getCurrentBlock(CommandTypeRaw typeRaw=Query);
dreamselec 8:e1da2ae62885 56
dreamselec 15:777390eb5afd 57 void setIntegrationTimeTo(float integrationTime);
dreamselec 8:e1da2ae62885 58 void previewOnPC(bool on);
dreamselec 10:16ba52f8e025 59 void readColourSensor ();
dreamselec 8:e1da2ae62885 60
dreamselec 17:af373246bf80 61 void testServos(Controls state);
dreamselec 8:e1da2ae62885 62 void resetServos();
dreamselec 8:e1da2ae62885 63
dreamselec 8:e1da2ae62885 64 void getPortInfo();
dreamselec 8:e1da2ae62885 65 void setPortBaudRate(int baudRate);
dreamselec 14:cf2f255b5560 66 void setPortParity(int parity);
dreamselec 8:e1da2ae62885 67
dreamselec 8:e1da2ae62885 68
dreamselec 6:98fe30430194 69 #endif