OKUYAT MORGAN JEREMIAH
#include#include #include #include // LCD (I2C address usually 0x27 or 0x3F) LiquidCrystal_I2C lcd(0x27, 16, 2); // RTC RTC_DS3231 rtc; // DHT11 #define DHTPIN 2 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); // Sensors #define ALCOHOL_SENSOR A0 #define TRIG_PIN 3 #define ECHO_PIN 4 // Outputs #define GREEN_LED 5 #define RED_LED 6 #define BLUE_LED 7 #define YELLOW_LED 8 #define BUZZER 9 #define RELAY 10 #define FAN 11 // Thresholds int alcoholLimit = 400; int distanceLimit = 50; int tempLimit = 30; void setup() { Serial.begin(9600); // LCD lcd.init(); lcd.backlight(); lcd.setCursor(0,0); lcd.print("SMART HELMET"); delay(2000); lcd.clear(); // RTC rtc.begin(); // DHT dht.begin(); // Pins pinMode(TRIG_PIN, OUTPUT); pinMode(ECHO_PIN, INPUT); pinMode(GREEN_LED, OUTPUT); pinMode(RED_LED, OUTPUT); pinMode(BLUE_LED, OUTPUT); pinMode(YELLOW_LED, OUTPUT); pinMode(BUZZER, OUTPUT); pinMode(RELAY, OUTPUT); pinMode(FAN, OUTPUT); } void loop() { // ===== TIME DISPLAY ===== DateTime now = rtc.now(); lcd.setCursor(0,0); lcd.print("Time: "); if (now.hour() < 10) lcd.print("0"); lcd.print(now.hour()); lcd.print(":"); if (now.minute() < 10) lcd.print("0"); lcd.print(now.minute()); // ======================= // 🍺 ALCOHOL DETECTION // ======================= int alcoholValue = analogRead(ALCOHOL_SENSOR); if (alcoholValue > alcoholLimit) { digitalWrite(RELAY, LOW); digitalWrite(RED_LED, HIGH); digitalWrite(GREEN_LED, LOW); digitalWrite(BUZZER, HIGH); lcd.setCursor(0,1); lcd.print("ALCOHOL! STOP "); } else { digitalWrite(RELAY, HIGH); digitalWrite(GREEN_LED, HIGH); digitalWrite(RED_LED, LOW); digitalWrite(BUZZER, LOW); lcd.setCursor(0,1); lcd.print("SAFE "); } // ======================= // 🚧 OBSTACLE DETECTION // ======================= digitalWrite(TRIG_PIN, LOW); delayMicroseconds(2); digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); long duration = pulseIn(ECHO_PIN, HIGH); int distance = duration * 0.034 / 2; if (distance < distanceLimit && distance > 0) { digitalWrite(BLUE_LED, HIGH); digitalWrite(BUZZER, HIGH); lcd.setCursor(0,1); lcd.print("OBSTACLE! "); } else { digitalWrite(BLUE_LED, LOW); } // ======================= // 🌡️ TEMPERATURE // ======================= float temp = dht.readTemperature(); if (temp > tempLimit) { digitalWrite(FAN, HIGH); digitalWrite(YELLOW_LED, HIGH); lcd.setCursor(0,1); lcd.print("HOT! FAN ON "); } else { digitalWrite(FAN, LOW); digitalWrite(YELLOW_LED, LOW); } delay(500); }