#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int buzzerPin = 8;
void setup() {
lcd.begin(16, 2);
lcd.backlight();
pinMode(buzzerPin, OUTPUT);
lcd.setCursor(0, 0);
lcd.print("School Bell System");
delay(2000);
lcd.clear();
}
void loop() {
for (int i = 1; i <= 4; i++) {
ringPeriod(i);
delay(5000);
}
ringBreak("Short Break");
delay(3000);
for (int i = 5; i <= 6; i++) {
ringPeriod(i);
delay(5000);
}
ringBreak("Lunch Break");
delay(3000);
for (int i = 7; i <= 8; i++) {
ringPeriod(i);
delay(5000);
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("School Over");
lcd.setCursor(0, 1);
lcd.print("Goodbye!");
ringBell(4); // Longer bell
delay(10000);
}
void ringPeriod(int num) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Period ");
lcd.print(num);
lcd.setCursor(0, 1);
lcd.print("Ringing...");
ringBell(2);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Period ");
lcd.print(num);
lcd.setCursor(0, 1);
lcd.print("Started");
}
void ringBreak(String name) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(name);
lcd.setCursor(0, 1);
lcd.print("Break Time!");
ringBell(3);
}
void ringBell(int times) {
for (int i = 0; i < times; i++) {
tone(buzzerPin, 1000); // 1000 Hz sound
delay(500);
noTone(buzzerPin);
delay(500);
}
}