#include <Servo.h>
Servo servo1;
const int buttonPin1 = 4;
const int buttonPin2 = 5;
const int buttonPin3 = 6;
const int buttonPin4 = 7;
const int LedPin1 = 23;
const int LedPin2 = 25;
const int LedPin3 = 27;
const int LedPin4 = 29;
int buttonState1 = 0;
int buttonState2 = 0;
int buttonState3 = 0;
int buttonState4 = 0;
int ledPin1 = 0;
int ledPin2 = 0;
int ledPin3 = 0;
int ledPin4 = 0;
int n = 1;
#define ECHO_PIN 8
#define TRIG_PIN 9
int potpin = 0;
int val;
void setup() {
pinMode(buttonPin1, INPUT);
pinMode(buttonPin2, INPUT);
pinMode(buttonPin3, INPUT);
pinMode(buttonPin4, INPUT);
pinMode(LedPin1, OUTPUT);
pinMode(LedPin2, OUTPUT);
pinMode(LedPin3, OUTPUT);
pinMode(LedPin4, OUTPUT);
servo1.attach(2);
Serial.begin(115200);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
}
float readDistanceCM() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
int duration = pulseIn(ECHO_PIN, HIGH);
return duration * 0.034 / 2;
}
void loop() {
buttonState1 = digitalRead(buttonPin1);
buttonState2 = digitalRead(buttonPin2);
buttonState3 = digitalRead(buttonPin3);
buttonState4 = digitalRead(buttonPin4);
ledPin1 = digitalRead(LedPin1);
ledPin2 = digitalRead(LedPin2);
ledPin3 = digitalRead(LedPin3);
ledPin4 = digitalRead(LedPin4);
val = analogRead(potpin);
val = map(val, 0, 1023, 1, 4);
float distance = readDistanceCM();
if (n == 1){
digitalWrite(LedPin1, HIGH);
}
if (distance > 40){
servo1.write(0);
}
if (distance > 40){
if (buttonState1 == HIGH && ledPin1 == HIGH) {
n = 0;
servo1.write(180);
delay(3000);
}
if (buttonState2 == HIGH && ledPin1 == HIGH) {
digitalWrite(LedPin1, HIGH);
delay(1000*val);
digitalWrite(LedPin1, LOW);
digitalWrite(LedPin2, HIGH);
n = 0;
servo1.write(180);
delay(3000);
}
if (buttonState3 == HIGH && ledPin1 == HIGH) {
digitalWrite(LedPin1, HIGH);
delay(1000*val);
digitalWrite(LedPin1, LOW);
digitalWrite(LedPin2, HIGH);
delay(1000*val);
digitalWrite(LedPin2, LOW);
digitalWrite(LedPin3, HIGH);
n = 0;
servo1.write(180);
delay(3000);
}
if (buttonState4 == HIGH && ledPin1 == HIGH) {
digitalWrite(LedPin1, HIGH);
delay(1000*val);
digitalWrite(LedPin1, LOW);
digitalWrite(LedPin2, HIGH);
delay(1000*val);
digitalWrite(LedPin2, LOW);
digitalWrite(LedPin3, HIGH);
delay(1000*val);
digitalWrite(LedPin3, LOW);
digitalWrite(LedPin4, HIGH);
n = 0;
servo1.write(180);
delay(3000);
}
if (buttonState1 == HIGH && ledPin2 == HIGH) {
delay(1000*val);
digitalWrite(LedPin2, LOW);
digitalWrite(LedPin1, HIGH);
servo1.write(180);
delay(3000);
}
if (buttonState2 == HIGH && ledPin2 == HIGH) {
servo1.write(180);
delay(3000);
}
if (buttonState3 == HIGH && ledPin2 == HIGH) {
delay(1000*val);
digitalWrite(LedPin2, LOW);
digitalWrite(LedPin3, HIGH);
servo1.write(180);
delay(3000);
}
if (buttonState4 == HIGH && ledPin2 == HIGH) {
delay(1000*val);
digitalWrite(LedPin2, LOW);
digitalWrite(LedPin3, HIGH);
delay(1000*val);
digitalWrite(LedPin3, LOW);
digitalWrite(LedPin4, HIGH);
servo1.write(180);
delay(3000);
}
if (buttonState1 == HIGH && ledPin3 == HIGH) {
delay(1000*val);
digitalWrite(LedPin3, LOW);
digitalWrite(LedPin2, HIGH);
delay(1000*val);
digitalWrite(LedPin2, LOW);
digitalWrite(LedPin1, HIGH);
servo1.write(180);
delay(3000);
}
if (buttonState3 == HIGH && ledPin3 == HIGH) {
servo1.write(180);
delay(3000);
}
if (buttonState2 == HIGH && ledPin3 == HIGH) {
delay(1000*val);
digitalWrite(LedPin3, LOW);
digitalWrite(LedPin2, HIGH);
servo1.write(180);
delay(3000);
}
if (buttonState4 == HIGH && ledPin3 == HIGH) {
delay(1000);
digitalWrite(LedPin3, LOW);
digitalWrite(LedPin4, HIGH);
servo1.write(180);
delay(3000);
}
if (buttonState1 == HIGH && ledPin4 == HIGH) {
delay(1000);
digitalWrite(LedPin4, LOW);
digitalWrite(LedPin3, HIGH);
delay(1000*val);
digitalWrite(LedPin3, LOW);
digitalWrite(LedPin2, HIGH);
delay(1000*val);
digitalWrite(LedPin2, LOW);
digitalWrite(LedPin1, HIGH);
servo1.write(180);
delay(3000);
}
if (buttonState4 == HIGH && ledPin4 == HIGH) {
servo1.write(180);
delay(3000);
}
if (buttonState2 == HIGH && ledPin4 == HIGH) {
delay(1000*val);
digitalWrite(LedPin4, LOW);
digitalWrite(LedPin3, HIGH);
delay(1000*val);
digitalWrite(LedPin3, LOW);
digitalWrite(LedPin2, HIGH);
servo1.write(180);
delay(3000);
}
if (buttonState3 == HIGH && ledPin4 == HIGH) {
delay(1000*val);
digitalWrite(LedPin4, LOW);
digitalWrite(LedPin3, HIGH);
servo1.write(180);
delay(3000);
}
}
}