Brewery-Controller/boil_kettle/boil_kettle.ino
Chris Giacofei 50bee2daa0 Improved readability... I hope.
Arduino sketch file now only contains #includes and setup/loop
functions. Everything else moved to separate included files.
2022-01-24 10:30:57 -05:00

76 lines
1.7 KiB
C++

//Built-in
#include <Arduino.h>
#include <SPI.h>
#include <Ethernet.h>
#include <EEPROM.h>
#include <PubSubClient.h>
#include <cJSON.h>
// Additoinal Libraries
#include <LiquidCrystal_I2C.h>
#include <LiquidMenu.h> // LiquidMenu_config.h needs to be modified to use I2C.
#include <MD_REncoder.h>
// My Includes
#include "config.h"
#include "globals.h"
#include "src/button.h"
#include "src/slowPWM.h"
#include "src/thermoControl.h"
#include "src/mqtt.h"
#include "src/functions.h"
void setup() {
ConfigData config;
EEPROM.get(ConfAddress, config);
unsigned long lastRun = millis() - UpdateInterval;
Serial.begin(9600);
rotary.begin();
Ethernet.begin(config.mac, config.ip);
attachInterrupt(digitalPinToInterrupt(I_CLK), doEncoder, CHANGE);
attachInterrupt(digitalPinToInterrupt(I_DT), doEncoder, CHANGE);
pinMode(I_CLK, INPUT_PULLUP);
pinMode(I_DT, INPUT_PULLUP);
Enter.begin(I_BTN);
boilPWM.begin(O_PWM, config.period);
mqtt_client.setServer(config.mqtt.broker, 1883);
mqtt_client.setClient(net);
mqtt_client.setCallback(MessageReceived);
KettleController.begin(I_CS1);
KettleController.Hysteresis(config.hysteresis);
KettleController.ThreshPWR(config.threshold);
// if you get a connection, report back via serial:
if (Ethernet.linkStatus() == LinkON) {
ConnectMQTT();
}
lcd.init();
lcd.backlight();
menu.init();
menu.add_screen(home_screen);
menu.update();
};
void loop() {
UpdateBoilKettle();
unsigned long elapsedTime = (millis() - lastRun);
if (Ethernet.linkStatus() == LinkON && elapsedTime >= UpdateInterval) {
mqtt_client.loop();
//if (!mqtt_client.connected()) ConnectMQTT();
SendSensorData();
lastRun = millis();
}
}