This is the library to use the TCS3200 on the mbed
Dependents: ovvioBug ovvioBug my_example_TCS3200 Ex_TCS3200 ... more
color.cpp@1:9edf5a7e29e6, 2015-10-23 (annotated)
- Committer:
- wingblank
- Date:
- Fri Oct 23 15:44:43 2015 +0000
- Revision:
- 1:9edf5a7e29e6
- Parent:
- 0:6962dbee8f4b
2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
wingblank | 0:6962dbee8f4b | 1 | #include "mbed.h" |
wingblank | 0:6962dbee8f4b | 2 | #include "color.h" |
wingblank | 0:6962dbee8f4b | 3 | ColorSensor::ColorSensor(PinName ss0, PinName ss1, PinName ss2, PinName ss3, PinName sout): |
wingblank | 0:6962dbee8f4b | 4 | s0(ss0), s1(ss1), s2(ss2), s3(ss3), _out(sout) |
wingblank | 0:6962dbee8f4b | 5 | { |
wingblank | 0:6962dbee8f4b | 6 | s0.write(1); |
wingblank | 0:6962dbee8f4b | 7 | s1.write(0); |
wingblank | 0:6962dbee8f4b | 8 | s2.write(0); |
wingblank | 0:6962dbee8f4b | 9 | s3.write(0); |
wingblank | 0:6962dbee8f4b | 10 | interrupted = 12345; |
wingblank | 0:6962dbee8f4b | 11 | countR = counter; |
wingblank | 0:6962dbee8f4b | 12 | countG = counter; |
wingblank | 0:6962dbee8f4b | 13 | countB = counter; |
wingblank | 0:6962dbee8f4b | 14 | counter = 0; |
wingblank | 0:6962dbee8f4b | 15 | flag = 0; |
wingblank | 0:6962dbee8f4b | 16 | _out.mode(PullUp); |
wingblank | 0:6962dbee8f4b | 17 | _out.rise(this, &ColorSensor::incCount); |
wingblank | 0:6962dbee8f4b | 18 | ts.attach(this, &ColorSensor::getReading, .01); |
wingblank | 0:6962dbee8f4b | 19 | |
wingblank | 0:6962dbee8f4b | 20 | } |
wingblank | 0:6962dbee8f4b | 21 | |
wingblank | 1:9edf5a7e29e6 | 22 | |
wingblank | 1:9edf5a7e29e6 | 23 | /** Returns the Red intensity |
wingblank | 0:6962dbee8f4b | 24 | *@return the red intensity |
wingblank | 0:6962dbee8f4b | 25 | */ |
wingblank | 0:6962dbee8f4b | 26 | int ColorSensor::getRed() |
wingblank | 0:6962dbee8f4b | 27 | { |
wingblank | 0:6962dbee8f4b | 28 | return countR; |
wingblank | 0:6962dbee8f4b | 29 | } |
wingblank | 1:9edf5a7e29e6 | 30 | |
wingblank | 1:9edf5a7e29e6 | 31 | /**Returns the blue intensity |
wingblank | 0:6962dbee8f4b | 32 | *@return the blue intensity |
wingblank | 0:6962dbee8f4b | 33 | */ |
wingblank | 0:6962dbee8f4b | 34 | int ColorSensor::getBlue() |
wingblank | 0:6962dbee8f4b | 35 | { |
wingblank | 0:6962dbee8f4b | 36 | return countB; |
wingblank | 0:6962dbee8f4b | 37 | } |
wingblank | 1:9edf5a7e29e6 | 38 | |
wingblank | 1:9edf5a7e29e6 | 39 | /**Returns the Green intensity |
wingblank | 0:6962dbee8f4b | 40 | * |
wingblank | 0:6962dbee8f4b | 41 | *@return the green intensity |
wingblank | 0:6962dbee8f4b | 42 | */ |
wingblank | 0:6962dbee8f4b | 43 | int ColorSensor::getGreen() |
wingblank | 0:6962dbee8f4b | 44 | { |
wingblank | 0:6962dbee8f4b | 45 | return countG; |
wingblank | 0:6962dbee8f4b | 46 | } |
wingblank | 1:9edf5a7e29e6 | 47 | |
wingblank | 1:9edf5a7e29e6 | 48 | /**Used in the PDM calculation |
wingblank | 0:6962dbee8f4b | 49 | */ |
wingblank | 0:6962dbee8f4b | 50 | void ColorSensor::incCount() |
wingblank | 0:6962dbee8f4b | 51 | { |
wingblank | 0:6962dbee8f4b | 52 | counter++; |
wingblank | 0:6962dbee8f4b | 53 | } |
wingblank | 1:9edf5a7e29e6 | 54 | |
wingblank | 1:9edf5a7e29e6 | 55 | /**Cycles through the channels to get the reading from the R, G, and B channels |
wingblank | 0:6962dbee8f4b | 56 | */ |
wingblank | 0:6962dbee8f4b | 57 | void ColorSensor::getReading() |
wingblank | 0:6962dbee8f4b | 58 | { |
wingblank | 0:6962dbee8f4b | 59 | |
wingblank | 0:6962dbee8f4b | 60 | flag++; |
wingblank | 0:6962dbee8f4b | 61 | if(flag == 1) |
wingblank | 0:6962dbee8f4b | 62 | { |
wingblank | 0:6962dbee8f4b | 63 | countR = counter; |
wingblank | 0:6962dbee8f4b | 64 | s2.write(1); |
wingblank | 0:6962dbee8f4b | 65 | s3.write(1); |
wingblank | 0:6962dbee8f4b | 66 | } |
wingblank | 0:6962dbee8f4b | 67 | else if(flag == 2) |
wingblank | 0:6962dbee8f4b | 68 | { |
wingblank | 0:6962dbee8f4b | 69 | countG = counter; |
wingblank | 0:6962dbee8f4b | 70 | s2.write(0); |
wingblank | 0:6962dbee8f4b | 71 | s3.write(1); |
wingblank | 0:6962dbee8f4b | 72 | } |
wingblank | 0:6962dbee8f4b | 73 | else if(flag ==3) |
wingblank | 0:6962dbee8f4b | 74 | { |
wingblank | 0:6962dbee8f4b | 75 | countB = counter; |
wingblank | 0:6962dbee8f4b | 76 | s2.write(0); |
wingblank | 0:6962dbee8f4b | 77 | s3.write(0); |
wingblank | 0:6962dbee8f4b | 78 | } |
wingblank | 0:6962dbee8f4b | 79 | else if(flag == 4) |
wingblank | 0:6962dbee8f4b | 80 | { |
wingblank | 0:6962dbee8f4b | 81 | flag = 0; |
wingblank | 0:6962dbee8f4b | 82 | } |
wingblank | 0:6962dbee8f4b | 83 | counter = 0; |
wingblank | 0:6962dbee8f4b | 84 | |
wingblank | 0:6962dbee8f4b | 85 | } |
wingblank | 0:6962dbee8f4b | 86 | |
wingblank | 0:6962dbee8f4b | 87 | /* |
wingblank | 0:6962dbee8f4b | 88 | * Wrapper for getting a reading |
wingblank | 0:6962dbee8f4b | 89 | */ |
wingblank | 0:6962dbee8f4b | 90 | void ColorSensor::poll() |
wingblank | 0:6962dbee8f4b | 91 | { |
wingblank | 0:6962dbee8f4b | 92 | |
wingblank | 0:6962dbee8f4b | 93 | ColorSensor::getReading(); |
wingblank | 0:6962dbee8f4b | 94 | |
wingblank | 0:6962dbee8f4b | 95 | } |
wingblank | 0:6962dbee8f4b | 96 | |
wingblank | 0:6962dbee8f4b | 97 |