Paso 2: Programar el Arduino
Con su circuito construido completamente, es hora de darle a este proyecto un cerebro...Hemos añadido el código que utilizamos para el Arduino. Que contiene dos parámetros que eres libre de modificar para requisitos particulares a sus necesidades y situación de la Nota: LIGHT_THRESH (sensible a la luz cómo es - cada vez mayor sensibilidad significa que tendrá que ser más oscuro para activar) y tiempo de espera (cuánto tiempo la luz permanece encendida después de detección de movimiento - aumentándola hará que la luz debe quedarse prendida para ya).
Con VIN desconectado, subir este código para el Arduino. Abrir el monitor serial y ver lo que los valores se convierten en alta y baja iluminación, a continuación, establezca su umbral para que coincida con. Asegúrese de que prueba lo más cerca posible de donde estás instalando los sensores - las condiciones de iluminación pueden cambiar drásticamente en el espacio de pocos pies.
Cuando se tiene un umbral de que funciona, desconecte su Arduino del ordenador y conectarlo a la fuente de 12V. La tira del LED debe ser ahora y movimiento-sensible a la luz!
Aquí está el código de Arduino que utilizamos:
// Automated Runner Lights (v1.0)
// Scott Martin & Todd Medema
// http://fabricate.io
// 10/3/2013
//
// Change this code to your heart's content!
// Constants won't change. They're used here to
// set pin numbers and thresholds:
const int motionPin = 6;// A6
const int lightAnalogPin = 7; // A7
const int ledPin = 3; // D3
const int LIGHT_THRESH = 1000;
const int MOTION_THRESH = 250;
const int TIMEOUT = 1000;
// variables will change:
int motionState = 0; // countdown after last motion
int lightState = 0; // countdown after last dark
int LEDActive = 0; // if LEDs are on
int LEDBrightness = 0; // current LED brightness (for fade in/out)
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop(){
if (analogRead(motionPin) > MOTION_THRESH) {
motionState = TIMEOUT;
}
if (analogRead(lightAnalogPin) < LIGHT_THRESH) { //Is Bright
lightState = 0;
} else {
lightState = TIMEOUT;
}
if (motionState > 0) motionState -= 1;
if (lightState > 0) lightState -= 1;
Serial.print("cell: ");
Serial.print(analogRead(lightAnalogPin));
Serial.print(", pir: ");
Serial.println(analogRead(motionPin));
if (motionState && (lightState || LEDActive)) {
LEDActive = true;
}
else {
LEDActive = false;
}
if (LEDActive) {
if (LEDBrightness < 255) {
LEDBrightness = min(LEDBrightness + 1, 255);
}
} else {
if (LEDBrightness > 0) {
LEDBrightness = max(LEDBrightness - 1, 0);
}
}
analogWrite(ledPin, LEDBrightness);
delay(10);
}