I am making a white line follower. I am using an IR sensor module based on TCRT5000. I am directly taking the 8bit ADC reading from Arduino Uno and printing the values on serial monitor. I observe that the values for white are around 25-35, which is ok. The problem arises when I try detecting an Orange (158C) surface. The sensor gives me values very close to that of white which is around 25-40.

I can use a color sensor but they are bulky and I am not sure how I can get readings faster with them since they take a finite time for sampling 'R','G' and 'B' pulses. Can someone please tell me an alternate approach to detecting the colours or any other possible solution to my problem.

EDIT: I would like to add that the line I wish to follow is 3cm in width. Hence I plan to use three sensors. Two just outside the line on either sides and one exactly at the centre. The sampling frequency of Arduino UNO is around 125KHz. Sampling IR is not an issue because it is quick but using a color sensor takes a lot of time.

  • $\begingroup$ Perhaps the bottom of this answer would help: robotics.stackexchange.com/a/1971/158 $\endgroup$
    – Shahbaz
    Dec 13, 2015 at 19:28
  • $\begingroup$ I voted to close this question because it is an open-ended design question. You state you don't want to use color sensors because they are "too bulky" but you provide no target dimensions, and because they are "too slow" but you provide no target sample frequency. $\endgroup$
    – Chuck
    Dec 13, 2015 at 22:59
  • $\begingroup$ @Chuck I have made the necessary edits. $\endgroup$
    – Parthiv P
    Dec 14, 2015 at 5:57
  • $\begingroup$ I'm afraid that it is not clear what you are asking. We prefer practical, answerable questions based on actual problems that you face, so it is a good idea to include details of what what you would like to achieve, what you have tried, what you expected to see and what you actually saw. Take a look at How to Ask and tour for more information on how stack exchange works. If you edit your question to make it more clear, flag it for moderator attention and we can reopen it for you. $\endgroup$
    – Mark Booth
    Dec 14, 2015 at 11:02

1 Answer 1


With computer-based vision, the solution often depends greatly on the environment in which the camera is operating. You may have situations where bright light and shadows result in a very difficult sensing scenario. Or you may have aspects of your targets which affect the light characteristics (diffusing, polarizing, etc.). So the solution may not be easy to determine without knowing more about the environment.

For the issue you describe, I would first be certain of your measurements. It doesn't make sense that some of your sensed values for orange are higher than you are getting for white - unless there is an additional difference besides the color difference. Also, verify that orange is the only surface that gives you readings that come close to the white readings - ideally you would want the very lowest reading for white to be more than the very highest reading for any other color, plus a margin for error (such as measurement noise).

If you find that orange is indeed the only color that interferes with detection of white, you can use an optical filter that absorbs the orange spectrum but passes the other optical frequencies. You can find them at Edmund Scientific, Kodak, Schott, and the like. You can also find optical filters at many camera stores.

If you also find that there are other factors in play (I'm thinking about why the orange reading is higher than some of the white readings), you might be able to apply polarizers to defeat some of the specular returns from orange. This would need to be designed carefully, since there are many types of polarizers that could be applied, depending on the reflected light characteristics.


Not the answer you're looking for? Browse other questions tagged or ask your own question.