0% found this document useful (0 votes)
58 views6 pages

TCS230 TCS3200 Color Sensor

This document contains code to control two servo motors and read color values from a TCS230 color sensor. It defines pins for the color sensor and servos, initializes the servos, and defines a readColor function to detect the color and move a bottom servo to different positions based on the detected color. The top servo sweeps back and forth and the process repeats to continuously detect and respond to different colors.

Uploaded by

scorcher b
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
58 views6 pages

TCS230 TCS3200 Color Sensor

This document contains code to control two servo motors and read color values from a TCS230 color sensor. It defines pins for the color sensor and servos, initializes the servos, and defines a readColor function to detect the color and move a bottom servo to different positions based on the detected color. The top servo sweeps back and forth and the process repeats to continuously detect and respond to different colors.

Uploaded by

scorcher b
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 6

TCS230 TCS3200 Color Sensor

Servo Motor
Switch
Power jack
#include <Servo.h>

#define S0 2

#define S1 3

#define S2 4

#define S3 5

#define sensorOut 6

Servo topServo;

Servo bottomServo;

int frequency = 0;

int color=0;

void setup() {

pinMode(S0, OUTPUT);

pinMode(S1, OUTPUT);

pinMode(S2, OUTPUT);

pinMode(S3, OUTPUT);

pinMode(sensorOut, INPUT);

// Setting frequency-scaling to 20%

digitalWrite(S0, HIGH);
digitalWrite(S1, LOW);

topServo.attach(7);

bottomServo.attach(8);

Serial.begin(9600);

void loop() {

topServo.write(115);

delay(500);

for(int i = 115; i > 65; i--) {

topServo.write(i);

delay(2);

delay(500);

color = readColor();

delay(10);

switch (color) {

case 1:

bottomServo.write(50);

break;

case 2:

bottomServo.write(75);
break;

case 3:

bottomServo.write(100);

break;

case 4:

bottomServo.write(125);

break;

case 5:

bottomServo.write(150);

break;

case 6:

bottomServo.write(175);

break;

case 0:

break;

delay(300);

for(int i = 65; i > 29; i--) {

topServo.write(i);

delay(2);

delay(200);
for(int i = 29; i < 115; i++) {

topServo.write(i);

delay(2);

color=0;

// Custom Function - readColor()

int readColor() {

// Setting red filtered photodiodes to be read

digitalWrite(S2, LOW);

digitalWrite(S3, LOW);

// Reading the output frequency

frequency = pulseIn(sensorOut, LOW);

int R = frequency;

// Printing the value on the serial monitor

Serial.print("R= ");//printing name

Serial.print(frequency);//printing RED color frequency

Serial.print(" ");

delay(50);

// Setting Green filtered photodiodes to be read

digitalWrite(S2, HIGH);

digitalWrite(S3, HIGH);

// Reading the output frequency

frequency = pulseIn(sensorOut, LOW);

int G = frequency;

// Printing the value on the serial monitor

Serial.print("G= ");//printing name


Serial.print(frequency);//printing RED color frequency

Serial.print(" ");

delay(50);

// Setting Blue filtered photodiodes to be read

digitalWrite(S2, LOW);

digitalWrite(S3, HIGH);

// Reading the output frequency

frequency = pulseIn(sensorOut, LOW);

int B = frequency;

// Printing the value on the serial monitor

Serial.print("B= ");//printing name

Serial.print(frequency);//printing RED color frequency

Serial.println(" ");

delay(50);

if(R<45 & R>32 & G<65 & G>55){

color = 1; // Red

if(G<55 & G>43 & B<47 &B>35){

color = 2; // Orange

if(R<53 & R>40 & G<53 & G>40){

color = 3; // Green

if(R<38 & R>24 & G<44 & G>30){

color = 4; // Yellow

if(R<56 & R>46 & G<65 & G>55){


color = 5; // Brown

if (G<58 & G>45 & B<40 &B>26){

color = 6; // Blue

return color;

You might also like