Soru

Semaforo

allissonroque95
Allisson Roque
@allissonroque95
173 görüntülenme
0 yorum

Semáforo doble

Arduino (C++)
1// Definición de pines para el Semáforo 1
2const int verde1 = 5;
3const int amarillo1 = 6;
4const int rojo1 = 7;
5
6// Definición de pines para el Semáforo 2
7const int verde2 = 8;
8const int amarillo2 = 9;
9const int rojo2 = 10;
10
11// Tiempos en milisegundos (1 segundo = 1000 ms)
12const int tiempoVerde = 5000;   // 5 segundos en verde
13const int tiempoAmarillo = 2000; // 2 segundos en amarillo
14const int tiempoRojoExtra = 1000; // Seguridad entre cambios
15
16void setup() {
17  // Configuramos todos los pines como salidas
18  pinMode(verde1, OUTPUT);
19  pinMode(amarillo1, OUTPUT);
20  pinMode(rojo1, OUTPUT);
21  
22  pinMode(verde2, OUTPUT);
23  pinMode(amarillo2, OUTPUT);
24  pinMode(rojo2, OUTPUT);
25}
26
27void loop() {
28  // --- FASE 1: Semáforo 1 en VERDE, Semáforo 2 en ROJO ---
29  digitalWrite(verde1, HIGH);
30  digitalWrite(amarillo1, LOW);
31  digitalWrite(rojo1, LOW);
32
33  digitalWrite(verde2, LOW);
34  digitalWrite(amarillo2, LOW);
35  digitalWrite(rojo2, HIGH);
36  
37  delay(tiempoVerde); // Espera el tiempo de verde
38
39  // --- FASE 2: Semáforo 1 en AMARILLO, Semáforo 2 en ROJO ---
40  digitalWrite(verde1, LOW);
41  digitalWrite(amarillo1, HIGH);
42  digitalWrite(rojo1, LOW);
43  // El semáforo 2 sigue en rojo
44  digitalWrite(rojo2, HIGH);
45  
46  delay(tiempoAmarillo);
47
48  // --- FASE 3: Semáforo 1 en ROJO, Semáforo 2 en VERDE ---
49  digitalWrite(verde1, LOW);
50  digitalWrite(amarillo1, LOW);
51  digitalWrite(rojo1, HIGH); // S1 se pone rojo
52
53  digitalWrite(verde2, HIGH); // S2 pasa a verde
54  digitalWrite(amarillo2, LOW);
55  digitalWrite(rojo2, LOW);
56  
57  delay(tiempoVerde);
58
59  // --- FASE 4: Semáforo 1 en ROJO, Semáforo 2 en AMARILLO ---
60  digitalWrite(rojo1, HIGH); // S1 sigue en rojo
61  digitalWrite(verde2, LOW);
62  digitalValue(amarillo2, HIGH); // S2 pasa a amarillo (Nota: usar digitalWrite)
63  // Corrigiendo la línea de amarillo2:
64  digitalWrite(amarillo2, HIGH);
65  digitalWrite(rojo2, LOW);
66  
67  delay(tiempoAmarillo);
68}

0 yorum

Yorum yapmak için giriş yap

İlk yorum yapan sen ol.