#include "EEPROM.h"
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 4);
int i1 = A0; int i2 = A1; int i3 = A2; int i4 = A3; int i5 = 8; int i6 = 9; int i7 = A6; int i8 = A7;
int o1 = 0; int o2 = 1; int o3 = 2; int o4 = 3; int o5 = 4; int o6 = 5; int o7 = 6; int o8 = 7;
int enc_but = 13;
int start_but = 10;
int s_level = i1;
int s_up = i2;
int s_down = i3;
int s_front = i4;
int s_back = i5;
int s_alarm_mid = i7;
int s_alarm_up = i8;
int m_up = o1;
int m_down = o2;
int m_front = o3;
int m_back = o4;
int ventil = o5;
int fan = o6;
int heaters = o7;
float Pos;
int Position,Position2,i=0, tmr_vent=0;
int fl=0, fl_run=0, fl_stop=0, t_vent, s=0;
void test() {
if (digitalRead(i1)==LOW) Serial.println("In1");
if (digitalRead(i2)==LOW) Serial.println("In2");
if (digitalRead(i3)==LOW) Serial.println("In3");
if (digitalRead(i4)==LOW) Serial.println("In4");
if (digitalRead(i5)==LOW) Serial.println("In5");
if (digitalRead(i6)==LOW) Serial.println("In6");
if (analogRead(i7)<500) Serial.println("In7");
if (analogRead(i8)<500) Serial.println("In8");
}
void disp(int step) {
lcd.setCursor(0, 0);
if (fl_run==1) {lcd.print("RUNNING ");}
if (fl_run==0 && fl_stop==0) {lcd.print("STOPPED ");}
if (fl_run==0 && fl_stop==1) {lcd.print("STOPPING ");}
lcd.setCursor(0,3);
lcd.print("Time Vent: "); lcd.print(t_vent); lcd.print(" sec ");
lcd.setCursor(0,2); lcd.print("S="); lcd.print(s); lcd.print(" ");
}
void encoder() {
Position2 = (digitalRead(12) * 2) + digitalRead(11);
if (Position2 != Position){
if ((Position == 3) && (Position2 == 2)) {Pos=-1;}
if ((Position == 3) && (Position2 == 1)) {Pos=1;}
}
Position = Position2;
}
void stop_prog() {
bool ex=true;
digitalWrite(m_up, LOW); digitalWrite(m_down, HIGH); digitalWrite(m_back, HIGH); digitalWrite(m_front, HIGH); digitalWrite(ventil, LOW); digitalWrite(fan, LOW); digitalWrite(heaters, LOW);
while (ex) {
if (digitalRead(s_down)==LOW) {digitalWrite(m_down, LOW); disp(10);}
if (digitalRead(s_back)==LOW) {digitalWrite(m_back, LOW); digitalWrite(m_front, LOW); disp(11);}
if ((digitalRead(s_down)==LOW) && (digitalRead(s_back)==LOW)) {ex=false;}
delay(10);
}
s=0;
fl_stop=0;
disp(0);
}
void setup() {
//Serial.begin(115200);
pinMode(12, INPUT_PULLUP); pinMode(13, INPUT_PULLUP); pinMode(11, INPUT_PULLUP); pinMode(10, INPUT_PULLUP);
pinMode(i1, INPUT_PULLUP); pinMode(i2, INPUT_PULLUP); pinMode(i3, INPUT_PULLUP); pinMode(i4, INPUT_PULLUP); pinMode(i5, INPUT_PULLUP); pinMode(i6, INPUT_PULLUP); pinMode(i7, INPUT_PULLUP); pinMode(i8, INPUT_PULLUP);
pinMode(o1, OUTPUT); pinMode(o2, OUTPUT); pinMode(o3, OUTPUT); pinMode(o4, OUTPUT); pinMode(o5, OUTPUT); pinMode(o6, OUTPUT); pinMode(o7, OUTPUT); pinMode(o8, OUTPUT);
digitalWrite(i1,HIGH); digitalWrite(i2,HIGH); digitalWrite(i3,HIGH); digitalWrite(i4,HIGH); digitalWrite(i5,HIGH); digitalWrite(i6,HIGH); digitalWrite(i7,HIGH); digitalWrite(i8,HIGH);
if (EEPROM.read(0) != 39) {EEPROM.write(0, 39); EEPROM.write(1, 5);}
t_vent=EEPROM.read(1);
lcd.init(); lcd.backlight(); lcd.clear(); lcd.setCursor(0,1); lcd.print("===================="); disp(0);
digitalWrite(0, LOW); digitalWrite(1, LOW); digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, LOW);
}
void loop() {
encoder();
if (t_vent>1 && Pos==-1) {t_vent--; Pos=0; disp(0);}
if (t_vent<99 && Pos==1) {t_vent++; Pos=0; disp(0);}
if ((fl==0) && (digitalRead(enc_but)==LOW)) {fl=1; EEPROM.write(1,t_vent);}
if ((fl_run==0) && (fl==0) && (digitalRead(start_but)==LOW)) {fl=1; fl_run=1; s=1; digitalWrite(m_up, HIGH); digitalWrite(m_front,HIGH); digitalWrite(heaters, HIGH); disp(1); }
if ((fl_run==1) && (fl==0) && (digitalRead(start_but)==LOW)) {fl=1; fl_run=0; s=0; fl_stop=1; disp(1); stop_prog();}
if ((fl_run==1) && (s==1) && (digitalRead(s_up)==LOW)) {digitalWrite(m_up, LOW);disp(2);}
if ((fl_run==1) && (s==1) && (digitalRead(s_front)==LOW)) {digitalWrite(m_front, LOW);disp(3);}
if ((fl_run==1) && (s==1) && (digitalRead(s_up)==LOW) && (digitalRead(s_front)==LOW)) {s=2; digitalWrite(ventil, HIGH); tmr_vent=t_vent*100; disp(4);}
if ((fl_run==1) && (s==2) && (tmr_vent>0)) {tmr_vent--;}
if ((fl_run==1) && (s==2) && (tmr_vent==0)) {s=3; digitalWrite(ventil, LOW); disp(5);}
if ((fl_run==1) && (s==3) && (digitalRead(s_level)==LOW)) {s=4; digitalWrite(fan, HIGH); digitalWrite(m_back, HIGH); digitalWrite(m_front, HIGH); disp(6);}
if ((fl_run==1) && (s==4) && (digitalRead(s_back)==LOW)) {digitalWrite(m_front, LOW); digitalWrite(m_back, LOW); s=5;disp(7);}
if ((fl==1) && (digitalRead(start_but)==HIGH) && (digitalRead(enc_but)==HIGH)) {fl=0;}
delay(10);
}