Estacionamiento Inteligente Arduino


A continuación te propongo un ejemplo de código para Arduino utilizando el sensor de colores TC230. Este ejemplo configura los pines de control para seleccionar cuál filtro se mide (rojo, verde o azul) y determina el color predominante en función de la frecuencia medida.

Cpp


// Ejemplo para el sensor de colores TC230
// Se utilizan 5 pines:
// S0 y S1 para la escala de frecuencia
// S2 y S3 para seleccionar el filtro (rojo, azul o verde)
// sensorOut para leer la frecuencia resultante

const int s0 = 4;       // Escala de salida: controla la frecuencia
const int s1 = 5;
const int s2 = 6;       // Selección para el filtro: combinación con s3
const int s3 = 7;
const int sensorOut = 8;  // Pin de salida de señal del sensor

void setup() {
  Serial.begin(9600);
  
  // Configurar pines de control como salidas
  pinMode(s0, OUTPUT);
  pinMode(s1, OUTPUT);
  pinMode(s2, OUTPUT);
  pinMode(s3, OUTPUT);
  
  // Pin de salida del sensor como entrada
  pinMode(sensorOut, INPUT);
  
  // Configurar la escala de frecuencia.
  // En este ejemplo se activa la escala al 100% (puedes modificarla):
  digitalWrite(s0, HIGH);
  digitalWrite(s1, LOW);
  
  Serial.println("Inicio de mediciones con sensor TC230");
}

void loop() {
  unsigned long redPeriod, greenPeriod, bluePeriod;
  
  // Medir intensidad de color ROJO:
  // Configurar filtro rojo: s2 = LOW, s3 = LOW
  digitalWrite(s2, LOW);
  digitalWrite(s3, LOW);
  redPeriod = pulseIn(sensorOut, LOW);

  // Medir intensidad de color AZUL:
  // Configurar filtro azul: s2 = LOW, s3 = HIGH
  digitalWrite(s2, LOW);
  digitalWrite(s3, HIGH);
  bluePeriod = pulseIn(sensorOut, LOW);

  // Medir intensidad de color VERDE:
  // Configurar filtro verde: s2 = HIGH, s3 = HIGH
  digitalWrite(s2, HIGH);
  digitalWrite(s3, HIGH);
  greenPeriod = pulseIn(sensorOut, LOW);

  // Se imprimen los valores medidos. Valores menores indican mayor intensidad.
  Serial.print("Rojo = ");
  Serial.print(redPeriod);
  Serial.print(" | Verde = ");
  Serial.print(greenPeriod);
  Serial.print(" | Azul = ");
  Serial.println(bluePeriod);
  
  // Determinar el color predominante (se asume que el valor más pequeño corresponde a mayor intensidad)
  if (redPeriod < greenPeriod && redPeriod < bluePeriod) {
    Serial.println("Color detectado: ROJO");
  } else if (greenPeriod < redPeriod && greenPeriod < bluePeriod) {
    Serial.println("Color detectado: VERDE");
  } else if (bluePeriod < redPeriod && bluePeriod < greenPeriod) {
    Serial.println("Color detectado: AZUL");
  } else {
    Serial.println("No se puede determinar un color predominante claro.");
  }
  
  Serial.println("-----------------------------");
  delay(500);
}
Conexiones del Sensor TC230

Table


ConexiónDetalle de la conexiónNotas
S0Conectar al pin digital 4 del ArduinoConfigurado para seleccionar la escala de frecuencia.
S1Conectar al pin digital 5 del ArduinoConfigurado junto con S0.
S2Conectar al pin digital 6 del ArduinoSelección del filtro para color rojo (s2 LOW, s3 LOW) o azul/verde.
S3Conectar al pin digital 7 del ArduinoSelección del filtro para color azul (s2 LOW, s3 HIGH) o verde (s2 HIGH, s3 HIGH).
Salida del sensor (OUT)Conectar al pin digital 8 del Arduino, configurado como entrada.Lee la frecuencia correspondiente al color filtrado.
VCCConectar a 5V en el Arduino
GNDConectar a GND en el Arduino
Este programa mide la frecuencia de salida para cada filtro y, según el valor medido, determina si el color predominante es rojo, verde o azul. Puedes ajustar los tiempos y calibrar los umbrales según las condiciones de tu ambiente y las características específicas de tu sensor TC230. ¿Necesitas ayuda con algo más?

Afraid Gold Hoverboard

Afraid Gold Hoverboard thumbnail