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