Go Down

Topic: ayuda a prender parpadeo de 4 leds con 4 botones (Doy recompensa $$$) (Read 542 times) previous topic - next topic

Cruzwerty

Hola amigos , soy nuevo con esto de arduino y tengo una super duda con la que llevo dias y aun no encuentro respuestas pero tal vez para ustedes sea fácil y sea algo sencillo.

tengo 4 leds y cada led tiene un boton con el que se prende y apaga , al prender el led va ir parpadeando de lento a rapido hasta que quede completamente encendido.

mis problemas son estos, cuando está parpadeando un led  y quiero encender otro  no puedo hasta que termine el ciclo anterior y lo que quiero es que cada led se pueda prender cada uno con su ritmo sin importar que ya haya uno prendido. y otro problema es que cuando llega a 0 el tiempo de parpadeo del led ya no lo puedo apagar. este es el codigo que usaba, lo estoy intentando con dos led...otro problema es que el tiempo donde el led empieza a parpadear rapido, casi no dura y quisiera que durara mas.


int botonMto=7;
int botonCld=6;
int Mantenimiento =12;
int Calidad=11;
int tiempo =1000;
int tiempo1 = 1000;
int tiempo2 = 50;
int tiempo3 =1000;
void setup()
{
 Serial.begin(9600);
 pinMode(botonMto,INPUT); //push button pin
 pinMode(botonCld,INPUT);
 pinMode(botonIng,INPUT);
 pinMode(botonMfa,INPUT);
 pinMode(Mantenimiento,OUTPUT);
 pinMode(Calidad,OUTPUT);
 pinMode(Ingenieria,OUTPUT);
 pinMode(Manufactura,OUTPUT); // LED pin
}

void loop()
{
 
 int pulsador1 = digitalRead(botonMto);
 
 while( pulsador1 == HIGH ) //cuando se aplasta el boton
 {
 
   //blink
   digitalWrite(Mantenimiento,HIGH);
   delay(tiempo1-=tiempo2);
   digitalWrite(Mantenimiento,LOW);
   delay(tiempo1);
   Serial.println(tiempo1);
   pulsador1 = digitalRead(botonMto); //refrescar el valor
 
 }
 if (pulsador1 == LOW);
 {
digitalWrite(Mantenimiento,LOW);
pulsador1 = digitalRead(botonMto); //refrescar el valor
tiempo1= tiempo;
 }
 if(tiempo1==0)
 {
   if(pulsador1 == LOW);
   {
     digitalWrite(Mantenimiento,LOW);
   }
 }

 int pulsador2 = digitalRead(botonCld);
while( pulsador2 == HIGH ) //cuando se aplasta el boton
 {
 
   //blink
   digitalWrite(Calidad,HIGH);
   delay(tiempo3-=tiempo2);
   digitalWrite(Calidad,LOW);
   delay(tiempo3);
   Serial.println(tiempo1);
   pulsador1 = digitalRead(botonCld); //refrescar el valor
 
 }
  if (pulsador2 == LOW);
 {
digitalWrite(Calidad,LOW);

 }
 }

se que uno de los problemas está en que uso delay, pero no logro comprender bien la funcion millis y menos que haga eso que quiero hacer, ayudenme porfavor

Go Up