const int trigPin = 7;
const int echoPin = 6;
const int ledR = 9;
const int ledY = 10;
const int ledG = 11;
const int buzzer = 5;
#include <Servo.h>
Servo servo;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledR, OUTPUT);
pinMode(ledY, OUTPUT);
pinMode(ledG, OUTPUT);
pinMode(buzzer, OUTPUT);
servo.attach(3);
}
void loop() {
long durationindigit, distanceincm;
digitalWrite(trigPin,LOW);
delayMicroseconds(2);
digitalWrite(trigPin,HIGH);
delayMicroseconds(2);
digitalWrite(trigPin,LOW);
durationindigit = pulseIn(echoPin, HIGH);
distanceincm = (durationindigit * 0.034) / 2;
int angle = map(distanceincm, 0, 100, 0, 180);
servo.write(angle);
if(distanceincm > 100){ // 101 - infinity
digitalWrite(ledR, LOW);
digitalWrite(ledY, LOW);
digitalWrite(ledG, LOW);
tone(buzzer, 1000);
noTone(buzzer);
delay(1000);
digitalWrite(ledR, LOW);
digitalWrite(ledY, HIGH);
digitalWrite(ledG, LOW);
tone(buzzer, 1000);
noTone(buzzer);
delay(1000);
}
else if(distanceincm <= 100 && distanceincm > 70){
digitalWrite(ledR, LOW);
digitalWrite(ledY, LOW);
digitalWrite(ledG, HIGH);
tone(buzzer, 300);
}
else if(distanceincm <= 70 && distanceincm > 40){
digitalWrite(ledR, LOW);
digitalWrite(ledY, HIGH);
digitalWrite(ledG, HIGH);
tone(buzzer, 600);
}
else if(distanceincm >= 0 && distanceincm <= 10){
digitalWrite(ledR, LOW);
digitalWrite(ledY, LOW);
digitalWrite(ledG, LOW);
tone(buzzer, 1000);
noTone(buzzer);
delay(1000);
digitalWrite(ledR, LOW);
digitalWrite(ledY, HIGH);
digitalWrite(ledG, LOW);
tone(buzzer, 1000);
noTone(buzzer);
delay(1000);
}
else if(distanceincm <= 40 && distanceincm >= 11){
digitalWrite(ledR, HIGH);
digitalWrite(ledY, HIGH);
digitalWrite(ledG, HIGH);
tone(buzzer, 900);
}
}