-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSmart_Bridge.ino
59 lines (51 loc) · 1.42 KB
/
Smart_Bridge.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <Servo.h>
Servo left_servo; // Servo 1
Servo right_servo; // Servo 2
int moisture_sensor_pin = A0; // Analog pin for the moisture sensor
int left_servo_pin = 5;
int right_servo_pin = 6;
int buzzer_pin = 8; // Digital pin for the buzzer
const int moistureThreshold = 900; // Adjust this threshold value as needed
bool isFlooded = false;
bool bridgeRaised = false;
void setup() {
left_servo.attach(left_servo_pin);
right_servo.attach(right_servo_pin);
pinMode(moisture_sensor_pin, INPUT);
pinMode(buzzer_pin, OUTPUT);
lowerBridge(); // Ensure the bridge is initially lowered
}
void loop() {
int moistureValue = analogRead(moisture_sensor_pin);
if (moistureValue > moistureThreshold) {
if (!isFlooded) {
// Flood detected, raise the bridge
raiseBridge();
alert();
isFlooded = true;
}
} else {
if (isFlooded) {
// No flood, lower the bridge
lowerBridge();
isFlooded = false;
}
}
}
void raiseBridge() {
if (!bridgeRaised) {
left_servo.write(0); // Angle to raise the bridge (adjust as needed)
right_servo.write(0);
bridgeRaised = true;
}
}
void lowerBridge() {
if (bridgeRaised) {
left_servo.write(90); // Angle to lower the bridge (adjust as needed)
right_servo.write(90);
bridgeRaised = false;
}
}
void alert() {
digitalWrite(buzzer_pin, HIGH); delay(2000); digitalWrite(buzzer_pin, LOW);
}