Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Constantes
- const int buzzer = 7;
- const int Trigger = 6;
- const int Echo = 12;
- const float sonido = 34300.0; // Velocidad del sonido en cm/s
- const float umbral = 45.0;
- const int paso [4][4] =
- {
- {1, 1, 0, 0},
- {0, 1, 1, 0},
- {0, 0, 1, 1},
- {1, 0, 0, 1}
- };
- #define IN1 8
- #define IN2 9
- #define IN3 10
- #define IN4 11
- void setup() {
- pinMode(Echo, INPUT);
- pinMode(Trigger, OUTPUT);
- pinMode(buzzer, OUTPUT);
- pinMode(IN1, OUTPUT);
- pinMode(IN2, OUTPUT);
- pinMode(IN3, OUTPUT);
- pinMode(IN4, OUTPUT);
- digitalWrite(Trigger, LOW);
- }
- void loop(){
- for (int i = 0; i < 4; i++)
- {
- digitalWrite(IN1, paso[i][0]);
- digitalWrite(IN2, paso[i][1]);
- digitalWrite(IN3, paso[i][2]);
- digitalWrite(IN4, paso[i][3]);
- delay(10);
- }
- // Preparamos el sensor de ultrasonidos
- iniciarTrigger();
- // Obtenemos la distancia
- float distancia = calcularDistancia();
- // Lanzamos alerta si estamos dentro del rango de peligro
- if (distancia < umbral)
- {
- // Lanzamos alertas
- alertas(distancia);
- }
- }
- // Función que comprueba si hay que lanzar alguna alerta visual o sonora
- void alertas(float distancia)
- {
- tone(buzzer, 2000, 200);
- }
- // Método que calcula la distancia a la que se encuentra un objeto.
- // Devuelve una variable tipo float que contiene la distancia
- float calcularDistancia()
- {
- // La función pulseIn obtiene el tiempo que tarda en cambiar entre estados, en este caso a HIGH
- unsigned long tiempo = pulseIn(Echo, HIGH);
- // Obtenemos la distancia en cm, hay que convertir el tiempo en segudos ya que está en microsegundos
- // por eso se multiplica por 0.000001
- float distancia = tiempo * 0.000001 * sonido / 2.0;
- Serial.print(distancia);
- Serial.print("cm");
- Serial.println();
- delay(1);
- return distancia;
- }
- // Método que inicia la secuencia del Trigger para comenzar a medir
- void iniciarTrigger()
- {
- // Ponemos el Triiger en estado bajo y esperamos 2 ms
- digitalWrite(Trigger, LOW);
- delayMicroseconds(2);
- // Ponemos el pin Trigger a estado alto y esperamos 10 ms
- digitalWrite(Trigger, HIGH);
- delayMicroseconds(10);
- // Comenzamos poniendo el pin Trigger en estado bajo
- digitalWrite(Trigger, LOW);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement