#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define I2C_ADDR 0x27
#define LCD_COLS 16
#define LCD_ROWS 2
#define LED_PIN 13
#define DHT_PIN 7
#define DHT_TYPE DHT11
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLS, LCD_ROWS);
DHT dht(DHT_PIN, DHT_TYPE);
String animalName = "Rhino";
void setup() {
Serial.begin(9600);
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
lcd.init();
lcd.backlight();
dht.begin();
lcd.print("Initializing...");
delay(2000);
}
void loop() {
float temp = dht.readTemperature();
float humidity = dht.readHumidity();
float airQuality = random(0, 100);
float heartRate = random(60, 120);
float bloodPressure = random(80, 140);
lcd.clear();
lcd.print("Animal: ");
lcd.print(animalName);
lcd.setCursor(0, 1);
lcd.print("Temp:");
lcd.print(temp);
lcd.print("C \nHR:");
lcd.print(heartRate);
lcd.print(" \nBPM: ");
lcd.print(bloodPressure);
bool threat = (temp > 35 || humidity > 70 || airQuality > 80);
digitalWrite(LED_PIN, threat ? HIGH : LOW);
Serial.print("Animal: ");
Serial.print(animalName);
Serial.print("Temp:");
Serial.print(temp);
Serial.print("C, Humidity: ");
Serial.print(humidity);
Serial.print("%, Air Quality: ");
Serial.print(airQuality);
Serial.print(", HR: ");
Serial.print(heartRate);
Serial.print(" BPM, BP: ");
Serial.print(bloodPressure);
Serial.print(" mmHg, Threat: ");
Serial.println(threat ? "Yes" : "No");
delay(5000);
}