PiSlingers library for AHRC competitions

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?

UserRevisionLine numberNew 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_