Paso 1: Hacer el circuito básico
Siguiendo el esquema anterior, cable un LED RGB y el sensor de movimiento en el Arduino (Nota: Revise la ficha técnica para su sensor de movimiento especial antes de conectar). Ejecute el código siguiente y confirme que el LED funciona a través de los tres colores al unísono cuando el sensor de movimiento detecta el movimiento.
Puede ajustar el código para cambiar el color del LED y hacer cualquier patrón que desee. Nuestra tenía dos LEDs (simplemente conectarlo a tres pernos PWM sin usar) y para alternar con colores fríos (un conjunto de LEDs se desvaneció entre azul y rojo, el otro conjunto entre verde y azul).
(Cómo funciona el código: básicamente, el código es una versión modificada del código de Sparkfun para usar un fotoresistor para controlar LEDs. Si el sensor de movimiento "ve" algo, picos de voltaje en A0. Cuando el código detecta este punto, funciona el LED a través de sus colores y si no hay spike los LEDs permanecen apagadas).
CÓDIGO:
Apagado de int = 0; realmente el sensor de movimiento
Lleva conectado a los pines PWM LED
const int RED_LED_PIN = 9;
const int GREEN_LED_PIN = 10;
const int BLUE_LED_PIN = 11;
Utilizado para almacenar el nivel actual de la intensidad de los LEDs individuales
int redIntensity = 0;
int greenIntensity = 0;
int blueIntensity = 0;
Longitud de tiempo que pasamos mostrando cada color
const int DISPLAY_TIME = 50; En milisegundos
void setup()
{
pinMode (ledPin1, salida); establece el pin led en salida
pinMode (ledPin2, salida); establece el pin led en salida
pinMode (ledPin3, salida); establece el pin led en salida
Serial.Begin(9600);
}
void loop()
{
int lightLevel = analogRead(lightPin); Leer el sensor de movimiento
Serial.println(lightLevel);
Si (lightLevel < 650) {//if Ve el sensor de movimiento (picos de voltaje por encima del umbral)
Ciclo de color de rojo a través de la verde
(En este bucle pasamos de 100% rojo, 0% de verde a rojo de 0%, 100% verde)
para (greenIntensity = 0; greenIntensity < = 255; greenIntensity += 5) {}
redIntensity = 255-greenIntensity;
analogWrite (GREEN_LED_PIN, greenIntensity);
analogWrite (RED_LED_PIN, redIntensity);
Delay(DISPLAY_TIME);
}
Ciclo de color de verde a través de a azul
(En este bucle nos movemos de 100% verde, de azul a verde 0% 0%, 100% azul)
para (blueIntensity = 0; blueIntensity < = 255; blueIntensity += 5) {}
greenIntensity = 255-blueIntensity;
analogWrite (BLUE_LED_PIN, blueIntensity);
analogWrite (GREEN_LED_PIN, greenIntensity);
Delay(DISPLAY_TIME);
}
Ciclo de azul a rojo
(En este bucle pasamos de 100% azul, rojo azul 0% 0% 100% rojo)
para (redIntensity = 0; redIntensity < = 255; redIntensity += 5) {}
blueIntensity = 255-redIntensity;
analogWrite (RED_LED_PIN, redIntensity);
analogWrite (BLUE_LED_PIN, blueIntensity);
Delay(DISPLAY_TIME);
}
}
else {//if el sensor no se ve nada
analogWrite (RED_LED_PIN, 0);
analogWrite(BLUE_LED_PIN,0);
analogWrite(GREEN_LED_PIN,0);
digitalWrite(ledPin1,LOW);
digitalWrite (ledPin2, LOW);
digitalWrite (ledPin3, LOW);
}
}