#include <DFRobot_DHT11.h>
#include <LiquidCrystal.h>
#define DHT11_PIN A0
#define DTTYPE DHT11
LiquidCrystal lcd(8, 9, 5, 4, 3, 2); // LCD output pins
// Declaring pins
const int chrgeFail = 10;
const int lowVolt = 11;
const int highVolt = 12;
int voltageRead = A5;
const int power = 13;
float voltage = 0; // Declaring variables to store values
int powerState = 0;
int batteryState = 0;
int chargeState = 0;
int voltage110 = 0;
int voltageState1 = 0;
int voltageState2 = 0;
int LED = 1; // Declaring LEDs
int LED2 = 0;
void setup() {
pinMode(LED, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(chrgeFail, INPUT);
pinMode(power, INPUT);
pinMode(voltageRead, INPUT);
pinMode(highVolt, INPUT);
pinMode(lowVolt, INPUT);
Serial.begin(9600); //set up lcd
lcd.begin(20, 4);
lcd.setCursor(0, 0);
lcd.print("UPS REG");
delay(500);
lcd.clear();
}
void loop() {
Serial.println();
int DHT11_temperature = analogRead(DHT11_PIN); // Reading the DHT11 value
Serial.println(DHT11_temperature);
voltage = analogRead(voltageRead);
voltage110 = (voltage / 1023.0) * 110; // Corrected calculation with floating-point division
powerState = digitalRead(power);
chargeState = digitalRead(chrgeFail);
voltageState1 = digitalRead(highVolt);
voltageState2 = digitalRead(lowVolt);
lcd.setCursor(0, 0); // Display the actual temperature of the battery
lcd.print("ups room");
lcd.setCursor(0, 6);
lcd.print(DHT11_temperature);
lcd.setCursor(0, 1);
lcd.print("temp=");
lcd.print(voltage110);
lcd.print((char)223);
lcd.setCursor(0, 2);
lcd.print("NO ALARM ");
digitalWrite(LED, LOW);
if (chargeState == HIGH) { // Trigger if the charge is failing
digitalWrite(LED, HIGH);
lcd.setCursor(0, 2);
lcd.print("CHARGER FAIL ALARM");
}
else
{digitalWrite(LED, LOW);
lcd.setCursor(0, 2);
lcd.print("");
}
if (voltageState2 == HIGH) { // Trigger if the battery voltage is low
digitalWrite(LED, HIGH);
lcd.setCursor(0, 2);
lcd.print("LOW DC VOLTAGE");
}
else
{digitalWrite(LED, LOW);
lcd.setCursor(0, 2);
lcd.print("");
}
if (voltageState1 == HIGH) { // Trigger if the battery is overcharged
digitalWrite(LED, HIGH);
lcd.setCursor(0, 2);
lcd.print("HIGH DC VOLTAGE");
}
else
{digitalWrite(LED, LOW);
lcd.setCursor(0, 2);
lcd.print("");
}
if (powerState == HIGH) { // Trigger if the power is failing
digitalWrite(LED, HIGH);
lcd.setCursor(0, 2);
lcd.print("POWER FAILURE ALARM");
}
else
{
digitalWrite(LED, LOW);
lcd.setCursor(0, 2);
lcd.print("");
}
if (DHT11_temperature >= 30) { // Activate the LED representing the fan when the temperature is above 30 degrees
digitalWrite(LED2, HIGH);
}
delay(1000);
}