Stap 2: Programmeren van de Arduino
Met uw circuit volledig gebouwd, is het tijd om dit project een brein...We hebben de code die we voor de Arduino gebruikten aangesloten. Opmerking dat het bevat twee parameters die u bent vrij om aan te passen aan uw behoeften en situatie: LIGHT_THRESH (hoe lichtgevoelig het is - toenemende gevoeligheid betekent dat het moet worden donkerder te activeren) en TIMEOUT (hoe lang de lichten blijven op na opsporing van de motie - verhoging van het leiden de lichten tot zal aan blijven langer).
Met VIN verbroken, door deze code te uploaden naar de Arduino. Open de seriële monitor en zien wat de waarden worden in hoge en lage verlichting en stel vervolgens uw drempel aan. Zorg ervoor dat deze zo dicht mogelijk aan waar u de installatie van de sensoren - lichtomstandigheden drastisch kunnen veranderen in een tijdsbestek van een paar voeten test.
Wanneer u een drempel die u denkt werken, je Arduino loskoppelen van uw computer en sluit deze aan op de 12V levering. Nu moet je LED-strip en beweging-lichtgevoelige!
Hier is de code van de Arduino die wij gebruikt:
// 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);
}