Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
95 lines (82 sloc) 2.44 KB
/*
Moonlighting Lamp
A glorified lamp that changes brightness based on proximity not motion
By Nicholas LaJeunesse
*/
// defines 4 pins for 4 LEDs
const int LED1 = 11;
const int LED2 = 10;
const int LED3 = 9;
const int LED4 = 6;
// defines pin for distance sensor power
const int distSensorPower = 13;
boolean state = 0; // distance sensor off is 0, on is 1
int lightSensor = 0; // value to store light sensor reading
int brightness = 0; // brightness of LEDs
int brightnessWant = 0; // desired brightness of LEDs
int fadeAmount = 5; // amount to fade LEDs by
int distSensor = 0; // value to store distance sensor reading
int i;
void setup() {
// set LED pins to OUTPUT
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
// set distance sensor power pin to OUTPUT
pinMode(distSensorPower, OUTPUT);
Serial.begin(9600);
}
void loop() {
// read light sensor if LEDs not active
if (brightness == 0)
lightSensor = analogRead(1);
// enable distance sensor only if day
if (lightSensor > 100) {
digitalWrite(distSensorPower, LOW);
state = 0;
}
else if (lightSensor <= 100) {
digitalWrite(distSensorPower, HIGH);
state = 1;
}
if (state == 1) {
// take average of distance sensor readings
for (i=0; i<8; i++) {
distSensor += analogRead(0);
delay(5);
}
distSensor /= 8;
// map desired brightness to distance sensor reading
brightnessWant = map(distSensor, 15, 125, 0, 255);
if (brightnessWant < 0)
brightnessWant = 0;
if (brightnessWant > 255)
brightnessWant = 255;
// set desired brightness inversly proportional to distance from sensor
brightnessWant = 255 - brightnessWant;
// set brightness to fade in or out based on desired brightness
if (brightness < brightnessWant) {
brightness = brightness + fadeAmount;
if (brightness > 255)
brightness = 255;
}
else if (brightness > brightnessWant) {
brightness = brightness - fadeAmount;
if (brightness < 0)
brightness = 0;
}
else
brightness = brightnessWant;
}
else if (state == 0) {
brightness = 0;
}
// write brightness to LEDs
analogWrite(LED1, brightness);
analogWrite(LED2, brightness);
analogWrite(LED3, brightness);
analogWrite(LED4, brightness);
Serial.print("Sensor = ");
Serial.println(distSensor);
}