Arduino - Necesito solución para un proyecto de arduino

 
Vista:

Necesito solución para un proyecto de arduino

Publicado por Dagago (1 intervención) el 24/10/2018 13:04:11
Éste es el código(que de momento está bien de todo lo que nos han hecho hacer), y ahora se trata de ser capaces de hacer que dando al pulsador en cualquier momentos,los dos leds amarillos se pongan a parpadear en un bucle infinito (por ejemplo 1 encendido y un segundo apagado a la vez) y sino, que el programa funcione normal. Adjunto programa, urge, gracias!
(ya está el int y el setup del pulsador)

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
int ledrojo=13;
int ledrojo2=12;
int ledamarillo=11;
int ledamarillo2=10;
int ledverde=9;
int ledverde2=8;
int ledverde3=7;
int ledverde4=6;
int ledrojo3=5;
int ledrojo4=4;
int buzzer=3;
int pulsador=2;
 
void setup() {
pinMode(ledrojo, OUTPUT);// configuramos el pin 13 como salida
pinMode(ledamarillo, OUTPUT); // configuramos el pin 11 como salida
pinMode(ledverde, OUTPUT); // configuramos el pin 9 como salida
pinMode(ledrojo2, OUTPUT); // configuramos el pin 12 como salida
pinMode(ledamarillo2, OUTPUT); // configuramos el pin 10 como salida
pinMode(ledverde2, OUTPUT);// configuramos el pin 8 como salida
pinMode(ledverde3, OUTPUT);
pinMode(ledverde4, OUTPUT);
pinMode(ledrojo3, OUTPUT);
pinMode(ledrojo4, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(pulsador,INPUT);
}
void loop() {
tone(buzzer,600);
digitalWrite(ledrojo4,HIGH);
digitalWrite(ledrojo,HIGH);
digitalWrite(ledverde2,HIGH);
digitalWrite(ledverde3,HIGH);
digitalWrite(ledrojo, HIGH);
digitalWrite(ledverde2,HIGH);
delay(6000);
digitalWrite(ledverde2,LOW);
digitalWrite(ledamarillo2,HIGH);
delay(7000);
digitalWrite(ledamarillo2, LOW); digitalWrite(ledverde3,LOW);noTone(buzzer);
delay(1000);
digitalWrite(ledamarillo2,HIGH); digitalWrite(ledverde3,HIGH);tone(buzzer,600);
delay(1000);
digitalWrite(ledamarillo2, LOW); digitalWrite(ledverde3,LOW);noTone(buzzer);
delay(1000);
digitalWrite(ledamarillo2,HIGH); digitalWrite(ledverde3,HIGH);tone(buzzer,600);
delay(1000);
noTone(buzzer);
digitalWrite(ledamarillo2, LOW);
digitalWrite(ledrojo,LOW);
digitalWrite(ledrojo4, LOW);
digitalWrite(ledrojo4, LOW);
digitalWrite(ledverde3, LOW);
digitalWrite(ledverde4, HIGH);
digitalWrite(ledrojo3, HIGH);
digitalWrite(ledrojo2, HIGH);
digitalWrite(ledverde,HIGH);
delay(6000);
digitalWrite(ledverde,LOW);
digitalWrite(ledamarillo,HIGH);
delay(7000);
digitalWrite(ledamarillo, LOW); digitalWrite(ledverde4,LOW);
delay(1000);
digitalWrite(ledamarillo,HIGH); digitalWrite(ledverde4,HIGH);
delay(1000);
digitalWrite(ledamarillo, LOW); digitalWrite(ledverde4,LOW);
delay(1000);
digitalWrite(ledamarillo,HIGH); digitalWrite(ledverde4,HIGH);
delay(1000);
digitalWrite(ledamarillo, LOW);
digitalWrite(ledrojo2,LOW);
digitalWrite(ledverde4, LOW);
digitalWrite(ledrojo3, LOW);
}


GRACIAS!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 40
Ha mantenido su posición en Arduino (en relación al último mes)
Gráfica de Arduino

Necesito solución para un proyecto de arduino

Publicado por foroplus (18 intervenciones) el 27/10/2018 12:04:45
Como ocurre en todos los casos de Arduino, si no ponéis un esquema de vuestro proyecto es difícil ayudaros porque hay que imaginarse muchas cosas.

En principio tu circuitería de leds está clara.
Si quieres que "los dos leds amarillos se pongan a parpadear en un bucle infinito", y asumiendo que todo lo demás sucede igualmente, es decir se ejecuta todo lo del bucle de la función principal void loop() y a continuación los dos leds amarillso parpadean infinitamente (es decir que no se les puede parar, ni pararán solos), puedes añadir este pequeño código al final del bloque loop:

1
2
3
4
5
6
7
8
9
10
if (digitalRead(pulsador)) {
while(1){
digitalWrite(ledamarillo, LOW);
digitalWrite(ledamarillo2, HIGH);
delay (1000);
digitalWrite(ledamarillo, HIGH);
digitalWrite(ledamarillo2, LOW);
delay (1000);
}
}
La sentencia if lee el pulsador, y si está pulsado (HIGH), ejecuta el bucle while, que al tener dentro (1), será infinito.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar