First init.
This commit is contained in:
@@ -0,0 +1,128 @@
|
||||
// Pin Definitions
|
||||
const int Sw0PotPin = A6;
|
||||
const int Sw1OffParkPin = 2;
|
||||
const int Sw1IntmPin = 3;
|
||||
const int Sw1LoPin = 4;
|
||||
const int Sw1HiPin = 5;
|
||||
const int Rly1LoPin = 13;
|
||||
const int Rly2HiPin = 14;
|
||||
const int Rly3GndPin = 15;
|
||||
const int Rly4WshPin = 16;
|
||||
|
||||
// Global Variables
|
||||
int waitingTime = 5000; // Default waiting time in milliseconds (5 seconds)
|
||||
bool isWipIntmRunning = false; // Flag to track if WipIntm function is running
|
||||
unsigned long previousTime = 0; // Variable to store the previous time for checking elapsed time
|
||||
|
||||
// Default state: WipOffPark
|
||||
int currentState = 0;
|
||||
|
||||
void setup() {
|
||||
// Initialize input pins
|
||||
pinMode(Sw0PotPin, INPUT);
|
||||
pinMode(Sw1OffParkPin, INPUT);
|
||||
pinMode(Sw1IntmPin, INPUT);
|
||||
pinMode(Sw1LoPin, INPUT);
|
||||
pinMode(Sw1HiPin, INPUT);
|
||||
|
||||
// Initialize output pins
|
||||
pinMode(Rly1LoPin, OUTPUT);
|
||||
pinMode(Rly2HiPin, OUTPUT);
|
||||
pinMode(Rly3GndPin, OUTPUT);
|
||||
pinMode(Rly4WshPin, OUTPUT);
|
||||
|
||||
// Default state: all relays off (WipOffPark)
|
||||
digitalWrite(Rly1LoPin, LOW);
|
||||
digitalWrite(Rly2HiPin, LOW);
|
||||
digitalWrite(Rly3GndPin, HIGH);
|
||||
digitalWrite(Rly4WshPin, HIGH);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// Read input states
|
||||
int offParkState = digitalRead(Sw1OffParkPin);
|
||||
int intmState = digitalRead(Sw1IntmPin);
|
||||
int loState = digitalRead(Sw1LoPin);
|
||||
int hiState = digitalRead(Sw1HiPin);
|
||||
|
||||
// Check input states and execute corresponding functions
|
||||
if (offParkState == HIGH) {
|
||||
WipOffPark();
|
||||
currentState = 0; // Set current state to WipOffPark
|
||||
} else if (intmState == HIGH) {
|
||||
if (!isWipIntmRunning) {
|
||||
WipIntm();
|
||||
currentState = 1; // Set current state to WipIntm
|
||||
}
|
||||
} else if (loState == HIGH) {
|
||||
WipLo();
|
||||
currentState = 2; // Set current state to WipLo
|
||||
} else if (hiState == HIGH) {
|
||||
WipHi();
|
||||
currentState = 3; // Set current state to WipHi
|
||||
} else {
|
||||
// Stop WipIntm function if no input is detected
|
||||
if (currentState == 1 && isWipIntmRunning) {
|
||||
isWipIntmRunning = false;
|
||||
digitalWrite(Rly3GndPin, HIGH);
|
||||
}
|
||||
}
|
||||
|
||||
// Update waiting time based on potentiometer value
|
||||
int potValue = analogRead(Sw0PotPin);
|
||||
waitingTime = map(potValue, 0, 1023, 5000, 30000); // 5 seconds to 30 seconds
|
||||
|
||||
// Check if the waiting time has elapsed for WipIntm function
|
||||
if (currentState == 1 && isWipIntmRunning && millis() - previousTime >= waitingTime) {
|
||||
previousTime = millis(); // Update the previous time for the next waiting period
|
||||
digitalWrite(Rly3GndPin, LOW);
|
||||
delay(1000);
|
||||
digitalWrite(Rly3GndPin, HIGH);
|
||||
}
|
||||
}
|
||||
|
||||
void WipOffPark() {
|
||||
digitalWrite(Rly1LoPin, LOW);
|
||||
digitalWrite(Rly2HiPin, LOW);
|
||||
digitalWrite(Rly3GndPin, HIGH);
|
||||
digitalWrite(Rly4WshPin, HIGH);
|
||||
}
|
||||
|
||||
void WipIntm() {
|
||||
isWipIntmRunning = true; // Set the flag to indicate that WipIntm function is running
|
||||
digitalWrite(Rly1LoPin, LOW);
|
||||
digitalWrite(Rly2HiPin, LOW);
|
||||
digitalWrite(Rly3GndPin, HIGH);
|
||||
digitalWrite(Rly4WshPin, HIGH);
|
||||
|
||||
while (digitalRead(Sw1IntmPin) == HIGH && isWipIntmRunning) {
|
||||
// WipIntm function code
|
||||
int potValue = analogRead(Sw0PotPin);
|
||||
waitingTime = map(potValue, 0, 1023, 5000, 30000); // Update waiting time based on potentiometer value
|
||||
|
||||
unsigned long currentTime = millis();
|
||||
if (currentTime - previousTime >= waitingTime) {
|
||||
previousTime = currentTime;
|
||||
digitalWrite(Rly3GndPin, LOW);
|
||||
delay(1000);
|
||||
digitalWrite(Rly3GndPin, HIGH);
|
||||
}
|
||||
}
|
||||
|
||||
isWipIntmRunning = false; // Reset the flag after the loop ends
|
||||
digitalWrite(Rly3GndPin, HIGH);
|
||||
}
|
||||
|
||||
void WipLo() {
|
||||
digitalWrite(Rly1LoPin, LOW);
|
||||
digitalWrite(Rly2HiPin, LOW);
|
||||
digitalWrite(Rly3GndPin, LOW);
|
||||
digitalWrite(Rly4WshPin, HIGH);
|
||||
}
|
||||
|
||||
void WipHi() {
|
||||
digitalWrite(Rly1LoPin, HIGH);
|
||||
digitalWrite(Rly2HiPin, LOW);
|
||||
digitalWrite(Rly3GndPin, HIGH);
|
||||
digitalWrite(Rly4WshPin, LOW);
|
||||
}
|
||||
Reference in New Issue
Block a user