PiSlingers library for AHRC competitions
IRObjDetector.h@2:a9351d7f92b4, 2012-11-03 (annotated)
- Committer:
- mpanetta
- Date:
- Sat Nov 03 01:03:16 2012 +0000
- Revision:
- 2:a9351d7f92b4
- Parent:
- 0:d4427d048a98
Fixed some bugs in the IR code that allowed negative values through.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mpanetta | 0:d4427d048a98 | 1 | #ifndef _IROBJDETECTOR_H_ |
mpanetta | 0:d4427d048a98 | 2 | #define _IROBJDETECTOR_H_ |
mpanetta | 0:d4427d048a98 | 3 | |
mpanetta | 0:d4427d048a98 | 4 | #include "mbed.h" |
mpanetta | 0:d4427d048a98 | 5 | #include "tlc5916.h" |
mpanetta | 0:d4427d048a98 | 6 | |
mpanetta | 0:d4427d048a98 | 7 | #define BRIGHTNESS_BINS 16 |
mpanetta | 0:d4427d048a98 | 8 | |
mpanetta | 0:d4427d048a98 | 9 | class IRObjDetector |
mpanetta | 0:d4427d048a98 | 10 | { |
mpanetta | 0:d4427d048a98 | 11 | public: |
mpanetta | 0:d4427d048a98 | 12 | IRObjDetector(void) : tlc5916(p6, p5, p7, p11), ain(p18) |
mpanetta | 0:d4427d048a98 | 13 | { |
mpanetta | 0:d4427d048a98 | 14 | debug = NULL; |
mpanetta | 0:d4427d048a98 | 15 | minBrightness = 0; |
mpanetta | 0:d4427d048a98 | 16 | avgBrightness = 0; |
mpanetta | 0:d4427d048a98 | 17 | maxBrightness = 0; |
mpanetta | 0:d4427d048a98 | 18 | for (currentBin = 0; currentBin < BRIGHTNESS_BINS; currentBin++) |
mpanetta | 0:d4427d048a98 | 19 | { |
mpanetta | 0:d4427d048a98 | 20 | brightnessBins[currentBin] = 0; |
mpanetta | 0:d4427d048a98 | 21 | } |
mpanetta | 0:d4427d048a98 | 22 | currentBin = 0; |
mpanetta | 0:d4427d048a98 | 23 | }; |
mpanetta | 0:d4427d048a98 | 24 | |
mpanetta | 0:d4427d048a98 | 25 | IRObjDetector(Serial *debug) : debug(debug), tlc5916(p6, p5, p7, p11), ain(p18) |
mpanetta | 0:d4427d048a98 | 26 | { |
mpanetta | 0:d4427d048a98 | 27 | debug = NULL; |
mpanetta | 0:d4427d048a98 | 28 | minBrightness = 0; |
mpanetta | 0:d4427d048a98 | 29 | avgBrightness = 0; |
mpanetta | 0:d4427d048a98 | 30 | maxBrightness = 0; |
mpanetta | 0:d4427d048a98 | 31 | for (currentBin = 0; currentBin < BRIGHTNESS_BINS; currentBin++) |
mpanetta | 0:d4427d048a98 | 32 | { |
mpanetta | 0:d4427d048a98 | 33 | brightnessBins[currentBin] = 0; |
mpanetta | 0:d4427d048a98 | 34 | } |
mpanetta | 0:d4427d048a98 | 35 | currentBin = 0; |
mpanetta | 0:d4427d048a98 | 36 | }; |
mpanetta | 0:d4427d048a98 | 37 | |
mpanetta | 0:d4427d048a98 | 38 | /** |
mpanetta | 0:d4427d048a98 | 39 | * Scan through all 7 LED's and store the values. |
mpanetta | 0:d4427d048a98 | 40 | */ |
mpanetta | 0:d4427d048a98 | 41 | void scan(void); |
mpanetta | 0:d4427d048a98 | 42 | |
mpanetta | 0:d4427d048a98 | 43 | /** |
mpanetta | 0:d4427d048a98 | 44 | * Get the centeroid value of the scaned field. |
mpanetta | 0:d4427d048a98 | 45 | */ |
mpanetta | 0:d4427d048a98 | 46 | float get_centeroid(void); |
mpanetta | 0:d4427d048a98 | 47 | |
mpanetta | 0:d4427d048a98 | 48 | /** |
mpanetta | 0:d4427d048a98 | 49 | * Get the 'raw' brightness value. |
mpanetta | 0:d4427d048a98 | 50 | */ |
mpanetta | 0:d4427d048a98 | 51 | uint16_t get_raw_brightness(void); |
mpanetta | 0:d4427d048a98 | 52 | uint16_t get_min_brightness(void); |
mpanetta | 0:d4427d048a98 | 53 | uint16_t get_avg_brightness(void); |
mpanetta | 0:d4427d048a98 | 54 | uint16_t get_max_brightness(void); |
mpanetta | 0:d4427d048a98 | 55 | float get_weighted_avg_brightness(void); |
mpanetta | 0:d4427d048a98 | 56 | |
mpanetta | 0:d4427d048a98 | 57 | private: |
mpanetta | 0:d4427d048a98 | 58 | |
mpanetta | 0:d4427d048a98 | 59 | void calc_centeroid(void); |
mpanetta | 0:d4427d048a98 | 60 | void calc_contrast(void); |
mpanetta | 0:d4427d048a98 | 61 | |
mpanetta | 0:d4427d048a98 | 62 | Serial *debug; |
mpanetta | 0:d4427d048a98 | 63 | TLC5916 tlc5916; |
mpanetta | 0:d4427d048a98 | 64 | AnalogIn ain; |
mpanetta | 0:d4427d048a98 | 65 | uint16_t data[8]; //Bin 7 is the 'all off' bin. |
mpanetta | 0:d4427d048a98 | 66 | float centeroid; |
mpanetta | 0:d4427d048a98 | 67 | uint16_t brightness; |
mpanetta | 0:d4427d048a98 | 68 | uint16_t brightnessBins[BRIGHTNESS_BINS]; // Used to calculate average brightness |
mpanetta | 0:d4427d048a98 | 69 | uint8_t currentBin; |
mpanetta | 0:d4427d048a98 | 70 | uint32_t avgBrightness; |
mpanetta | 0:d4427d048a98 | 71 | uint16_t maxBrightness; |
mpanetta | 0:d4427d048a98 | 72 | uint16_t minBrightness; |
mpanetta | 0:d4427d048a98 | 73 | |
mpanetta | 0:d4427d048a98 | 74 | |
mpanetta | 0:d4427d048a98 | 75 | float mean; |
mpanetta | 0:d4427d048a98 | 76 | float map; |
mpanetta | 0:d4427d048a98 | 77 | }; |
mpanetta | 0:d4427d048a98 | 78 | |
mpanetta | 0:d4427d048a98 | 79 | #endif //_IROBJDETECTOR_H_ |