-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathProyectoSemaforo.ino
135 lines (101 loc) · 3.42 KB
/
ProyectoSemaforo.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
const int EchoPin = 12;
const int TriggerPin = 11;
int ledV = 6;
int ledR = 7;
int ledA = 5;
int PrimeraVez2 = true;
int PrimeraVez1 = true;
void setup() {
Serial.begin(9600);
pinMode(ledV, OUTPUT);
pinMode(ledR , OUTPUT) ;
pinMode(ledA , OUTPUT) ;
pinMode(TriggerPin, OUTPUT);
pinMode(EchoPin, INPUT);
}
void loop() {
int cm = ping(TriggerPin, EchoPin);
//Serial.print("Distancia: ");
//Serial.println(cm);
if (cm==0){
Serial.println ("No hay sensor conectado1");
};
if (cm<40 && cm > 2 && PrimeraVez1 == true){
digitalWrite(ledR, LOW); // turn the LED off
delay(1000);
digitalWrite(ledA, HIGH); // turn the LED on
delay(500);
digitalWrite(ledA, LOW); // turn the LED on
delay(500);
digitalWrite(ledA, HIGH); // turn the LED on
delay(500);
digitalWrite(ledA, LOW); // turn the LED on
delay(500);
digitalWrite(ledA, HIGH); // turn the LED on
delay(500);
digitalWrite(ledA, LOW); // turn the LED on
delay(500);
digitalWrite(ledV, HIGH); // turn the LED on
PrimeraVez2 = true;
PrimeraVez1 = false;
};
if (cm>40 && PrimeraVez2 == true) {
digitalWrite(ledV, LOW); // turn the LED off
delay(1000);
digitalWrite(ledA, HIGH); // turn the LED on
delay(500);
digitalWrite(ledA, LOW); // turn the LED on
delay(500);
digitalWrite(ledA, HIGH); // turn the LED on
delay(500);
digitalWrite(ledA, LOW); // turn the LED on
delay(500);
digitalWrite(ledA, HIGH); // turn the LED on
delay(500);
digitalWrite(ledA, LOW); // turn the LED on
delay(500);
digitalWrite(ledR, HIGH); // turn the LED on
PrimeraVez2 = false;
PrimeraVez1 = true;
};
if (cm==0) {
//Encendemos el led verde
digitalWrite(ledV, HIGH);
delay(10000);
digitalWrite(ledV, LOW);
delay(100);
// hacemos que el led Amaillo parpadee antes de encender el verde
digitalWrite(ledA, HIGH);
delay(500);
digitalWrite(ledA, LOW);
delay(500);
digitalWrite(ledA, HIGH);
delay(500);
digitalWrite(ledA, LOW);
delay(500);
digitalWrite(ledA, HIGH);
delay(500);
digitalWrite(ledA, LOW);
delay(500);
digitalWrite(ledA, HIGH);
delay(500);
digitalWrite(ledA, LOW);
delay(500);
//Encendemos el led verde
digitalWrite(ledR, HIGH);
delay(10000);
digitalWrite(ledR, LOW);
};
}
//Funcion para controlar el sensor de distancia
int ping(int TriggerPin, int EchoPin) {
long duration, distanceCm;
digitalWrite(TriggerPin, LOW);
delayMicroseconds(4);
digitalWrite(TriggerPin, HIGH); //generamos Trigger (disparo) de 10us
delayMicroseconds(10);
digitalWrite(TriggerPin, LOW);
duration = pulseIn(EchoPin, HIGH); //medimos el tiempo entre pulsos, en microsegundos
distanceCm = duration * 10 / 292/ 2; //convertimos a distancia, en cm
return distanceCm;
}