#include <PID_v1.h>
#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"
#include <Fonts/FreeSerif12pt7b.h>
#include <Fonts/FreeSerifBoldItalic24pt7b.h>
#include "Definitions.h"
//#include "Center_strin.h"
#include "image.h"
#include <EEPROM.h>
// int count=0;
// unsigned long last_interval=0;
void setup()
{
tft.begin();
tft.fillScreen(OFF_WHITE);
tft.drawBitmap((240 - 180) / 2, (240 - 180) / 2, epd_bitmap_download, 180, 180, BLACK);
delay(2000);
//PID SETUP
windowStartTime = millis();
Setpoint = 100;//set temp
myPID.SetOutputLimits(0, WindowSize); //tell the PID to range between 0 and the full window size
myPID.SetMode(AUTOMATIC); //turn the PID on
pinMode( Steam_pin, INPUT_PULLUP );
pinMode( Brew_switch_pin, INPUT_PULLUP );
pinMode( Hot_wat_pin, INPUT_PULLUP );
pinMode( Three_way_pin, OUTPUT );
pinMode( Pump_pin, OUTPUT );
pinMode( Element_pin, OUTPUT );
pinMode(ENCODER_CLK, INPUT_PULLUP);
pinMode(ENCODER_DT, INPUT_PULLUP);
pinMode(ENCODER_SW, INPUT);
Serial.begin(115200);
Screen_setup();
}
void loop()
{
SCR_REFRESH();
if (digitalRead(Brew_switch_pin) == LOW) {
Brew_time_display();
if (Brew_time < Total_brew_time) {
digitalWrite(Element_pin, HIGH);//turn heat on full
digitalWrite(Three_way_pin, HIGH);//activate 3-way
Brew_timer();//start brew timer
Preinfusion();//start preinfusion
Brew();//Start brew
Trailoff();//end brew when switch is released
}
}
else {
digitalWrite(Three_way_pin, LOW);
if (Brew_time != 0) {
last_shot_time = Brew_time;
EEPROM.put(0, last_shot_time);
const float last_shot_time[] PROGMEM = {Brew_time}; // use this form
Brew_time = 0;
Brew_time_ms = 0;
Screen_setup();
}
}
if (digitalRead(Hot_wat_pin) == LOW) {
digitalWrite(Element_pin, HIGH);
digitalWrite(Pump_pin, HIGH);
}
if (digitalRead(Hot_wat_pin) == HIGH && digitalRead(Brew_switch_pin) == HIGH ) {
digitalWrite(Pump_pin, LOW);
digitalWrite(Three_way_pin, LOW);
Encoder();
// menus();
Run_PID();
}
// count++;
// if (millis()-last_interval>1000){
// last_interval=millis();
// Serial.println(count);
// count = 0;
// }
}