// Práctica 15 sensor HC-SR04 y leds
int Trigger = 2; // asignamos Trigger al pin 2
int Echo = 3; // asignamos Echo al pin 3
int led1 = 4; // asignamos el pin 4 al led 1
int led2 = 5; // asignamos el pin 5 al led 2
int led3 = 6; // asignamos el pin 6 al led 3
void setup() {
Serial.begin(9600); // inicializamos la comunicación con el puerto serie
pinMode(Trigger, OUTPUT); // definimos pin 2 como salida
pinMode(Echo, INPUT); // definimos pin 3 como entrada
digitalWrite(Trigger, LOW); // ponemos el pin 2 a 0
pinMode(led1, OUTPUT); // configuramos los leds como salida
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
}
void loop(){
int t; // definimos la variable tiempo, tiempo en llegar la onda de rebote
int d; // definimos la variable distancia, en centimetros
digitalWrite(Trigger, HIGH); // enviamos una señal de 10 microsegundos
delay(10);
digitalWrite(Trigger,LOW);
t = pulseIn(Echo, HIGH); // obtenemos el tiempo en que tarda en llegar la señal
d = t/59; // calculamos la distancia en cm según el tiempo obtenido anteriormente
if (d>=15) // para distancias mayores de 15 cm no se enciende ningún led
{
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
}
if (d>=10 && d<15) // entre 10 y 15 cm se enciende un led
{
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
}
if (d>=5 && d<10) // // entre 5 y 10 cm se encienden dos leds
{
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, LOW);
}
if (d<5) // para distancias menores de 5 cm se encienden tres leds
{
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
}
/* A continuación mandamos toda esta información al puerto serie para poder verla
en el monitor */
Serial.print("Distancia: ");
Serial.print(d);
Serial.print(" cm");
Serial.println(); // insertamos un salto de línea
delay(500); // hacemos una pausa de medio segundo
}