How to Make Color Sorting Machine Arduino Based




Introduction: How to Make Color Sorting Machine Arduino Based

About: Electrical engineer by profession

In this Instructable i will show you how to make a simple color sorting machine machine using Arduino and TCS230,TCS3200 color sensor with servo motors.

In this project Color sensor detect the color of candy and generate output in this output sensor data transfer to arduino arduino will process those data according to code uploaded in it and command servo to move and sort color candy on basis of there color.

Before we proceed further I would like to tell you about JLCPCB.COM.
JLCPCB are the leader in PCB manufacturing they have a world class PCB production line, that ensure the fast and Quality PCB production in really very affordable rates. if you have any PCB need please try JLCPCB.COM

First watch the video of Machine

Step 1: Video

Step 2: Components Required

1) Arduino NANO : -

2) Color sensor :-

3) Servo motor :-

4) Cardboard

5) Color candy

Step 3: Electrical Drawing

Do wiring as shown in figure

Color Sensor Arduino








Connect TOP servo signal wire at D7 pin of arduino

Connect Bottom servo signal wire at D8 pin of arduino

Step 4: Machine Assembley

Download the attached PDF file for complete dimension of machine

Bring some cardboard pieces draft the model as per given dimension on cardboard sheet

carefully cut those pieces make sure are accurately cutted to avoid any malfunction during machine run.

Glue all the parts as shown in figure,

To make transparent feed tube i used empty cold drink bottle cut it and took a piece out of it

and fold that sheet in tube like shape and secure with transparent, keep the diameter of tube according to the size of candy so they can pass through it easily at same time not also very loose..

Step 5: Basics of Color Sensor TCS230,3200

The TCS230 programmable color light-to-frequency converter combines configurable silicon photodiodes and

a current-to-frequency converter on single monolithic CMOS integrated circuit. The output is a square wave (50% duty cycle) with frequency directly proportional to light intensity (irradiance). The full-scale output frequency can be scaled by one of three preset values via two control input pins. Digital inputs and digital output allow direct interface to a microcontroller or other logic circuitry. Output enable (OE) places the output in the high-impedance state for multiple-unit sharing of a microcontroller input line. The light-to-frequency converter reads an 8 x 8 array of photodiodes. Sixteen photodiodes have blue filters, 16 photodiodes have green filters, 16 photodiodes have red filters, and 16 photodiodes are clear with no filters. The four types (colors) of photodiodes are interdigitated to minimize the effect of non-uniformity of incident irradiance. All 16 photodiodes of the same color are connected in parallel and which type of photodiode the device uses during operation is pin-selectable. Photodiodes are 120 µm x 120 µm in size and are on 144-µm centers.

Step 6: Final Step (Loading Code & Sensor Data Study)

Before going further we must know what vale will sensor gives when different colors are take in fornt of the sensor

So first wire the sensor and arduino as shown in picture you may skip to attache those servo at this point of time.

Load the code attached here to your arduino board

open the serial monitor

You are getting some value like

R= ** G= ** B= **

** are any numbers

now bring color sheet in front of the sensor you will see the RGB numbers are change and keeps repeating as soon as you keep that color sheet in front of that sensor.

you will get different set of RGB numbers for different,

so it is clear that sensor detect different colors and gives different value.

now we have to write down the RGB value for the color which are going to use in project

for example when i bring YELLOW color in front of sensor i get

R=22 G=29 B=32

so i can say that

if (R>17 & R<27 & G>25 & G<34)


here i kept margin of +-5 for RGB values to compensate the fluctuate sensor values.

in this way take the readings of different colors which you need to use and add those values in code at this place

if(R<25 & R>15 & G<33 & G>23) {color = 1; // YELLOW }

if(R<55 & R>45 & G<49 & G>39) {color = 2; // GREEN }

if(R<70 & R>60 & G<10 & G>20){color = 3; // PINK }

if(R<7 & R>11 & G<21 & G>35){color = 4; // Red

and upload the code connect the both servos fix all the required components load the color candy in tube and your machine is ready to short the candy of different colors.

Invention Challenge 2017

Participated in the
Invention Challenge 2017

1 Person Made This Project!


  • New Year, New Skill Student Design Challenge

    New Year, New Skill Student Design Challenge
  • Raspberry Pi Contest

    Raspberry Pi Contest
  • Anything Goes Contest 2021

    Anything Goes Contest 2021



1 year ago on Introduction

Hello, Can I replace the sensor with an arduino camera like OV7670 VGA
camera? Should I use the same modules if i use an arduino camera? My
idea is: the camera will take a picture of the object, then it will
take a histogram of the picture or another process which takes the color
of the object and recognize the color of the object. Everything is the
same in process but I only want to change the sensor with camera.


Question 2 years ago

I did same what you did but when I open serial monitor there is no value display on serial monitor


Question 2 years ago on Step 3

I can't make sense of the blueprints! Help me please!

Abdelrhman Badr
Abdelrhman Badr

Question 2 years ago

Unfortunately, I bought TCS3210 color sensor but it doesn't detect a small things like a candy at our case approximately the reads of "R&G&B" are same for diffrent colors what should I do ??


3 years ago

Dear Sir, I apologize in the first place, in case you are upset with my query, and regarding your "instructable: Arudino based color shorting machine", I have built, following your instructions, to the letter, both in As regards the hardware as in the software, the software recognizes the colors, and through the Monitor Series, which I apply in the section of the sketch "if (R <25 & R> 15 & G <33 & G> 23) { color = 1; // YELLOW}, the numbers that my TCS gives, are different, which I do not think that matters, or yes ?. Well the question is as follows, only the upper servo works, the lower one (or bottom) it gets stuck, without moving, and making a very soft hum If I change the pin of the servo that does not activate-it does not work, the one that supplies the candies, pin D8, to pin D7, then..oh !!! magic, if it works, I have checked, line by line, and many times, the code, all correct, I have changed the TCS3200, for others that I have in my workshop, I have changed servos, A Rano Nano, cables, everything, and nothing! I beg of you, if you are so kind, to tell me what the problem may be, and to solve it, I will be extremely grateful.


Question 3 years ago

Too much tolerance

Sarita sgs
Sarita sgs

Question 3 years ago

hi, I want to try to make this machine but I don't understand the model, so I cant draw it and assemble. could you help me please ??


4 years ago

what do the red dots in the wiring diagram mean? Shared pins? What sort of wire do I need to connect multiple inputs to the same pin?