Code for this project.
// By Jesse Park
// 1/28/16
// This code makes the stove smarter
// Set the variables
int hallpin = A0; // hall effect sensor pin
int ledpin = D0; // led pin
int beeppin = D1; // beeper pin
int buttonpin = D2; // button pin
int hallEffectValue = 0; // value of the hall effect sensor
int ledbrightness = 0; // control the led brightness
int long timer = 0; // control time
int beep = 0; // loudness of the beeper
int duration = 0; // records how long the stove is on
int pushbuttonstate = 0; // shows the state of the push button
int ifttHallEffectValue = 0; // special variable to work with IFTT
// Set up
void setup() {
Serial.begin(9600); // for easy debugging
pinMode(ledpin, OUTPUT); // set ledpin as an OUTPUT
pinMode(buttonpin, INPUT_PULLUP); // set buttonpin as an INPUT_PULLUP
pinMode(beeppin,OUTPUT); // set beeppin as an OUTPUT
}
// Set the loop
void loop() {
hallEffectValue = analogRead(hallpin); // set the hall effect sensor
pushbuttonstate = digitalRead(buttonpin); // set the value of the pushbuttonstate
// Activates when the stove is on
if (hallEffectValue > 100){
// Used for publishing data to IFTT. Checks if the hall effect value has changed
if (ifttHallEffectValue == 0){
ifttHallEffectValue = 1; // set the hall effect value to 1
Particle.publish("onStatus", "ON"); //sends an event that the stove is on
}
ifttHallEffectValue = 1; // set the hall effect value to 1
// set time function
if( timer == 0 ){
timer = millis();
}
// Changes the brightness depending on time
if (ledbrightness < 255){
ledbrightness = ledbrightness + 1;
}
else ledbrightness = 255;
analogWrite(ledpin,ledbrightness); //record the brightness
// Checks if 10 min has passed. If so, beeps untill pushbutton is pressed
if (timer + 600000 < millis() ) {
analogWrite(beeppin, 1);
duration = duration + 1;
if (pushbuttonstate == LOW) {
timer = 0; //restart time
analogWrite(beeppin, 0);
duration = 0;
Particle.publish("PushButton", "Delay"); //sends an event that the button is pressed
}
}
else duration = duration + 1;
}
// If the stove is not on, the stove is off.
else {
// Used for publishing data to IFTT. Checks if the hall effect value has changed
if (ifttHallEffectValue == 1){
ifttHallEffectValue = 0;
Particle.publish("offStatus", "OFF"); //sends an event that the stove is off
}
ifttHallEffectValue = 0;
timer = 0; //restart time
ledbrightness = 0;
duration = 0;
analogWrite(ledpin,ledbrightness); //turn off the led
analogWrite(beeppin, 0);
}
// Used for debugging
Serial.print( "HallEffect " );
Serial.println( hallEffectValue);
Serial.print( "LED " );
Serial.println( ledbrightness );
Serial.print( "Timer " );
Serial.println( timer );
Serial.print( "Duration " );
Serial.println( duration );
delay(1000);
}
Click to Expand
Content Rating
Is this a good/useful/informative piece of content to include in the project? Have your say!
You must login before you can post a comment. .