Untitled
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