Bueno estoy haciendo un semaforo que cuando pulse un boton el tiempo de paso de peatones cambie y se encienda otro led que significa que esta activado este paso.
El problema es que con delay no me lee el pulsador mientras mantiene los leds encendidos del semaforo
como podria solucionarlo, pongo el codigo que tengo.
const int semcarred = 52; //Puerto led semaforo carro rojo
const int semcaryell = 50; //Puerto led semaforo carro amarillo
const int semcargre = 48; //Puerto led semaforo carro verde
const int semperred = 46; //Puerto led semaforo personas rojo
const int sempergre = 44; //Puerto led semaforo personas verde
const int ledpuls = 42; //Led activar paso discapacitados
int val = 0; //Valor digital pulsador
int A = 0; //
const int puls = 24; //puerto pulsador
void setup()
{
Serial.begin(9600);
// Declarando salida digital de los leds
pinMode(semcarred, OUTPUT);
pinMode(semcaryell, OUTPUT);
pinMode(semcargre, OUTPUT);
pinMode(semperred, OUTPUT);
pinMode(sempergre, OUTPUT);
pinMode(ledpuls, OUTPUT);
//Declarando entrada digital pulsador
pinMode(puls, INPUT);
}
void loop()
{
digitalWrite(ledpuls, LOW); //Led para solicitar paso con mas tiempo APAGADO
//Lectura valor pulsador
val = digitalRead(puls);
if (val = 1)
{
A = 1;
digitalWrite(ledpuls, HIGH); //Enciende led cuando solicita paso con mas tiempo
}
//Semaforo
Serial.println(A) ;
if (A = 0)
{
//Lectura valor pulsador
val = digitalRead(puls);
if (val = 1 ) //asignar valor bandera
{
A = 1;
digitalWrite(ledpuls, HIGH); //Enciende led cuando solicita paso con mas tiempo
}
digitalWrite(semcarred, HIGH); //Semaforo carros rojo encendido
digitalWrite(semcaryell, LOW); //Semaforo carros amarillo apagado
digitalWrite(semcargre, LOW); //Semaforo carros verde apagado
digitalWrite(semperred, LOW); //Semaforo personas rojo apagado
digitalWrite(sempergre, HIGH); //Semaforo personas verde encendido
delay(4000); //Tiempo de espera del semaforo
//Lectura valor pulsador
val = digitalRead(puls);
if (val = 1) //asignar valor bandera
{
A = 1;
digitalWrite(ledpuls, HIGH); //Enciende led cuando solicita paso con mas tiempo
}
digitalWrite(semcarred, HIGH); //Semaforo carros rojo encendido
digitalWrite(semcaryell, HIGH); //Semaforo carros amarillo encendido
digitalWrite(semcargre, LOW); //Semaforo carros verde apagado
digitalWrite(semperred, HIGH); //Semaforo personas rojo encendido
digitalWrite(sempergre, LOW); //Semaforo personas verde apagado
delay(2000); //Tiempo de espera del semaforo
//Lectura valor pulsador
val = digitalRead(puls);
if (val = 1) //asignar valor bandera
{
A = 1;
digitalWrite(ledpuls, HIGH); //Enciende led cuando solicita paso con mas tiempo
}
digitalWrite(semcarred, LOW); //Semaforo carros rojo apagado
digitalWrite(semcaryell, LOW); //Semaforo carros amarillo apagado
digitalWrite(semcargre, HIGH); //Semaforo carros verde encendido
digitalWrite(semperred, HIGH); //Semaforo personas rojo encendido
digitalWrite(sempergre, LOW); //Semaforo personas verde apagado
delay(8000); //Tiempo de espera del semaforo
//Lectura valor pulsador
val = digitalRead(puls);
if (val = 1) //asignar valor bandera
{
A = 1;
digitalWrite(ledpuls, HIGH); //Enciende led cuando solicita paso con mas tiempo
}
digitalWrite(semcarred, LOW); //Semaforo carros rojo apagado
digitalWrite(semcaryell, HIGH); //Semaforo carros amarillo encendido
digitalWrite(semcargre, LOW); //Semaforo carros verde apagado
digitalWrite(semperred, HIGH); //Semaforo personas rojo encendido
digitalWrite(sempergre, LOW); //Semaforo personas verde apagado
delay(2000); //Tiempo de espera del semaforo
}
else if (A = 1)
{
digitalWrite(semcarred, HIGH); //Semaforo carros rojo encendido
digitalWrite(semcaryell, LOW); //Semaforo carros amarillo apagado
digitalWrite(semcargre, LOW); //Semaforo carros verde apagado
digitalWrite(semperred, LOW); //Semaforo personas rojo apagado
digitalWrite(sempergre, HIGH); //Semaforo personas verde encendido
delay(8000); //Tiempo de espera del semaforo
digitalWrite(semcarred, HIGH); //Semaforo carros rojo encendido
digitalWrite(semcaryell, HIGH); //Semaforo carros amarillo encendido
digitalWrite(semcargre, LOW); //Semaforo carros verde apagado
digitalWrite(semperred, HIGH); //Semaforo personas rojo encendido
digitalWrite(sempergre, LOW); //Semaforo personas verde apagado
delay(2000); //Tiempo de espera del semaforo
digitalWrite(semcarred, LOW); //Semaforo carros rojo apagado
digitalWrite(semcaryell, LOW); //Semaforo carros amarillo apagado
digitalWrite(semcargre, HIGH); //Semaforo carros verde encendido
digitalWrite(semperred, HIGH); //Semaforo personas rojo encendido
digitalWrite(sempergre, LOW); //Semaforo personas verde apagado
delay(8000); //Tiempo de espera del semaforo
digitalWrite(semcarred, LOW); //Semaforo carros rojo apagado
digitalWrite(semcaryell, HIGH); //Semaforo carros amarillo encendido
digitalWrite(semcargre, LOW); //Semaforo carros verde apagado
digitalWrite(semperred, HIGH); //Semaforo personas rojo encendido
digitalWrite(sempergre, LOW); //Semaforo personas verde apagado
delay(2000); //Tiempo de espera del semaforo
A = 0;
}
}
Les agradeceria si me pueden ayudar!!