Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <avr/eeprom.h>
- void setup()
- {
- analogReference(EXTERNAL);
- pinMode(A0, INPUT);
- pinMode(11, OUTPUT);
- pinMode(12, OUTPUT);
- pinMode(13, OUTPUT);
- }
- uint16_t readUserTemp()
- {
- return eeprom_read_word(0);
- }
- void writeUserTemp(uint16_t v)
- {
- eeprom_write_word(0, v);
- }
- boolean user_heater_on = false;
- uint32_t last_button = 0;
- uint32_t last_relay_engage = 0;
- boolean debounce = false;
- void loop()
- {
- boolean bt_on = !digitalRead(2);
- boolean bt_down = !digitalRead(3);
- boolean bt_up = !digitalRead(4);
- boolean bt_pump = !digitalRead(5);
- if (debounce && !(bt_on | bt_down | bt_up | bt_pump))
- debounce = false;
- if (!debounce &&
- millis() - last_button > 250 &&
- (bt_on | bt_down | bt_up | bt_pump))
- {
- debounce = true;
- last_button = millis();
- if (bt_on)
- user_heater_on = !user_heater_on;
- else if (bt_down)
- writeUserTemp(readUserTemp() - 1);
- else if (bt_up)
- writeUserTemp(readUserTemp() + 1);
- }
- uint16_t ntc = analogRead(A0);
- Serial.print("A0 = ");
- Serial.print(ntc);
- Serial.print(", USER = ");
- Serial.println(readUserTemp());
- if (ntc > readUserTemp() && millis() - last_relay_engage > 1000)
- {
- Serial.println("ABOVE USER TEMP, HEAT OFF");
- digitalWrite(12, LOW);
- last_relay_engage = millis();
- }
- else if (user_heater_on && ntc < readUserTemp() && millis() - last_relay_engage > 3000)
- {
- Serial.println("HEAT ON");
- digitalWrite(12, HIGH);
- last_relay_engage = millis();
- }
- else if (!user_heater_on)
- {
- digitalWrite(12, LOW);
- }
- Serial.print("Time: ");
- Serial.print(millis());
- Serial.print(", last relay: ");
- Serial.println(last_relay_engage);
- // LED blinks
- if (user_heater_on)
- {
- if (ntc > readUserTemp())
- digitalWrite(13, (millis() / 50) % 10 > 0);
- else
- digitalWrite(13, HIGH);
- }
- else
- {
- if (ntc > readUserTemp())
- digitalWrite(13, (millis() / 50) % 10 == 0);
- else
- digitalWrite(13, LOW);
- }
- if (bt_pump)
- {
- user_heater_on = false;
- analogWrite(11, 96);
- }
- else
- analogWrite(11, 0);
- delay(50);
- }
Advertisement
Add Comment
Please, Sign In to add comment