Control de LEDs por Color

0:44

Aquí tienes un ejemplo de código para Arduino que integra el uso del sensor TCS3200 para leer los niveles de color y, según el color predominante (rojo o verde), enciende un LED rojo o un LED verde:

Cpp


#define S0 4        // S0 a pin 4
#define S1 5        // S1 a pin 5
#define S2 6        // S2 a pin 6
#define S3 7        // S3 a pin 7
#define salidaTCS 8 // salidaTCS a pin 8

// Definición de pines para los LEDs
#define LED_ROJO 9   // LED rojo en pin 9
#define LED_VERDE 10 // LED verde en pin 10

void setup() {
  // Configuración de pines del sensor TCS3200
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  pinMode(salidaTCS, INPUT);
  
  // Configuración de pines para los LEDs
  pinMode(LED_ROJO, OUTPUT);
  pinMode(LED_VERDE, OUTPUT);
  
  // Selecciona la frecuencia de salida del sensor (20%)
  digitalWrite(S0, HIGH);
  digitalWrite(S1, LOW);
  
  // Inicializa el monitor serie
  Serial.begin(9600);
}

void loop() {
  int rojo, verde, azul;
  
  // Medición del canal rojo
  digitalWrite(S2, LOW);
  digitalWrite(S3, LOW);
  rojo = pulseIn(salidaTCS, LOW);
  delay(200);
  
  // Medición del canal verde
  digitalWrite(S2, HIGH);
  digitalWrite(S3, HIGH);
  verde = pulseIn(salidaTCS, LOW);
  delay(200);
  
  // Medición del canal azul (no utilizado en la lógica de LED)
  digitalWrite(S2, LOW);
  digitalWrite(S3, HIGH);
  azul = pulseIn(salidaTCS, LOW);
  delay(200);
  
  // Imprime los valores medidos en el monitor serie
  Serial.print("R:");
  Serial.print(rojo);
  Serial.print("\tV:");
  Serial.print(verde);
  Serial.print("\tA:");
  Serial.println(azul);
  
  // Lógica para determinar el color predominante:
  // El sensor TCS3200 devuelve un pulso cuyo tiempo es inversamente proporcional al nivel de intensidad.
  // Por ello: un valor menor significa mayor intensidad.
  // - Si el valor de 'rojo' es menor que 'verde', el rojo es más intenso.
  // - De lo contrario, predominan los verdes.
  if (rojo < verde) {
    digitalWrite(LED_ROJO, HIGH);
    digitalWrite(LED_VERDE, LOW);
  } else {
    digitalWrite(LED_VERDE, HIGH);
    digitalWrite(LED_ROJO, LOW);
  }
  
  delay(500); // Pequeña pausa antes de la siguiente lectura
}
En este código se usan dos pines adicionales (9 y 10) para los LEDs rojo y verde. La lectura de cada canal se realiza de forma secuencial y, luego, se compara el valor de rojo con el de verde para determinar cuál color es el predominante, encendiendo el LED correspondiente. Puedes ajustar los umbrales o agregar más lógica según tus necesidades específicas.
395 days

To get started, talk to Flux or create a New Document.

Documents

    Documents are markdown text files which describe project goals, capture details, or even simulation outputs.

    Assets

    No assets added.

    Colossal Green Gadget Copter

    Colossal Green Gadget Copter thumbnail
    Welcome to your new project. Imagine what you can build here.

    Properties

    Properties describe core aspects of the project.

    Pricing & Availability

    Distributor

    Qty 1

    Controls