RGBLED To Echo Sensor

Basic RGB LED Setup

Common Cathode RGB LED Wiring:

  • Red → Digital pin 3 (PWM)
  • Green → Digital pin 5 (PWM)
  • Blue → Digital pin 6 (PWM)
  • Common cathode → GND
  • Use 220Ω resistors on each color pin

Distance-Based Color Code

Circuit Setup
Connect the RGB LED:

Red pin → Digital pin 6 (PWM)

Green pin → Digital pin 5 (PWM)

Blue pin → Digital pin 3 (PWM)

Common cathode → GND

const int trigPin = 9;
const int echoPin = 10;
const int redPin = 3;
const int greenPin = 5;
const int bluePin = 6;

void setup() {
  Serial.begin(9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
}

void loop() {
  float distance = getDistance();
  setColorByDistance(distance);
  
  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println(" cm");
  
  delay(200);
}

float getDistance() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  long duration = pulseIn(echoPin, HIGH);
  return duration * 0.01715;
}

void setColorByDistance(float distance) {
  if (distance < 10) {
    // Close - Red
    setColor(255, 0, 0);
  }
  else if (distance < 30) {
    // Medium - Yellow
    setColor(255, 255, 0);
  }
  else if (distance < 50) {
    // Far - Green
    setColor(0, 255, 0);
  }
  else {
    // Very far - Blue
    setColor(0, 0, 255);
  }
}

void setColor(int red, int green, int blue) {
  analogWrite(redPin, red);
  analogWrite(greenPin, green);
  analogWrite(bluePin, blue);
}

 

Smooth Color Transition

For a more elegant effect, you can create smooth color transitions:

void setSmoothColorByDistance(float distance) {
  // Map distance to color spectrum (0-100cm range)
  distance = constrain(distance, 0, 100);
  
  if (distance <= 25) {
    // Red to Yellow (0-25cm)
    int green = map(distance, 0, 25, 0, 255);
    setColor(255, green, 0);
  }
  else if (distance <= 50) {
    // Yellow to Green (25-50cm)
    int red = map(distance, 25, 50, 255, 0);
    setColor(red, 255, 0);
  }
  else if (distance <= 75) {
    // Green to Blue (50-75cm)
    int blue = map(distance, 50, 75, 0, 255);
    int green = map(distance, 50, 75, 255, 0);
    setColor(0, green, blue);
  }
  else {
    // Blue for far distances
    setColor(0, 0, 255);
  }
}

 

Blinking Alert for Very Close Objects

void setColorByDistance(float distance) {
  if (distance < 5) {
    // Blink red for very close objects
    setColor(255, 0, 0);
    delay(100);
    setColor(0, 0, 0);
    delay(100);
  }
  else {
    // Normal color coding
    setSmoothColorByDistance(distance);
  }
}