Untitled

 avatar
unknown
plain_text
5 months ago
5.0 kB
1
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