This is some awesome robot code
Dependencies: mbed-rtos mbed QEI
Fork of ICRSEurobot13 by
Diff: Sensors/Colour/Colour.h
- Revision:
- 50:937e860f4621
- Parent:
- 45:77cf6375348a
--- a/Sensors/Colour/Colour.h Fri Apr 12 21:07:00 2013 +0000 +++ b/Sensors/Colour/Colour.h Fri Apr 12 21:26:02 2013 +0000 @@ -1,51 +1,56 @@ // Eurobot13 Colour.h - -//red led use 45ohm -//blue led use 10ohm +#ifndef COLOUR_H +#define COLOUR_H #include "mbed.h" +#include "globals.h" +#include "math.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 bluePin, PinName redPin, PinName phototransistorPin) - : blue(bluePin) - , red (redPin) - , pt (phototransistorPin) - { - LedsOff(); - } - 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; - } + Colour( + PinName blue_led, + PinName red_led, + PinName pt, + ArmEnum arm); + + ColourEnum getColour(); + 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; + float colour; + float SNR; + void Blink(); -}; \ No newline at end of file + int togglecolour; + float blue; + float blue_buff[BUFF_SIZE]; + float red; + float red_buff[BUFF_SIZE]; + float noise; + float noise_buff[BUFF_SIZE]; + + int buff_pointer; + +}; + +#endif \ No newline at end of file