#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Define Pins
#define START_BUTTON 2
#define FEED_BUTTON 3
#define PLAY_BUTTON 4
#define BUZZER_PIN 5
#define RED_LED 6
#define GREEN_LED 7
#define BLUE_LED 8
// LCD Initialization (I2C Address: 0x27)
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Pet Attributes
int health = 70;
int happiness = 50;
void setup() {
pinMode(START_BUTTON, INPUT_PULLUP);
pinMode(FEED_BUTTON, INPUT_PULLUP);
pinMode(PLAY_BUTTON, INPUT_PULLUP);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(RED_LED, OUTPUT);
pinMode(GREEN_LED, OUTPUT);
pinMode(BLUE_LED, OUTPUT);
lcd.init();
lcd.backlight();
resetGame();
}
void loop() {
if (digitalRead(START_BUTTON) == LOW) {
startGame();
}
if (digitalRead(FEED_BUTTON) == LOW) {
feedPet();
delay(500);
}
if (digitalRead(PLAY_BUTTON) == LOW) {
playWithPet();
delay(500);
}
updatePetStatus();
delay(1000);
}
void startGame() {
health = 70;
happiness = 50;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Pet Game Started!");
delay(1000);
updatePetStatus();
}
void feedPet() {
health = min(health + 20, 100);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Feeding Pet...");
delay(1000);
}
void playWithPet() {
happiness = min(happiness + 10, 100);
health = max(health - 5, 0);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Playing with Pet");
delay(1000);
}
void updatePetStatus() {
if (health <= 30) {
digitalWrite(RED_LED, HIGH);
digitalWrite(GREEN_LED, LOW);
digitalWrite(BLUE_LED, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Pet is Sad!");
lcd.setCursor(0, 1);
lcd.print("Feed Me!");
tone(BUZZER_PIN, 1000);
delay(500);
noTone(BUZZER_PIN);
} else if (health > 70 && happiness > 50) {
digitalWrite(GREEN_LED, HIGH);
digitalWrite(RED_LED, LOW);
digitalWrite(BLUE_LED, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Pet is Happy!");
} else {
digitalWrite(BLUE_LED, HIGH);
digitalWrite(RED_LED, LOW);
digitalWrite(GREEN_LED, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Pet is Okay");
}
lcd.setCursor(0, 1);
lcd.print("H:"); lcd.print(health); lcd.print("% H:"); lcd.print(happiness); lcd.print("%");
}
void resetGame() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Press Start");
}