Untitled
unknown
plain_text
a year ago
5.0 kB
8
Indexable
// Pin definitions for traffic lights
const int redPin1 = 9;
const int yellowPin1 = 8;
const int greenPin1 = 7;
const int redPin2 = 4;
const int yellowPin2 = 5;
const int greenPin2 = 6;
const int trigPin = 13;
const int echoPin = 12;
// Pin definitions for IR sensors
const int irSensorPin1 = 2; // Sensor for Direction 1
const int irSensorPin2 = 3; // Sensor for Direction 1
const int irSensorPin3 = 10; // Sensor for Direction 2
const int irSensorPin4 = 11; // Sensor for Direction 2
// Timing constants
const unsigned long greenDuration = 5000; // Green light duration
const unsigned long yellowDuration = 2000; // Yellow light duration
const unsigned long redDuration = 5000;
void setup() {
// Set LED pins as outputs
pinMode(redPin1, OUTPUT);
pinMode(yellowPin1, OUTPUT);
pinMode(greenPin1, OUTPUT);
pinMode(redPin2, OUTPUT);
pinMode(yellowPin2, OUTPUT);
pinMode(greenPin2, OUTPUT);
// Set IR sensor pins as inputs
pinMode(irSensorPin1, INPUT);
pinMode(irSensorPin2, INPUT);
pinMode(irSensorPin3, INPUT);
pinMode(irSensorPin4, INPUT);
// Start the Serial communication
Serial.begin(9600);
// Set up the LED pins as OUTPUT
// Set up the ultrasonic sensor pins
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600); // Start serial communication for debugging
}
void switchLights() {
// Turn off red lights
digitalWrite(redPin1, LOW);
digitalWrite(redPin2, HIGH);
// Turn on green lights
digitalWrite(greenPin1, HIGH);
digitalWrite(redPin2, HIGH);
// Delay for green light interval
delay(3000);
// Turn off green lights
digitalWrite(greenPin1, LOW);
digitalWrite(redPin2, HIGH);
// Turn on yellow lights
digitalWrite(yellowPin1, HIGH);
digitalWrite(yellowPin2, LOW);
// Delay for yellow light interval
delay(2000);
digitalWrite(redPin2,LOW);
// Turn off yellow lights
digitalWrite(yellowPin1, LOW);
digitalWrite(yellowPin2, LOW);
// Turn on red lights
digitalWrite(redPin1, HIGH);
digitalWrite(greenPin2, HIGH);
delay(2000);
digitalWrite(greenPin2,LOW);
digitalWrite(yellowPin2, HIGH);
delay(2000);
digitalWrite(redPin1,HIGH);
digitalWrite(yellowPin2, HIGH);
digitalWrite(yellowPin1,LOW);
delay(2000);
digitalWrite(redPin1,LOW);
digitalWrite(yellowPin2,LOW);
digitalWrite(redPin2,HIGH);
digitalWrite(yellowPin1,LOW);
digitalWrite(greenPin2, LOW);
}
void switchLights2() {
digitalWrite(redPin1, LOW);
digitalWrite(redPin2, HIGH);
// Turn on green lights
digitalWrite(greenPin1, HIGH);
digitalWrite(greenPin2, LOW);
// Delay for green light interval
delay(3000);
// Turn off green lights
digitalWrite(greenPin2, LOW);
// Turn on yellow lights
// Delay for yellow light interval
delay(2000);
// Turn off yellow lights
// Turn on red lights
digitalWrite(redPin1, HIGH);
digitalWrite(redPin2, HIGH);
}
void switchLights3() {
digitalWrite(redPin1, HIGH);
digitalWrite(redPin2, LOW);
// Turn on green lights
digitalWrite(redPin1, LOW);
digitalWrite(greenPin1, HIGH);
// Delay for green light interval
delay(7000);
digitalWrite(greenPin1,HIGH);
// Turn off green lights
digitalWrite(yellowPin1,LOW);
digitalWrite(greenPin2, LOW);
digitalWrite(yellowPin1,HIGH);
// Turn on yellow lights
// Turn on red lights
digitalWrite(redPin1, LOW);
digitalWrite(redPin2, HIGH);
}
void loop() {
// Read the values from the IR sensors
int sensorValue1 = digitalRead(irSensorPin1);
int sensorValue2 = digitalRead(irSensorPin2);
int sensorValue3 = digitalRead(irSensorPin3);
int sensorValue4 = digitalRead(irSensorPin4);
Serial.print("IR Sensor 1 Value: ");
Serial.println(sensorValue1);
Serial.print("IR Sensor 2 Value: ");
Serial.println(sensorValue2);
Serial.print("IR Sensor 3 Value: ");
Serial.println(sensorValue3);
Serial.print("IR Sensor 4 Value: ");
Serial.println(sensorValue4);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Trigger the sensor
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Read the echoPin
long duration = pulseIn(echoPin, HIGH);
// calculate the distance in cm
long distance = (duration * 0.0343) / 2;
// Print the distance to the Serial Monitor
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
// Check if there are vehicles detected in Direction 1
if (sensorValue1 == HIGH|| sensorValue2 == HIGH || sensorValue3 == LOW|| sensorValue4 == LOW){
switchLights();
}
if (sensorValue1 == LOW || sensorValue2 == LOW ){
switchLights3();
}
else if (sensorValue3 == LOW|| sensorValue4 == LOW ){
switchLights2();
}
}
Editor is loading...
Leave a Comment