#define ECHO_PIN3 7
#define TRIG_PIN3 6
#define ECHO_PIN4 4
#define TRIG_PIN4 5
#define ECHO_PIN1 2
#define TRIG_PIN1 3
#define ECHO_PIN2 8
#define TRIG_PIN2 9
void prenderBombillo();
void apagarBombillos();
int n;
int ind = 6;
void setup() {
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
pinMode(TRIG_PIN1, OUTPUT);
pinMode(ECHO_PIN1, INPUT);
pinMode(TRIG_PIN2, OUTPUT);
pinMode(ECHO_PIN2, INPUT);
pinMode(TRIG_PIN3, OUTPUT);
pinMode(ECHO_PIN3, INPUT);
pinMode(TRIG_PIN4, OUTPUT);
pinMode(ECHO_PIN4, INPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(0, INPUT);
}
float readDistanceCM1() {
digitalWrite(TRIG_PIN1, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN1, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN1, LOW);
int duration = pulseIn(ECHO_PIN1, HIGH);
return duration * 0.034 / 2;
}
float readDistanceCM2() {
digitalWrite(TRIG_PIN2, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN2, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN2, LOW);
int duration = pulseIn(ECHO_PIN2, HIGH);
return duration * 0.034 / 2;
}
float readDistanceCM3() {
digitalWrite(TRIG_PIN3, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN3, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN3, LOW);
int duration = pulseIn(ECHO_PIN3, HIGH);
return duration * 0.034 / 2;
}
float readDistanceCM4() {
digitalWrite(TRIG_PIN4, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN4, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN4, LOW);
int duration = pulseIn(ECHO_PIN4, HIGH);
return duration * 0.034 / 2;
}
void loop() {
float distance1 = readDistanceCM1();
float distance2 = readDistanceCM2();
float distance3 = readDistanceCM3();
float distance4 = readDistanceCM4();
/*
bool isNearby = distance < 100;
digitalWrite(LED_BUILTIN, isNearby);
*/
Serial.print("Calle1: ");
Serial.print(distance1);
Serial.print(" Calle2: ");
Serial.print(distance2);
Serial.print(" Calle3: ");
Serial.print(distance3);
Serial.print(" Calle4: ");
Serial.println(distance4);
delay(1000);
if (digitalRead(0) == 1) {
if (ind != 5 ) {
ind = 5;
apagarBombillos();
}
} else {
if ( distance1 > distance2 && distance1 > distance3
&& distance1 > distance4) {
if ( ind != 1){
ind = 1;
n = 10;
prenderBombillo(n);
}
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
} else if (distance2 > distance1 && distance2 > distance3
&& distance2 > distance4){
if ( ind != 2){
ind = 2;
n = 11;
prenderBombillo(n);
}
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
} else if (distance3 > distance1 && distance3 > distance2
&& distance3 > distance4){
if ( ind != 3){
ind = 3;
n = 12;
prenderBombillo(n);
}
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
digitalWrite(13, LOW);
} else {
if ( ind != 4){
ind = 4;
n = 13;
prenderBombillo(n);
}
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, HIGH);
}
}
}
void prenderBombillo(int n){
for(int i=0 ; i<=3 ; i++){
delay(180);
digitalWrite(n, LOW);
delay(180);
digitalWrite(n, HIGH);
}
}
void apagarBombillos(){
for(int i=0 ; i<=3 ; i++){
delay(180);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
digitalWrite(13, HIGH);
delay(180);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
}
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
ultrasonic:VCC
ultrasonic:TRIG
ultrasonic:ECHO
ultrasonic:GND
ultrasonic1:VCC
ultrasonic1:TRIG
ultrasonic1:ECHO
ultrasonic1:GND
ultrasonic2:VCC
ultrasonic2:TRIG
ultrasonic2:ECHO
ultrasonic2:GND
ultrasonic3:VCC
ultrasonic3:TRIG
ultrasonic3:ECHO
ultrasonic3:GND
led1:A
led1:C
led2:A
led2:C
led3:A
led3:C
led4:A
led4:C
sw1:1
sw1:2
sw1:3