Colour sensors calibrated

Dependencies:   mbed-rtos mbed Servo QEI

Fork of ICRSEurobot13 by Thomas Branch

Revision:
21:c592bf6a6a2d
Parent:
7:4340355261f9
Child:
45:77cf6375348a
--- a/Sensors/Colour/Colour.h	Tue Apr 09 15:33:36 2013 +0000
+++ b/Sensors/Colour/Colour.h	Fri Apr 12 16:24:25 2013 +0000
@@ -1,51 +1,41 @@
 
 // Eurobot13 Colour.h
 
-//red led use 45ohm
-//blue led use 10ohm
 
 #include "mbed.h"
+#include "globals.h"
 
-enum ColourEnum {BLUE, RED, WHITE, INCONCLUSIVE, BUG};
+#define BUFF_SIZE 10
+#define SNR_THRESHOLD_DB 4
+
+#define UPPERARM_CORRECTION 2.310f
+#define LOWERARM_CORRECTION 1.000f
+
+
+enum ColourEnum {BLUE=0, RED, WHITE, BLACK};
+enum ArmEnum {UPPER=0, LOWER};
 
 class Colour{
-private:
-    DigitalOut blue;   float bavg, bstdev;
-    DigitalOut red;    float ravg, rstdev; 
-    AnalogIn pt;
+public:
+    Colour(
+    PinName blue_led, 
+    PinName red_led,
+    PinName pt,
+    ArmEnum arm);
     
-public:
-    Colour(PinName bluePin, PinName redPin, PinName phototransistorPin)
-        : blue(bluePin)
-        , red (redPin)
-        , pt (phototransistorPin)
-        {
-        LedsOff();
-    }
+    ColourEnum getColour();
 
-    void Calibrate(){
-        ReadLed(blue, bavg, bstdev);
-        ReadLed( red, ravg, rstdev);
-    }
-        
-    ColourEnum getColour(){
-        bool blueb = isColour(blue, bavg, bstdev)
-            , redb = isColour( red, ravg, rstdev);
-                  
-        if      ( blueb &&  redb)
-                    {return WHITE;}
-        else if ( blueb && !redb)
-                    {return BLUE;}
-        else if (!blueb &&  redb)
-                    {return RED;}
-        else if (!blueb && !redb)
-                    {return INCONCLUSIVE;} 
-        return BUG;            
-    }
 
 private:
-    void LedsOff(){blue = 0; red = 0;}
-    void ReadLed (DigitalOut &led, float &avg, float &stdev, const int measureNum = 25); // Colour.cpp
-    bool isColour(DigitalOut &led, const float &avg, const float &stdev, const float numstddev = 2); // Colour.cpp
+    Ticker _ticker;
+    DigitalOut _blue_led;
+    DigitalOut _red_led;
+    AnalogIn _pt;
+    ArmEnum _arm;
+    
+    float red_correction_factor;
+    double _colour;
+    double _SNR;
+    void _Blink (void);
     
 };
\ No newline at end of file