How to Measure Color with Arduino and the TCS3200 Color Sensor


Welcome to the world of Arduino and color sensing! In this guide, we’ll explore How to Measure Color with Arduino and the TCS3200 Color Sensor. The TCS3200 offers a versatile and accurate way to detect and measure colors, making it suitable for various applications such as color detection, color sorting, and color analysis. Let’s dive into the details of the TCS3200 color sensor and learn how to integrate it with Arduino for precise color measurements.

Hardware Required

You will require the following Hardware Components for How to Interface the TCS3200 Color Sensor Module with Arduino.

Components#Buy From Amazon
Arduino UNO1Buy Link
TCS3200 Color Sensor1Buy Link
9v DC Adapter (Optional)1Buy Link
Jumper Wires8Buy Link
Breadboard1Buy Link

What is a TCS3200 Color Sensor?

The TCS3200 is an optical sensor used to detect the color of objects in front of it, easily connectable to controllers like Arduino.

Internally, it comprises an array of silicon photodiodes and a frequency converter within a single CMOS chip.

The array includes 8 x 8 110 µm photodiodes, with 16 each of blue, green, and no-filter diodes, along with 6 red-filtered diodes. They’re arranged to minimize the impact of uneven light incidence.

Output is a 50% duty square wave, with frequency proportional to light intensity. Sensor operates within a voltage range of 2.7V to 5.5V.


The TCS3200 is commonly found in modules equipped with two or four white light LEDs and a plastic protector. These additions aim to reduce the influence of ambient lighting on measurements.

Although equipped with features to mitigate ambient light effects, the TCS3200 isn’t precise in measuring RGB color or light source color temperature.

However, it’s useful for distinguishing basic colors. For instance, it can recognize the color of cards or objects and assist in guiding a robot along a path.



Pin Configuration

Pin NumberPin NameDescription
1VCCPower supply voltage input
3OUTOutput signal from the sensor
4LEDLED control for illuminating the target
5S0Output frequency scaling selection
6S1Output frequency scaling selection
7S2Photodiode type selection
8S3Photodiode type selection


  1. Multi-Color Detection: Capable of detecting and measuring red, green, blue, and clear light components for comprehensive color analysis.
  2. High Sensitivity: Offers high sensitivity to subtle changes in color intensity, ensuring accurate color measurement.
  3. Digital Output: Provides digital color data for easy integration with microcontrollers, enabling real-time color sensing and analysis.
  4. Adjustable Integration Time: Allows for adjustment of integration time to optimize sensor performance for different lighting conditions.
  5. Compact Design: Compact and lightweight design for easy integration into various electronic projects.


  1. Color Sensing Range:
    • Detects a wide range of colors across the visible spectrum.
  2. Spectral Sensitivity:
    • Covers the wavelengths of red, green, blue, and clear light components.
  3. Measurement Resolution:
    • High resolution for accurate color detection and measurement.
  4. Communication Interface:
    • Digital output for communication with microcontrollers like Arduino.
  5. Operating Voltage:
    • Wide operating voltage range compatible with Arduino and other microcontroller platforms.

Assembly Diagram

The TCS3200 features four digital inputs: S0, S1, S2, and S3, along with one digital output, Out. To interface it with an Arduino, a minimum of three digital pins are required.

To power the module, connect the Gnd and Vcc pins of the TCS3200 to the corresponding Gnd and Vcc pins on the Arduino.

Pins S0 and S1 regulate the output frequency and module deactivation. Connect them to two digital outputs, or alternatively, connect them to 5V if you don’t require module deactivation.

Power down2%twenty%100%

Additionally, pins S2 and S3 are responsible for selecting the color to measure. Connect them to two digital outputs on the Arduino.


Finally, connect the Out sensor output to a digital input on the Arduino. The pin connections would be as follows:

Circuit Diagram

The following circuit shows you the connection of the How to Measure Color with Arduino and the TCS3200 Color Sensor, Please make the connection carefully


Circuit Connections

ArduinoTCS3200 Color Sensor
+5VVCC Pin
D3S0 Pin
D4S1 Pin
D5S2 Pin
D6S3 Pin

Installing Arduino IDE Software

First, you will require to Download the updated version of Arduino IDE Software and Install it on your PC or laptop. if you Learn How to install the Arduino step-by-step guide then click on how to install Arduino Button given Blow

Code Examples

In the next example, we read the TCS3200. We utilize the PulseIn function to measure the pulse duration received by the sensor. This process is repeated for each color, and the obtained values are used to classify them as red, blue, or green.

//For more Projects:

// VCC——5V

// OUT——D2
// S0——D3
// S1——D4
// S2——D5
// S3——D6

const int out = 2; // Connect OUT to pin D2
const int s0 = 3;  // Connect S0 to pin D3
const int s1 = 4;  // Connect S1 to pin D4
const int s2 = 5;  // Connect S2 to pin D5
const int s3 = 6;  // Connect S3 to pin D6

byte countRed = 0;
byte countGreen = 0;
byte countBlue = 0;

void setup() {
  pinMode(s0, OUTPUT);
  pinMode(s1, OUTPUT);
  pinMode(s2, OUTPUT);
  pinMode(s3, OUTPUT);
  pinMode(out, INPUT);
  digitalWrite(s0, HIGH);
  digitalWrite(s1, HIGH);

void loop() {
  Serial.print("Red: ");
  Serial.print(countRed, DEC);
  Serial.print(" Green: ");
  Serial.print(countGreen, DEC);
  Serial.print(" Blue: ");
  Serial.print(countBlue, DEC);

  if (countRed < countBlue && countGreen > 100 && countRed < 80) {
    Serial.println(" - Red");
  } else if (countBlue < countRed && countBlue < countGreen) {
    Serial.println(" - Blue");
  } else if (countGreen < countRed && countGreen < countBlue) {
    Serial.println(" - Green");
  } else {
    Serial.println(" -");

void getColor() {
  digitalWrite(s2, LOW);
  digitalWrite(s3, LOW);
  countRed = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
  digitalWrite(s3, HIGH);
  countBlue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
  digitalWrite(s2, HIGH);
  countGreen = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);


  1. Color Detection: Use the TCS3200 sensor for color detection applications such as color sorting, color matching, and color identification in industrial, automotive, and consumer electronics.
  2. Color Sorting: Integrate the TCS3200 sensor into color sorting systems for sorting objects based on color in manufacturing, agriculture, and recycling industries.
  3. Color Analysis: Utilize the TCS3200 sensor for color analysis and research purposes, such as color calibration, spectral analysis, and colorimetry in scientific laboratories and academic institutions.
  4. Color-Based Robotics: Incorporate the TCS3200 sensor into robotics projects for color-based object recognition, navigation, and manipulation in robotic systems and automation applications.
  5. Interactive Installations: Integrate the TCS3200 sensor into interactive installations and art projects for creating color-responsive displays, interactive exhibits, and immersive environments in museums, galleries, and public spaces.


With its advanced features and versatile applications, the TCS3200 color sensor offers endless possibilities for color sensing and analysis in Arduino projects. Whether you’re detecting colors, sorting objects, analyzing color data, developing color-based robotics, or creating interactive installations, the TCS3200 provides accurate and reliable color measurements for enhanced functionality and performance. Let’s embark on the journey of measuring color with Arduino and unlock the potential of color sensing technology!

Leave a Comment