Projeto 20
Sensor de cor
Projeto 20 - Sensor de cor
Código (download)
// Projeto 20 - Sensor de cor RGB TCS3200
#define S0 8
#define S1 9
#define S2 12
#define S3 11
#define Out 10
#define pinLEDsDoSensor 7
#define pinLEDvermelho 2
#define pinLEDverde 3
#define pinLEDazul 4
unsigned int valorVermelho = 0;
unsigned int valorVerde = 0;
unsigned int valorAzul = 0;
unsigned int valorBranco = 0;
int limite_branco = 50; //Ajustar este valor
void setup()
{
Serial.begin(9600);
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
pinMode(pinLEDsDoSensor, OUTPUT);
pinMode(Out, INPUT);
pinMode(pinLEDvermelho, OUTPUT);
pinMode(pinLEDverde, OUTPUT);
pinMode(pinLEDazul, OUTPUT);
digitalWrite(S0, HIGH);
digitalWrite(S1, LOW);
delay(2000);
digitalWrite(pinLEDsDoSensor, HIGH);
}
void loop()
{
Cor();
Serial.print("Vermelho :");
Serial.print(valorVermelho);
Serial.print(" Verde : ");
Serial.print(valorVerde);
Serial.print(" Azul : ");
Serial.print(valorAzul);
Serial.print(" Branco : ");
Serial.print(valorBranco);
Serial.println();
if ((valorVermelho < valorAzul) && (valorVermelho < valorVerde) && (valorBranco < limite_branco))
{
Serial.println("Vermelho");
digitalWrite(pinLEDvermelho, HIGH);
digitalWrite(pinLEDverde, LOW);
digitalWrite(pinLEDazul, LOW);
}
else if ((valorAzul < valorVermelho) && (valorAzul < valorVerde) && (valorBranco < limite_branco))
{
Serial.println("Azul");
digitalWrite(pinLEDvermelho, LOW);
digitalWrite(pinLEDverde, LOW);
digitalWrite(pinLEDazul, HIGH);
}
else if ((valorVerde < valorVermelho) && (valorVerde < valorAzul) && (valorBranco < limite_branco))
{
Serial.println("Verde");
digitalWrite(pinLEDvermelho, LOW);
digitalWrite(pinLEDverde, HIGH);
digitalWrite(pinLEDazul, LOW);
}
Serial.println();
delay(50);
digitalWrite(pinLEDvermelho, LOW);
digitalWrite(pinLEDverde, LOW);
digitalWrite(pinLEDazul, LOW);
}
void Cor()
{
//Sensor com filtro Vermelho
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
valorVermelho = pulseIn(Out, digitalRead(Out) == HIGH ? LOW : HIGH);
//Sensor sem filtro
digitalWrite(S2, HIGH);
valorBranco = pulseIn(Out, digitalRead(Out) == HIGH ? LOW : HIGH);
//Sensor com filtro Azul
digitalWrite(S2, LOW);
digitalWrite(S3, HIGH);
valorAzul = pulseIn(Out, digitalRead(Out) == HIGH ? LOW : HIGH);
//Sensor com filtro Verde
digitalWrite(S2, HIGH);
valorVerde = pulseIn(Out, digitalRead(Out) == HIGH ? LOW : HIGH);
}