// Define input pin numbers
const int BATTERY_VOLTAGE_PIN = A0;
const int BATTERY_CURRENT_PIN = A1;
const int TIRE_PRESSURE_PIN = A2;
const int SIGNAL_DEVICE_PIN = 2;
// Define output pin numbers
const int RELAY_PIN = 3;
const int LED_PIN = 4;
// Define threshold values
const float BATTERY_POWER_THRESHOLD = 80.0;
const float BATTERY_VOLTAGE_THRESHOLD = 60.0;
const float TIRE_PRESSURE_THRESHOLD = 20.0;
void setup() {
// Initialize input pins
pinMode(BATTERY_VOLTAGE_PIN, INPUT);
pinMode(BATTERY_CURRENT_PIN, INPUT);
pinMode(TIRE_PRESSURE_PIN, INPUT);
pinMode(SIGNAL_DEVICE_PIN, INPUT_PULLUP);
// Initialize output pins
pinMode(RELAY_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);
// Start serial communication
Serial.begin(9600);
}
void loop() {
// Read input values
float battery_voltage = analogRead(BATTERY_VOLTAGE_PIN) * (5.0 / 1023.0) * 5.0;
float battery_current = analogRead(BATTERY_CURRENT_PIN) * (5.0 / 1023.0) * 5.0;
float tire_pressure = analogRead(TIRE_PRESSURE_PIN) * (5.0 / 1023.0) * 100.0;
bool signal_device_status = digitalRead(SIGNAL_DEVICE_PIN);
// Check battery power threshold
float battery_power = battery_voltage * battery_current;
if (battery_power > BATTERY_POWER_THRESHOLD) {
digitalWrite(RELAY_PIN, HIGH);
Serial.println("Relay opened due to high battery power");
}
else {
digitalWrite(RELAY_PIN, LOW);
}
// Check battery voltage threshold
if (battery_voltage > BATTERY_VOLTAGE_THRESHOLD) {
digitalWrite(LED_PIN, HIGH);
Serial.println("LED turned on due to high battery voltage");
} else {
digitalWrite(LED_PIN, LOW);
}
// Check tire pressure threshold
if (tire_pressure < TIRE_PRESSURE_THRESHOLD && signal_device_status == LOW) {
Serial.println("Signal device activated due to low tire pressure");
}
// Delay for a short period to avoid excessive loop iterations
delay(100);
}