Sure thing, warning, so far I am at 200+ lines. But most of it is a repetition of the same code.
[code]
#include "Nextion.h"
//Inputs
const int Air_Pressure_OK = 22;
const int E_Stop_Button = 23;
const int Coarse_Sys_Button = 24;
const int Mill_Sys_Button = 25;
const int Mold_Sys_Button = 26;
const int Auger_Switch = 27;
const int Coarse_Half_Limit = 28;
const int Coarse_Full_Limit = 29;
const int Powder_Full_Limit = 30;
//Outputs
const int Alarm_Strobe = 42;
const int Pulsers_On_LED = 43;
const int Coarse_Blower_Relay = 44;
const int Coarse_Al_Relay = 45; //Al is air lock//
const int Transfer_Blower_Relay = 46;
const int Millshop_Blower_Relay = 47;
const int Millshop_Al_Relay = 48;
const int Molder_Blower_Relay = 49;
const int Molder_Al_Relay = 50;
const int Coarse_Powder_Al = 51;
const int Coarse_Top_Al = 52;
const int Auger_Relay = 53;
//Analog In
const int Current_Sensor_Read = A15;
//Pin State
int E_Stop_State = HIGH;
int Button_State_1;
int lastButtonState_1;
int Coarse_State = LOW;
int Button_State_2;
int lastButtonState_2;
int Mill_State = LOW;
int Button_State_3;
int lastButtonState_3;
int Mold_State = LOW;
int Button_State_4;
int lastButtonState_4;
//Times
unsigned long lastDebounce_1 = 0;
unsigned long debounceDelay_1 = 50;
unsigned long lastDebounce_2 = 0;
unsigned long debounceDelay_2 = 50;
unsigned long lastDebounce_3 = 0;
unsigned long debounceDelay_3 = 50;
unsigned long lastDebounce_4 = 0;
unsigned long debounceDelay_4 = 50;
void setup()
{
Serial1.begin(9600);
//Set Pin IO
pinMode(Air_Pressure_OK, INPUT);
pinMode(E_Stop_Button, INPUT); //Button State 1
pinMode(Coarse_Sys_Button, INPUT); //Button State 2
pinMode(Mill_Sys_Button, INPUT); // Button State 3
pinMode(Mold_Sys_Button, INPUT); // Button State 4
pinMode(Auger_Switch, INPUT);
pinMode(Coarse_Half_Limit, INPUT);
pinMode(Coarse_Full_Limit, INPUT);
pinMode(Powder_Full_Limit, INPUT);
pinMode(Alarm_Strobe, OUTPUT);
pinMode(Pulsers_On_LED, OUTPUT);
pinMode(Coarse_Blower_Relay, OUTPUT);
pinMode(Coarse_Al_Relay, OUTPUT);
pinMode(Transfer_Blower_Relay, OUTPUT);
pinMode(Millshop_Blower_Relay, OUTPUT);
pinMode(Millshop_Al_Relay, OUTPUT);
pinMode(Molder_Blower_Relay, OUTPUT);
pinMode(Molder_Al_Relay, OUTPUT);
pinMode(Coarse_Powder_Al, OUTPUT);
pinMode(Coarse_Top_Al, OUTPUT);
pinMode(Auger_Relay, OUTPUT);
//Set Pin Status
digitalWrite(E_Stop_Button, E_Stop_State);
digitalWrite(Coarse_Sys_Button, Coarse_State);
digitalWrite(Mill_Sys_Button, Mill_State);
digitalWrite(Mold_Sys_Button, Mold_State);
digitalWrite(Air_Pressure_OK, LOW);
digitalWrite(Auger_Switch, LOW);
digitalWrite(Coarse_Half_Limit, LOW);
digitalWrite(Coarse_Full_Limit, LOW);
digitalWrite(Powder_Full_Limit, LOW);
digitalWrite(Alarm_Strobe, LOW);
digitalWrite(Pulsers_On_LED, LOW);
digitalWrite(Coarse_Blower_Relay, LOW);
digitalWrite(Coarse_Al_Relay, LOW);
digitalWrite(Transfer_Blower_Relay, LOW);
digitalWrite(Millshop_Blower_Relay, LOW);
digitalWrite(Millshop_Al_Relay, LOW);
digitalWrite(Molder_Blower_Relay, LOW);
digitalWrite(Molder_Al_Relay, LOW);
digitalWrite(Coarse_Powder_Al, LOW);
digitalWrite(Coarse_Top_Al, LOW);
digitalWrite(Auger_Relay, LOW);
}
void(*resetFunc)(void) = 0;
void loop()
{
int Read_1 = digitalRead(E_Stop_Button);
if (Read_1 != lastButtonState_1)
{
lastDebounce_1 = millis();
}
if ((millis() - lastDebounce_1) > debounceDelay_1) {
if (Read_1 != Button_State_1)
{
Button_State_1 = Read_1;
if (Button_State_1 == LOW)
{
Button_State_1 = !Button_State_1;
}
}
}
resetFunc();
int Read_2 = digitalRead(Coarse_Sys_Button);
if (Read_2 != lastButtonState_1)
{
lastDebounce_2 = millis();
}
if ((millis() - lastDebounce_2) > debounceDelay_2) {
if (Read_2 != Button_State_2)
{
Button_State_2 = Read_2;
if (Button_State_2 == HIGH)
{
Button_State_2 = !Button_State_2;
}
}
}
digitalWrite(Coarse_Blower_Relay, HIGH);
digitalWrite(Coarse_Al_Relay, HIGH);
digitalWrite(Transfer_Blower_Relay, HIGH);
digitalWrite(Coarse_Powder_Al, HIGH);
digitalWrite(Coarse_Top_Al, HIGH);
int Read_3 = digitalRead(Mill_Sys_Button);
if (Read_3 != lastButtonState_1)
{
lastDebounce_3 = millis();
}
if ((millis() - lastDebounce_3) > debounceDelay_3) {
if (Read_3 != Button_State_3)
{
Button_State_3 = Read_3;
if (Button_State_3 == HIGH)
{
Button_State_3 = !Button_State_3;
}
}
}
digitalWrite(Millshop_Blower_Relay, HIGH);
digitalWrite(Millshop_Al_Relay, HIGH);
digitalWrite(Transfer_Blower_Relay, HIGH);
digitalWrite(Coarse_Powder_Al, HIGH);
digitalWrite(Coarse_Top_Al, HIGH);
int Read_4 = digitalRead(Mold_Sys_Button);
if (Read_4 != lastButtonState_4)
{
lastDebounce_4 = millis();
}
if ((millis() - lastDebounce_4) > debounceDelay_4) {
if (Read_4 != Button_State_4)
{
Button_State_4 = Read_4;
if (Button_State_4 == HIGH)
{
Button_State_4 = !Button_State_4;
}
}
}
digitalWrite(Millshop_Blower_Relay, HIGH);
digitalWrite(Millshop_Al_Relay, HIGH);
digitalWrite(Transfer_Blower_Relay, HIGH);
digitalWrite(Coarse_Powder_Al, HIGH);
digitalWrite(Coarse_Top_Al, HIGH);
if ((Coarse_Half_Limit or Auger_Switch) == HIGH)
{
digitalWrite(Auger_Relay, HIGH);
}
if ((Coarse_Half_Limit && Coarse_Full_Limit or Powder_Full_Limit) == HIGH)
{
digitalWrite(Alarm_Strobe, HIGH);
}
if (Air_Pressure_OK == HIGH)
{
digitalWrite(Pulsers_On_LED, HIGH);
}
}
[/code]