Projects/Pantry
< Projects
/*
PANTRY LIGHT CONTROL
by Kenneth Burgener (2014)
*/
int blink_led = 11; // on board LED
int blink_counter = 0;
int relay_pin = 21; // relay control pin
int relay_counter = 0;
int fade_led = 12; // the pin that the fade LED is attached to
int brightness = 0; // how bright the LED is
int fadeAmount = 10; // how many points to fade the LED by
int switch_pin = 20; // pin for door input switch
int switch_state = false; // if switch is on or off
int switch_count = 0;
int switch_val = HIGH; // variable for input pin value
int switch_val_last = HIGH; // variable for input pin's previous value
int switch_debounce = 0; // variable for debounce
int switch_safety = false;
int switch_off_delay = false;
int SECONDS = 10; // 10 * 100 ms delay
int MINUTES = 60 * SECONDS; // 10 * 100 ms delay
void setup() {
pinMode(blink_led, OUTPUT);
pinMode(fade_led, OUTPUT);
pinMode(relay_pin, OUTPUT);
digitalWrite(relay_pin, LOW);
pinMode(switch_pin, INPUT);
digitalWrite(switch_pin, HIGH); // turn on pullup resistors
}
void loop() {
/** SWITCH **/
/** SWITCH **/
/** SWITCH **/
// read switch state
if (switch_debounce == 0) {
switch_val_last = switch_val;
switch_val = digitalRead(switch_pin);
if (switch_val != switch_val_last) {
switch_debounce = 5;
}
if (switch_val == LOW) {
digitalWrite(blink_led, HIGH);
} else {
digitalWrite(blink_led, LOW);
}
} else {
switch_debounce--;
}
/** RELAY **/
/** RELAY **/
/** RELAY **/
// of switch state change
if (switch_debounce != 0 && switch_val != switch_val_last) {
if (switch_val == LOW) { // switch on
switch_state = true;
switch_count = 0;
} else { // switch off
switch_state = false;
switch_safety = false;
if (switch_safety == false) {
switch_off_delay = true;
}
switch_count = 0;
}
}
// switch on state and safety
if (switch_state == true && switch_safety == false) {
switch_count++;
if (switch_count == 1) {
digitalWrite(relay_pin, HIGH);
}
if (switch_count == 300 * SECONDS) { // 5 MINUTES WARNING
// warning off
digitalWrite(relay_pin, LOW);
}
if (switch_count == 301 * SECONDS) { // 5 MINUTE WARNING
// warning on
digitalWrite(relay_pin, HIGH);
}
if (switch_count == 330 * SECONDS) { // 5 MINUTE 30 SECOND SAFETY SHUTOFF
// safety off
digitalWrite(relay_pin, LOW);
switch_state = false;
switch_count = 0;
switch_safety = true;
}
}
// reset safety
if (switch_safety == true && switch_val == HIGH) { // switch off
switch_safety = false;
switch_count = 0;
}
// switch off state and delay
if (switch_state == false && switch_off_delay == true) {
switch_count++;
if (switch_count == 10 * SECONDS) { // 10 SECOND WARNING
// warning off
digitalWrite(relay_pin, LOW);
}
if (switch_count == 11 * SECONDS) { // 10 SECOND WARNING
// warning on
digitalWrite(relay_pin, HIGH);
}
if (switch_count == 15 * SECONDS) { // 15 SECOND SHUTOFF
digitalWrite(relay_pin, LOW);
switch_count = 0;
switch_off_delay = false;
}
}
/** BLINK LED **/
/** BLINK LED **/
/** BLINK LED **/
/*
blink_counter++;
if (blink_counter >= 4 * SECONDS) {
blink_counter = 0;
}
if (blink_counter == 0) {
digitalWrite(blink_led, HIGH);
}
if (blink_counter == 2 * SECONDS) {
digitalWrite(blink_led, LOW);
}
*/
/** FADE LED **/
/** FADE LED **/
/** FADE LED **/
// set the brightness
analogWrite(fade_led, brightness);
// change the brightness for next time through the loop:
brightness = brightness + fadeAmount;
// reverse the direction of the fading at the ends of the fade:
if (brightness == 0 || brightness == 150) {
fadeAmount = -fadeAmount ;
}
/** LOOP DELAY **/
/** LOOP DELAY **/
/** LOOP DELAY **/
// wait for 100 milliseconds per cycle
delay(100);
}
%temp%\build3678427800310146579.tmp\sketch_mar09b.cpp
#line 1 "sketch_mar09b.ino" #include "Arduino.h" void setup(); void loop(); #line 1