First init.

This commit is contained in:
2025-10-12 09:13:56 +02:00
commit 1548aeaf9b
458 changed files with 118808 additions and 0 deletions

View File

@@ -0,0 +1,228 @@
#include <Arduino.h>
// Define pin numbers
const int RELAY_PIN_1 = 13;
const int RELAY_PIN_2 = 14;
const int RELAY_PIN_3 = 15;
const int RELAY_PIN_4 = 16;
const int RELAY_PIN_5 = 17;
const int RELAY_PIN_6 = 18;
const int RELAY_PIN_7 = 19;
const int RELAY_PIN_8 = 12;
const int WASHER_SWITCH_PIN = 11;
const int WIPER_SWITCH_PIN_1 = 2;
const int WIPER_SWITCH_PIN_2 = 3;
const int WIPER_SWITCH_PIN_3 = 4;
const int WIPER_SWITCH_PIN_4 = 5;
const int WIPER_SWITCH_PIN_5 = 6;
const int FAN_SWITCH_PIN_1 = 7;
const int FAN_SWITCH_PIN_2 = 8;
const int FAN_SWITCH_PIN_3 = 9;
const int FAN_SWITCH_PIN_4 = 10;
// Wiper motor states
bool isWiperParked = true;
bool isWiperIntermittentLow = false;
bool isWiperIntermittentHigh = false;
bool isWiperLow = false;
bool isWiperHigh = false;
// Washer motor state
bool isWasherOn = false;
// Fan motor states
bool isFanLow = false;
bool isFan1 = false;
bool isFan2 = false;
bool isFanHigh = false;
// Timer variables for intermittent states
unsigned long intermittentLowStartTime = 0;
unsigned long intermittentHighStartTime = 0;
const unsigned long intermittentLowInterval = 8000; // 8 seconds
const unsigned long intermittentHighInterval = 12000; // 12 seconds
void setup() {
// Initialize relay pins as outputs
pinMode(RELAY_PIN_1, OUTPUT);
pinMode(RELAY_PIN_2, OUTPUT);
pinMode(RELAY_PIN_3, OUTPUT);
pinMode(RELAY_PIN_4, OUTPUT);
pinMode(RELAY_PIN_5, OUTPUT);
pinMode(RELAY_PIN_6, OUTPUT);
pinMode(RELAY_PIN_7, OUTPUT);
pinMode(RELAY_PIN_8, OUTPUT);
// Initialize switch pins as inputs
pinMode(WASHER_SWITCH_PIN, INPUT);
pinMode(WIPER_SWITCH_PIN_1, INPUT);
pinMode(WIPER_SWITCH_PIN_2, INPUT);
pinMode(WIPER_SWITCH_PIN_3, INPUT);
pinMode(WIPER_SWITCH_PIN_4, INPUT);
pinMode(WIPER_SWITCH_PIN_5, INPUT);
pinMode(FAN_SWITCH_PIN_1, INPUT);
pinMode(FAN_SWITCH_PIN_2, INPUT);
pinMode(FAN_SWITCH_PIN_3, INPUT);
pinMode(FAN_SWITCH_PIN_4, INPUT);
}
void loop() {
checkWiperSwitch();
checkWasherSwitch();
checkFanSwitch();
}
void checkWiperSwitch() {
if (digitalRead(WIPER_SWITCH_PIN_1) == HIGH) {
// Wiper parking/off/default state
isWiperParked = true;
isWiperIntermittentLow = false;
isWiperIntermittentHigh = false;
isWiperLow = false;
isWiperHigh = false;
digitalWrite(RELAY_PIN_1, LOW);
digitalWrite(RELAY_PIN_2, LOW);
digitalWrite(RELAY_PIN_3, HIGH);
} else if (digitalRead(WIPER_SWITCH_PIN_2) == HIGH) {
// Intermittent low state
isWiperParked = false;
isWiperIntermittentLow = true;
isWiperIntermittentHigh = false;
isWiperLow = false;
isWiperHigh = false;
if (intermittentLowStartTime == 0) {
intermittentLowStartTime = millis();
}
if (millis() - intermittentLowStartTime >= intermittentLowInterval) {
intermittentLowStartTime = millis();
digitalWrite(RELAY_PIN_3, LOW);
delay(1000);
digitalWrite(RELAY_PIN_3, HIGH);
}
} else if (digitalRead(WIPER_SWITCH_PIN_3) == HIGH) {
// Intermittent high state
isWiperParked = false;
isWiperIntermittentLow = false;
isWiperIntermittentHigh = true;
isWiperLow = false;
isWiperHigh = false;
if (intermittentHighStartTime == 0) {
intermittentHighStartTime = millis();
}
if (millis() - intermittentHighStartTime >= intermittentHighInterval) {
intermittentHighStartTime = millis();
digitalWrite(RELAY_PIN_3, HIGH);
delay(1000);
digitalWrite(RELAY_PIN_3, LOW);
}
} else if (digitalRead(WIPER_SWITCH_PIN_4) == HIGH) {
// Wiper low state
isWiperParked = false;
isWiperIntermittentLow = false;
isWiperIntermittentHigh = false;
isWiperLow = true;
isWiperHigh = false;
digitalWrite(RELAY_PIN_1, LOW);
digitalWrite(RELAY_PIN_2, LOW);
digitalWrite(RELAY_PIN_3, LOW);
} else if (digitalRead(WIPER_SWITCH_PIN_5) == HIGH) {
// Wiper high state
isWiperParked = false;
isWiperIntermittentLow = false;
isWiperIntermittentHigh = false;
isWiperLow = false;
isWiperHigh = true;
digitalWrite(RELAY_PIN_1, LOW);
digitalWrite(RELAY_PIN_2, HIGH);
digitalWrite(RELAY_PIN_3, LOW);
} else {
// Default to wiper parking/off/default state
isWiperParked = true;
isWiperIntermittentLow = false;
isWiperIntermittentHigh = false;
isWiperLow = false;
isWiperHigh = false;
digitalWrite(RELAY_PIN_1, LOW);
digitalWrite(RELAY_PIN_2, LOW);
digitalWrite(RELAY_PIN_3, HIGH);
}
}
void checkWasherSwitch() {
if (digitalRead(WASHER_SWITCH_PIN) == HIGH) {
// Washer motor control
isWasherOn = true;
digitalWrite(RELAY_PIN_4, LOW); // Inverted
} else {
isWasherOn = false;
digitalWrite(RELAY_PIN_4, HIGH); // Inverted
}
}
void checkFanSwitch() {
if (digitalRead(FAN_SWITCH_PIN_1) == HIGH) {
// Fan motor low state
isFanLow = true;
isFan1 = false;
isFan2 = false;
isFanHigh = false;
digitalWrite(RELAY_PIN_5, LOW); // Inverted
digitalWrite(RELAY_PIN_6, HIGH);
digitalWrite(RELAY_PIN_7, HIGH);
digitalWrite(RELAY_PIN_8, HIGH);
} else if (digitalRead(FAN_SWITCH_PIN_2) == HIGH) {
// Fan motor 1 state
isFanLow = false;
isFan1 = true;
isFan2 = false;
isFanHigh = false;
digitalWrite(RELAY_PIN_5, HIGH);
digitalWrite(RELAY_PIN_6, LOW); // Inverted
digitalWrite(RELAY_PIN_7, HIGH);
digitalWrite(RELAY_PIN_8, HIGH);
} else if (digitalRead(FAN_SWITCH_PIN_3) == HIGH) {
// Fan motor 2 state
isFanLow = false;
isFan1 = false;
isFan2 = true;
isFanHigh = false;
digitalWrite(RELAY_PIN_5, HIGH);
digitalWrite(RELAY_PIN_6, HIGH);
digitalWrite(RELAY_PIN_7, LOW); // Inverted
digitalWrite(RELAY_PIN_8, HIGH);
} else if (digitalRead(FAN_SWITCH_PIN_4) == HIGH) {
// Fan motor high state
isFanLow = false;
isFan1 = false;
isFan2 = false;
isFanHigh = true;
digitalWrite(RELAY_PIN_5, HIGH);
digitalWrite(RELAY_PIN_6, HIGH);
digitalWrite(RELAY_PIN_7, HIGH);
digitalWrite(RELAY_PIN_8, LOW); // Inverted
} else {
// Default to fan motor off state
isFanLow = false;
isFan1 = false;
isFan2 = false;
isFanHigh = false;
digitalWrite(RELAY_PIN_5, HIGH);
digitalWrite(RELAY_PIN_6, HIGH);
digitalWrite(RELAY_PIN_7, HIGH);
digitalWrite(RELAY_PIN_8, HIGH);
}
}