Upload files to "Hotplate_Oled_420CW_31856_20221122_eeprom"
This commit is contained in:
244
Hotplate_Oled_420CW_31856_20221122_eeprom/VarInit.h
Normal file
244
Hotplate_Oled_420CW_31856_20221122_eeprom/VarInit.h
Normal file
@@ -0,0 +1,244 @@
|
||||
// name the spi inputs and outputs
|
||||
#define DC 9 //17 // Display Data/Command
|
||||
#define RES 8 //16 // Display Reset
|
||||
#define CS 10 //5 // Display Chip Select
|
||||
#define thermoCS 14 //15 // MAX31856 temperature sensor Chip Select
|
||||
|
||||
// name the other inputs and the outputs
|
||||
#define enter 4 //32
|
||||
#define up 6 //33
|
||||
#define down 5 //25
|
||||
#define right 3 //26
|
||||
#define left 7 //27
|
||||
#define klixon 15 //2 // over temperature alart
|
||||
#define pins 21 //14 // 1 = pins up = green led
|
||||
#define vacuum 22 //13 // 1 = vacuum on = yellow led
|
||||
#define heat 23 //12 // 1 = heater on = red led
|
||||
|
||||
#define bordercolor 5 // border grey value
|
||||
#define curvecolor 8 // curve grey value
|
||||
|
||||
#define pressed 0 // button pressed
|
||||
#define released 1 // button released
|
||||
|
||||
// both hardware SPI
|
||||
Adafruit_MAX31856 maxthermo = Adafruit_MAX31856(14);
|
||||
Adafruit_SSD1322 oled(256, 64, &SPI, DC, RES, CS, 32000000); // name de display struct
|
||||
|
||||
// setting PWM properties
|
||||
const int freq = 500; // PWM frequenvy for heater output
|
||||
//const int ledChannel = 0; //
|
||||
const int resolution = 12; // Output resolution 0-4095
|
||||
|
||||
bool blocktemp = false;
|
||||
|
||||
// contains the position of the button true = released false = pressed
|
||||
bool enterKey = true;
|
||||
bool upKey = true;
|
||||
bool downKey = true;
|
||||
bool rightKey = true;
|
||||
bool leftKey = true;
|
||||
|
||||
// latch for single push or repeat button
|
||||
bool enterKeyblk = false;
|
||||
bool upKeyblk = false;
|
||||
bool downKeyblk = false;
|
||||
bool rightKeyblk = false;
|
||||
bool leftKeyblk = false;
|
||||
|
||||
bool keyIn = false; // false if no button is pressed true if any button is pressed
|
||||
|
||||
bool repeatUpdownKeyblk = false; // true = single push false = repeat
|
||||
bool repeatRightLeftKeyblk = false; // true = single push false = repeat
|
||||
bool repeatEnterKeyblk = false; // true = single push false = repeat
|
||||
|
||||
bool first = 0;
|
||||
|
||||
const char LAYOUT[6][4][29] =
|
||||
{
|
||||
{" C s ",
|
||||
" Single temperature/time ",
|
||||
" Curve temperature/time ",
|
||||
" "},
|
||||
{" C s ",
|
||||
" Recipe Setpoint Time ",
|
||||
" C s ",
|
||||
" "},
|
||||
{" C s ",
|
||||
" Curve Point Value Time ",
|
||||
" C s ",
|
||||
" "},
|
||||
{" C C s ",
|
||||
" ",
|
||||
" ",
|
||||
" "},
|
||||
{" Development & design ",
|
||||
" ",
|
||||
" Herman Adema ",
|
||||
" "},
|
||||
{" ",
|
||||
" A009082023 ",
|
||||
" TEENSY 4.0 ",
|
||||
" "}
|
||||
};
|
||||
|
||||
const char STATUSLINE[18][29] =
|
||||
{" PROCESS STOPPED ",
|
||||
" ",
|
||||
" ",
|
||||
" PROCESS STANDBY ",
|
||||
"WARNING:INTERNAL TEMP > 50 C",
|
||||
" ",
|
||||
" TC OPEN CIRCUIT ",
|
||||
"TC OVERVOLTAGE/UNDERVOLTAGE ",
|
||||
" COLD JUNCTION OUT OF RANGE ",
|
||||
" TC OUT OF RANGE ",
|
||||
" Cold Junction Range Fault ",
|
||||
" Thermocouple Range Fault ",
|
||||
" Cold Junction High Fault ",
|
||||
" Cold Junction Low Fault ",
|
||||
" Thermocouple High Fault ",
|
||||
" Thermocouple Low Fault ",
|
||||
" Over/Under Voltage Fault ",
|
||||
" Thermocouple Open Fault "};
|
||||
|
||||
const char MODE[4][9] = {" Stop "," Heat "," Run "," St-by "};
|
||||
|
||||
|
||||
const byte POSX[4][5] = {
|
||||
{2, 1, 1, 0, 0}, // screen 0 // single // curve
|
||||
{3, 3, 11, 22, 0}, // screen 1 // number // recipe // temp // time
|
||||
{4, 2, 9, 15, 22}, // screen 2 // number // point // temp // time
|
||||
{3, 3, 11, 21, 0} // screen 3 // number and cursor positions screen 2
|
||||
};
|
||||
const byte POSY[4][5] = {
|
||||
{2, 31, 47, 0, 0}, // screen 0 // single // curve
|
||||
{3, 47, 47, 47, 0}, // screen 1 // number // recipe // temp // time
|
||||
{4, 47, 47, 47,47}, // screen 2 // number // point // temp // time
|
||||
{3, 3, 11, 21, 0} // screen 3 // number and cursor positions screen 2
|
||||
};
|
||||
|
||||
int font_with = 9; // Used for calculation of position on display
|
||||
|
||||
int curpos = 0; // cursor position
|
||||
|
||||
// scrNr = 1 main screen
|
||||
int recipeNr0 = 0; // hotplate recipe number
|
||||
int oldrecipeNr0 = 0; // previous hotplate recipe number
|
||||
int timeValue0 = 0; // hotplate recipe process time value
|
||||
int oldtimeValue0 = 0; // previous hotplate recipe process time value
|
||||
float tempValue0 = 0; // hotplate recipe temperature value
|
||||
float oldtempValue0 = 0; // previous hotplate recipe temperature value
|
||||
const int recipeMax0 = 10; // maximum number of recipes
|
||||
const int timeMax0 = 999; // maximum process time
|
||||
const float tempMax0 = 350; // maximum hotplate temperature
|
||||
|
||||
// scrNr = 2 curve screen
|
||||
int curveNr1 = 0; // hotplate curve number
|
||||
int oldcurveNr1 = 0; // previous hotplate curve number
|
||||
int pointNr1 = 0; // curve point number
|
||||
int oldpointNr1 = 0; // previous curve point number
|
||||
int timeValue1 = 0; // hotplate curve process time value
|
||||
int pointcnt = 1; // current point number
|
||||
int oldtimeValue1 = 0; // previous hotplate curve process time value
|
||||
float tempValue1 = 0; // hotplate curve temperature value
|
||||
float oldtempValue1 = 0; // previous hotplate curve temperature value
|
||||
const int curveMax1 = 10; // maximum number of curves
|
||||
const int pointMax1 = 10; // maximum number of points
|
||||
const int timeMax1 = 999; // maximum process time
|
||||
const float tempMax1 = 350; // maximum hotplate temperature
|
||||
|
||||
int timeCounter0 = 0; // hotplate timer value
|
||||
int oldtimeCounter0 = 0; // previous hotplate timer value
|
||||
bool process_start = false; // start the process timer
|
||||
|
||||
int timeCounter1 = 0; // hotplate timer value
|
||||
int oldtimeCounter1 = 0; // previous hotplate timer value
|
||||
bool process_startC = false; // start the process timer Curve
|
||||
|
||||
uint8_t fault;
|
||||
double tempMeas = 0; // actual hotplate temperature
|
||||
double oldtempMeas = 0; // previous hotplate temperature
|
||||
int bacTemp[256]; // temperature curve backup
|
||||
int bacPoints[256]; // curve points backup
|
||||
int lastx = 0; // last temperature position on curve screen
|
||||
|
||||
// enter button modes
|
||||
int enter1Pos = 0; // actual enter button position
|
||||
int oldenter1Pos = 0; // previous enter button position
|
||||
int enterMax = 3; // maximum number of enter button positions
|
||||
|
||||
double Input = 0; // PID input
|
||||
double oldSetpoint = 0;
|
||||
double Setpoint = 0; // PID setpoint
|
||||
double Output = 0; // PID output
|
||||
|
||||
// initialize the PID controller
|
||||
double Kp=400, Ki=0.1, Kd=0.01; //50,2,0.01
|
||||
//PID myPID(&Input, &Output, &Setpoint, P_ON_M, Kp, Ki, Kd, DIRECT);
|
||||
PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT);
|
||||
|
||||
bool setAlert = false; // set/reset alert
|
||||
byte pins_up_with_delay = 0; // pins on delaytime --- does not hold the programm
|
||||
|
||||
int statusMsgOld = 5; // previous status message
|
||||
int statusMsg = enter1Pos; // actual status message
|
||||
|
||||
// recipes temperature,processtime
|
||||
short RECIPES[recipeMax0+1][2] =
|
||||
{
|
||||
{85,60},{80,60},{80,90},{85,60},{90,60},{95,60},{100,90},{120,60},{120,600},{180,90},{100,90}
|
||||
};
|
||||
|
||||
short CURVES[curveMax1+1][pointMax1+1][2] =
|
||||
{
|
||||
{{90,0},{100,30},{110,60},{120,90},{150,120},{150,150},{170,180},{190,210},{200,240},{200,270},{200,300}},
|
||||
{{10,0},{80,60},{80,90},{85,60},{90,60},{95,60},{100,90},{120,60},{120,600},{180,90},{100,90}},
|
||||
{{20,0},{80,60},{80,90},{85,60},{90,60},{95,60},{100,90},{120,60},{120,600},{180,90},{100,90}},
|
||||
{{0,0},{80,60},{80,90},{85,60},{90,60},{95,60},{100,90},{120,60},{120,600},{180,90},{100,90}},
|
||||
{{0,0},{80,60},{80,90},{85,60},{90,60},{95,60},{100,90},{120,60},{120,600},{180,90},{100,90}},
|
||||
{{0,0},{80,60},{80,90},{85,60},{90,60},{95,60},{100,90},{120,60},{120,600},{180,90},{100,90}},
|
||||
{{0,0},{80,60},{80,90},{85,60},{90,60},{95,60},{100,90},{120,60},{120,600},{180,90},{100,90}},
|
||||
{{0,0},{80,60},{80,90},{85,60},{90,60},{95,60},{100,90},{120,60},{120,600},{180,90},{100,90}},
|
||||
{{0,0},{80,60},{80,90},{85,60},{90,60},{95,60},{100,90},{120,60},{120,600},{180,90},{100,90}},
|
||||
{{0,0},{80,60},{80,90},{85,60},{90,60},{95,60},{100,90},{120,60},{120,600},{180,90},{100,90}},
|
||||
{{0,0},{80,60},{80,90},{85,60},{90,60},{95,60},{100,90},{120,60},{120,600},{180,90},{100,90}},
|
||||
};
|
||||
|
||||
float curvetimescale = 0; // max times curve
|
||||
float curvetempscale = 0; // max temp curve
|
||||
int scrNr = 1; // first screen from LAYOUT[][][]
|
||||
|
||||
|
||||
int trendline[4][256]; // temperature trendlines
|
||||
int recipesteps[10][30]; // programmable trend follow steps
|
||||
|
||||
bool start_scr_timer = false;
|
||||
int scrsvrcnt = 0;
|
||||
|
||||
|
||||
unsigned long keytime = 0;
|
||||
unsigned long initrepeat = 200;
|
||||
unsigned long keywindow = 50; // time in ms // interval for reading keyboard
|
||||
unsigned long initkeywindow = keywindow; // time in ms // interval for reading keyboard used to reset timer
|
||||
unsigned long keytimecnt = 300;
|
||||
unsigned long keytimecntinit = keytimecnt;
|
||||
unsigned long keytottime = 0;
|
||||
|
||||
unsigned long temptime = 0;
|
||||
unsigned long tempwindow = 100; // time in ms // interval for temperature measurement and controlling
|
||||
|
||||
unsigned long alerttime = 0;
|
||||
unsigned long alertwindow = 1000; // time in ms // interval for checking alert
|
||||
|
||||
unsigned long pindelaytime = millis();
|
||||
unsigned long pindelaywindow = 2000; // time in ms // on delay for lifting pins
|
||||
|
||||
unsigned long prctimertime = 0;
|
||||
unsigned long prctimerwindow = 1000; // time in ms // interval for process timer
|
||||
|
||||
unsigned long prctimertimeC = 0;
|
||||
unsigned long prctimerwindowC = 1000; // time in ms // interval for process timer
|
||||
|
||||
unsigned long scrsavertime = 0;
|
||||
unsigned long scrsaverwindow = 60000; // time in ms // interval for screensavercounter
|
||||
Reference in New Issue
Block a user