hola a tod@s...!!!
Es la primera vez que entro en un forum como este asique espero que siga bien las indicaciones de las normas del foro para que no nos volvamos loco. De antemano pido perdon por si las moscas y agradezco cualquier pequeña ayuda que me podais dar. Dicho esto, al lio:
Hace poco que estoy trasteando en el mundo Arduino y ya estoy en un callejon sin salida.
Estoy con el tipico proyecto del semaforo para coches/peatones y mi intencion es que mediante la pulsacion de un boton se interrumpa la secuencia principal del semaforo coche, para dar paso a la secuencia del semaforo peaton. Hasta ahi todo normal, funciona tal y como lo tengo programado pero no como quiero. Y es que la secuencia del semaforo peaton solo se activa cuando el programa detecta al final de la secuencia del semaforo coche (Led Rojo) si esta HIGH para lo cual el boton tiene que estar pulsado. Pero no es real no? Lo normal seria que dando una pulsacion, la secuencia "principal" se detuviera y se iniciara la "secundaria". Bien pues, ese es el problema que no se me ocurre que comando, orden, o secuencia usar.
// Defino los pines a utilizar
const int LdVerdeSmf = 5;
const int LdAmarilloSmf = 6;
const int LdRojoSmf = 7;
const int BotonSelect = 12;
const int LdVerdePton = 10;
const int LdRojoPton = 11;
// Defino tiempo de encendido
int time = 6000;
int time2 =2500;
// Defino variable que cambia
int EstadoBoton = 0;
void setup()
{
Serial.begin (9600);
pinMode (LdVerdeSmf, OUTPUT);
pinMode (LdAmarilloSmf, OUTPUT);
pinMode (LdRojoSmf, OUTPUT);
pinMode (BotonSelect, INPUT);
pinMode (LdRojoPton, OUTPUT);
pinMode (LdVerdePton, OUTPUT);
}
void loop()
{
EstadoBoton = digitalRead (BotonSelect); // como conseguir que este buscando todo el rato el estadoboton?
if (EstadoBoton == LOW) {
{
digitalWrite(LdRojoPton, HIGH);
}
for (int LdVerdeSmf = 5; LdVerdeSmf < 6; LdVerdeSmf++); { // Comienza la secuencia.
{
digitalWrite(LdVerdeSmf, HIGH);
delay(time);
digitalWrite(LdVerdeSmf, LOW);
}
for (int LdAmarilloSmf = 6; LdAmarilloSmf < 7; LdAmarilloSmf++);
{
digitalWrite(LdAmarilloSmf, HIGH);
delay(time2);
digitalWrite(LdAmarilloSmf, LOW);
}
for (int LdRojoSmf = 7; LdRojoSmf < 8; LdRojoSmf++);
{
digitalWrite(LdRojoSmf, HIGH);
delay(time);
digitalWrite(LdRojoSmf, LOW);
}
}
}
else {
digitalWrite(LdAmarilloSmf, HIGH);
delay (300);
digitalWrite (LdAmarilloSmf, LOW);
delay (300);
digitalWrite(LdAmarilloSmf, HIGH);
delay (300);
digitalWrite (LdAmarilloSmf, LOW);
delay (300);
digitalWrite (LdAmarilloSmf, HIGH);
delay (time2);
digitalWrite (LdAmarilloSmf, LOW);
digitalWrite(LdRojoSmf, HIGH);
delay(time2);
digitalWrite(LdRojoPton, LOW);
digitalWrite (LdVerdePton, HIGH);
delay (time);
digitalWrite(LdVerdePton,LOW);
delay (300);
digitalWrite (LdVerdePton, HIGH);
delay (300);
digitalWrite(LdVerdePton,LOW);
delay (300);
digitalWrite (LdVerdePton, HIGH);
delay (300);
digitalWrite(LdVerdePton,LOW);
delay (300);
digitalWrite(LdRojoSmf, HIGH);
digitalWrite(LdRojoPton, HIGH);
delay (time2);
digitalWrite(LdRojoSmf, LOW);
}
}
Os reporto el programa a ver que os parece y alguien es capaz de aportarme un rayito de luz.
Como ya os he dicho arriba, gracias de antemano. Nos veremos.