Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2019
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.23 KB | None | 0 0
  1. // Constantes
  2. const int buzzer = 7;
  3. const int Trigger = 6;
  4. const int Echo = 12;
  5. const float sonido = 34300.0; // Velocidad del sonido en cm/s
  6. const float umbral = 45.0;
  7. const int paso [4][4] =
  8. {
  9. {1, 1, 0, 0},
  10. {0, 1, 1, 0},
  11. {0, 0, 1, 1},
  12. {1, 0, 0, 1}
  13. };
  14.  
  15. #define IN1 8
  16. #define IN2 9
  17. #define IN3 10
  18. #define IN4 11
  19.  
  20. void setup() {
  21. pinMode(Echo, INPUT);
  22. pinMode(Trigger, OUTPUT);
  23. pinMode(buzzer, OUTPUT);
  24. pinMode(IN1, OUTPUT);
  25. pinMode(IN2, OUTPUT);
  26. pinMode(IN3, OUTPUT);
  27. pinMode(IN4, OUTPUT);
  28. digitalWrite(Trigger, LOW);
  29. }
  30.  
  31. void loop(){
  32. for (int i = 0; i < 4; i++)
  33. {
  34. digitalWrite(IN1, paso[i][0]);
  35. digitalWrite(IN2, paso[i][1]);
  36. digitalWrite(IN3, paso[i][2]);
  37. digitalWrite(IN4, paso[i][3]);
  38. delay(10);
  39. }
  40. // Preparamos el sensor de ultrasonidos
  41. iniciarTrigger();
  42.  
  43. // Obtenemos la distancia
  44. float distancia = calcularDistancia();
  45.  
  46. // Lanzamos alerta si estamos dentro del rango de peligro
  47. if (distancia < umbral)
  48. {
  49. // Lanzamos alertas
  50. alertas(distancia);
  51. }
  52.  
  53. }
  54. // Función que comprueba si hay que lanzar alguna alerta visual o sonora
  55. void alertas(float distancia)
  56. {
  57. tone(buzzer, 2000, 200);
  58. }
  59.  
  60. // Método que calcula la distancia a la que se encuentra un objeto.
  61. // Devuelve una variable tipo float que contiene la distancia
  62. float calcularDistancia()
  63. {
  64. // La función pulseIn obtiene el tiempo que tarda en cambiar entre estados, en este caso a HIGH
  65. unsigned long tiempo = pulseIn(Echo, HIGH);
  66.  
  67. // Obtenemos la distancia en cm, hay que convertir el tiempo en segudos ya que está en microsegundos
  68. // por eso se multiplica por 0.000001
  69. float distancia = tiempo * 0.000001 * sonido / 2.0;
  70. Serial.print(distancia);
  71. Serial.print("cm");
  72. Serial.println();
  73. delay(1);
  74.  
  75. return distancia;
  76. }
  77.  
  78. // Método que inicia la secuencia del Trigger para comenzar a medir
  79. void iniciarTrigger()
  80. {
  81. // Ponemos el Triiger en estado bajo y esperamos 2 ms
  82. digitalWrite(Trigger, LOW);
  83. delayMicroseconds(2);
  84.  
  85. // Ponemos el pin Trigger a estado alto y esperamos 10 ms
  86. digitalWrite(Trigger, HIGH);
  87. delayMicroseconds(10);
  88.  
  89. // Comenzamos poniendo el pin Trigger en estado bajo
  90. digitalWrite(Trigger, LOW);
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement