#include "LiquidCrystal.h"
#include <EEPROM.h>
LiquidCrystal lcd( 8, 9, 4, 5, 6, 7);
int count = 0; //cycle count saved to EEProm each cycle
int maxCount = 50;
int EEaddress = 0; //EEProm location to store count
bool Resume = false;
bool Pause = false; // Not used in this version
bool Hault = false;
bool Restart = false;
bool Select = false;
bool operate = false;
const int Press = 13; // cylinder relay connected to D13
void setup() {
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print(" Foot Brake ");
lcd.setCursor(0,1);
lcd.print(" Actuator ");
delay(1000);
lcd.setCursor(0,0);
lcd.print(" LEFT - ReStart ");
lcd.setCursor(0,1);
lcd.print(" RIGHT - Resume ");
pinMode(Press, OUTPUT);
count = 0;
}
void loop() {
readSwitches();
if (Resume == true) {
Resume = false;
EEPROM.get(EEaddress, count); //retrieve count
delay(1000);
operate = true;
}
if (Pause == true) {
Pause = false; //ignore this button
}
if (Hault == true) {
Hault = false;
operate = false;
lcd.setCursor(0,0);
lcd.print(" Foot Brake ");
lcd.setCursor(0,1);
lcd.print(" Actuator ");
delay(1000);
lcd.setCursor(0,0);
lcd.print(" LEFT - ReStart ");
lcd.setCursor(0,1);
lcd.print(" RIGHT - Resume ");
}
if (Restart == true) {
Restart = false;
count = 0; //reset count
operate = true;
}
if (Select == true) {
Select = false; //ignore this button
}
if (operate == true) {
pressureCycle();
}
}
void readSwitches() {
int x;
x = analogRead (0);
if (x < 60) { //RIGHT - Resume
Resume = true;
}
else if (x < 200){ //UP - Pause
Pause = true;
}
else if (x < 400){ //DOWN - Hault
Hault = true;
}
else if (x < 600){ //LEFT - Restart
Restart = true;
}
else if (x < 800){ //SELECT - Select
Select = true;
}
}
void pressureCycle() {
if (count < maxCount) {
lcd.setCursor(0,0);
lcd.print("Cycle ");
lcd.setCursor(7,0);
lcd.print(count);
lcd.setCursor(0,1);
lcd.print(" RUNNING ");
digitalWrite(Press,HIGH);
delay(2500); // hold pedal down 2.5 seconds
digitalWrite(Press,LOW); //release pedal
delay(2000);
count = count + 1;
EEPROM.put(EEaddress, count); // save count
}
else {
Hault = true;
count = 0; //reset count b/c maxCount reached
}
}