Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.70 KB | None | 0 0
  1.  
  2. // Semaforo 1
  3. #define ledV_1 2
  4. #define ledA_1 3
  5. #define ledR_1 4
  6. #define sensor_1 8
  7.  
  8. // Semaforo 2
  9. #define ledV_2 5
  10. #define ledA_2 6
  11. #define ledR_2 7
  12. #define sensor_2 9
  13.  
  14. // Pedestre
  15. #define pV_1 10
  16. #define pR_1 11
  17. #define pV_2 12
  18. #define pR_2 13
  19.  
  20. // Variables
  21. bool estaSemaforo1_Encendido = true; // Indica si el semáforo 1 está activo
  22. int timeLeds = 1500; // Tiempo de espera entre transición de LEDs
  23. int timeSemaforo = 5000; // Tiempo de espera hasta comenzar transición
  24.  
  25. void setup() {
  26. // Iniciamos el monitor serie
  27. Serial.begin(9600);
  28.  
  29. // Modo entrada/salida de los pines
  30. pinMode(ledV_1, OUTPUT);
  31. pinMode(ledA_1, OUTPUT);
  32. pinMode(ledR_1, OUTPUT);
  33. pinMode(ledV_2, OUTPUT);
  34. pinMode(ledA_2, OUTPUT);
  35. pinMode(ledR_2, OUTPUT);
  36. pinMode(sensor_1, INPUT);
  37. pinMode(sensor_2, INPUT);
  38.  
  39. pinMode(pV_1, OUTPUT);
  40. pinMode(pR_1, OUTPUT);
  41. pinMode(pV_2, OUTPUT);
  42. pinMode(pR_2, OUTPUT);
  43.  
  44. // Apagamos todos los LEDs
  45. digitalWrite(ledV_1, HIGH);
  46. digitalWrite(ledA_1, HIGH);
  47. digitalWrite(ledR_1, HIGH);
  48. digitalWrite(ledV_2, HIGH);
  49. digitalWrite(ledA_2, HIGH);
  50. digitalWrite(ledR_2, HIGH);
  51.  
  52. digitalWrite(pV_1, HIGH);
  53. digitalWrite(pR_1, HIGH);
  54. digitalWrite(pV_2, HIGH);
  55. digitalWrite(pR_2, HIGH);
  56.  
  57.  
  58. // Estado inicial: semáforo 1 abierto, semáforo 2 cerrado
  59. digitalWrite(ledV_1, LOW);
  60. digitalWrite(ledR_2, LOW);
  61. digitalWrite(pR_1, LOW);
  62. digitalWrite(pV_2, LOW);
  63. }
  64.  
  65. void loop() {
  66. if (estaSemaforo1_Encendido) // Si está encendido el Semáforo 1...
  67. {
  68. int estado = digitalRead(sensor_2); // Comprobamos el pulsador 2
  69. if (estado == HIGH) // Si se pulso el pulsador...
  70. {
  71. cambioSemaforo(ledV_1, ledA_1, ledR_1, ledR_2, ledV_2, pV_1, pR_1, pR_2, pV_2); // Encender semáforo 2
  72. estaSemaforo1_Encendido = false; // Semáforo 1 apagado
  73. }
  74. }
  75. else // Caso contrario, es decir, si está apagado el Semáforo 1...
  76. {
  77. int estado = digitalRead(sensor_1); // Comprobamos el pulsador 1
  78. if (estado == HIGH) // Si se pulso el pulsador...
  79. {
  80. cambioSemaforo(ledV_2, ledA_2, ledR_2, ledR_1, ledV_1, pV_2, pR_2, pR_2, pV_2); // Encender semáforo 1
  81. estaSemaforo1_Encendido = true; // Semáforo 1 encendido
  82. }
  83. }
  84. }
  85.  
  86. void cambioSemaforo(int ledV, int ledA, int ledR, int ledR_, int ledV_, int pV, int pR, int pR_, int pV_)
  87. {
  88. delay(timeSemaforo); // Esperamos para empezar el cambio del semaforo
  89.  
  90. // Pasamos a Luz Amarilla
  91. digitalWrite(ledV, HIGH);
  92. digitalWrite(ledA, LOW);
  93. digitalWrite(pV_, HIGH);
  94. digitalWrite(pR_, LOW);
  95.  
  96. delay(timeLeds);
  97.  
  98. // Pasamos a Luz Roja
  99. digitalWrite(ledA, HIGH);
  100. digitalWrite(ledR, LOW);
  101.  
  102. delay(timeLeds);
  103.  
  104. // Encendemos el otro semáforo
  105. digitalWrite(ledR_, HIGH);
  106. digitalWrite(ledV_, LOW);
  107. digitalWrite(pR, HIGH);
  108. digitalWrite(pV, LOW);
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement