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);

}