#include <Servo.h>
// Pin Definitions
#define ULTRASONIC_TRIG 3
#define ULTRASONIC_ECHO 4
#define GAS_SENSOR A1
#define RAIN_SENSOR A2
#define SOUND_SENSOR A3
#define RED_LED 5
#define YELLOW_LED 6
#define GREEN_LED 7
#define SERVO_PIN 9
#define BUZZER 8
#define DC_MOTOR 10
// Constants
#define SOUND_THRESHOLD 500
#define GAS_THRESHOLD 600
#define RAIN_THRESHOLD 500
// Objects
Servo myServo;
void setup() {
// Initialize components
pinMode(RED_LED, OUTPUT);
pinMode(YELLOW_LED, OUTPUT);
pinMode(GREEN_LED, OUTPUT);
pinMode(DC_MOTOR, OUTPUT);
pinMode(BUZZER, OUTPUT);
Serial.begin(9600);
myServo.attach(SERVO_PIN);
}
void loop() {
// Scenario 1: Ultrasonic Sensor - Trigger Red LED
int distance = measureDistance();
if (distance < 10) {
digitalWrite(RED_LED, HIGH);
} else {
digitalWrite(RED_LED, LOW);
}
// Scenario 2: Gas Sensor - Trigger Green LED
int gasLevel = analogRead(GAS_SENSOR);
if (gasLevel > GAS_THRESHOLD) {
digitalWrite(GREEN_LED, HIGH);
} else {
digitalWrite(GREEN_LED, LOW);
}
// Scenario 3: Rain Sensor - Control Servo
int rainLevel = analogRead(RAIN_SENSOR);
if (rainLevel > RAIN_THRESHOLD) {
myServo.write(90); // Simulate rain action (servo moves)
digitalWrite(YELLOW_LED, HIGH); // Turn on Yellow LED during rain
} else {
myServo.write(0); // No rain, keep servo closed
digitalWrite(YELLOW_LED, LOW); // Turn off Yellow LED
}
// Scenario 4: Sound Sensor - Trigger Green LED
int soundLevel = analogRead(SOUND_SENSOR);
if (soundLevel > SOUND_THRESHOLD) {
digitalWrite(GREEN_LED, HIGH); // Sound detected, turn on Green LED
tone(BUZZER, 1000); // Buzzer for sound detection
} else {
digitalWrite(GREEN_LED, LOW); // No sound, turn off Green LED
noTone(BUZZER); // Stop buzzer
}
// Scenario 5: Control DC Motor
if (digitalRead(SOUND_SENSOR) == HIGH) {
digitalWrite(DC_MOTOR, HIGH); // Turn on DC motor when sound detected
} else {
digitalWrite(DC_MOTOR, LOW); // Turn off DC motor when no sound
}
delay(500); // Delay to avoid rapid changes
}
// Function to measure distance using Ultrasonic Sensor
int measureDistance() {
digitalWrite(ULTRASONIC_TRIG, LOW);
delayMicroseconds(2);
digitalWrite(ULTRASONIC_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(ULTRASONIC_TRIG, LOW);
int duration = pulseIn(ULTRASONIC_ECHO, HIGH);
return duration * 0.034 / 2; // Convert to cm
}