Colour sensors calibrated
Dependencies: mbed-rtos mbed Servo QEI
Fork of ICRSEurobot13 by
Diff: Sensors/Colour/Colour.h
- 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