Como hago esto?! orden de encendido con interruptor

Buenas gente!
hace un mes que empece a incursionar en el mundo de arduino, ya que estoy en un proyecto personal, para armar la placa de sonido de mi lightsaber.
el tema es que estoy practicando , estudiando, leyendo tutoriales, haciendo pruebas, etc..
pero me estoy volviendo loco con el tema de la programacion, porque hasta ahora no encuentro una guia ordenada, por asi decirlo, sino que solo proyectos con los codigos ya escritos.
y aunque me baje el manual de programacion, hasta ahora, me cuesta lograr una conjuncion de lo que necesito..
pero bueno, la duda es la siguiente..
no encuentro la manera de darle un orden de encendido a los led, al pulsar un boton.
estoy usando este codigo:

//** Definiciones **//

int pulsador=0;              //almacena el estado del botón
int estado=0;                //0=led apagado, 1=led encendido
int pulsadorAnt=0;           //almacena el estado anterior del boton

//** Programa **//

void setup() {
  pinMode(2, OUTPUT);        //declaramos el pin 2 como salida
  pinMode(6,OUTPUT);          //declaramos el pin 6 como salida
  pinMode(4, INPUT);         //declaramos el pin 4 como entrada
}

void loop() {
  pulsador = digitalRead(4); //lee si el botón está pulsado
  
  if((pulsador==HIGH)&&(pulsadorAnt==LOW)){  //si el boton es pulsado y antes no lo estaba
    estado=1-estado;
    delay(40);               //pausa de 40 ms
  }
  pulsadorAnt=pulsador;      //actualiza el nuevo estado del boton        
  
  if(estado==1) {            //si el estado es 1
    digitalWrite(2, HIGH);   //se enciende el led
    digitalWrite(6, HIGH);
   
  }

es uno de prueba, con el que enciendo los 2 led.
pero lo que necesito es que se prenda primero uno, y despues el otro
yo use la variable "delay" pero lo unico que consegui es que tarde en encender al pulsar el boton..
porque la idea, es hacer el scroling de la hoja cuando se prende, o sea, conectando los led en segementos a 5 o 6 pines, y que se enciendan en orden ascendente, y luego al pulsar el boton, que se apaguen de la manera inversa..
alguien me puede decir que puedo usar?
gracias de anemano!

Hola tanakabuki,

Yo también estoy medio empezando con el Arduino, y haciendo pruebas conseguí encender un led de la siguiente manera:

// LED pin 2
// BUTTON pin 4
digitalWrite(2, digitalRead(4));

Con ese código le asignas al led el mismo valor que te llega por el botón. En cuánto sueltes el botón se apagará el led. No sé si es lo que buscas

No lo he probado pero compila bien,aunque puede darte problemas de rebotes en el boton.supongo que usas resistencia pulldown en el pulsador.

boolean encendido = false;

//** Programa **//

void setup() {
  pinMode(2, OUTPUT);        //declaramos el pin 2 como salida
  pinMode(6,OUTPUT);          //declaramos el pin 6 como salida
  pinMode(4, INPUT);         //declaramos el pin 4 como entrada
}

void loop() {  
  if(digitalRead(4)==HIGH &&  encendido){  //si el boton es pulsado y ya estan encendidos ,los apaga
    digitalWrite(6, LOW);
    delay(500); //pausa de apagado entre uno y otro ,a regular a tu gusto
    digitalWrite(2, LOW);  
    encendido = false;
  }
  else if (digitalRead(4)==HIGH &&  ! encendido) {  //si el boton es pulsado y estan apagados,los enciende
    digitalWrite(2, HIGH); 
    delay(500); //pausa de encendido entre uno y otro ,a regular a tu gusto
    digitalWrite(6, HIGH);
    encendido = true;
  }
}

Gracias Lloople, pero lo que necesito hacer es esto:

hacer que se enciendan gradualmente los led, al pulsar el boton, que quede prendido, y luego al pulsar que se retraiga.
en realidad, tedria que lograr casi todo eso del video..jeje...con el audio y todo, pero bueno, estoy empezando, asi que no pretendo hacerlo de un dia para el otro..
gracias por la ayuda.

Lloople:
Hola tanakabuki,

Yo también estoy medio empezando con el Arduino, y haciendo pruebas conseguí encender un led de la siguiente manera:

// LED pin 2

// BUTTON pin 4
digitalWrite(2, digitalRead(4));




Con ese código le asignas al led el mismo valor que te llega por el botón. En cuánto sueltes el botón se apagará el led. No sé si es lo que buscas

Jose, gracias por el tip, recien lo probe, y el unico problema es el rebote, que afecta el encendido.
modifique el codigo que me pasaste, y quedo asi:

int pulsador=0;              //almacena el estado del botón
int estado=0;                //0=led apagado, 1=led encendido
int pulsadorAnt=0;           //almacena el estado anterior del boton
boolean encendido = false;
//** Programa **//

void setup() {
pinMode(2, OUTPUT);        //declaramos el pin 2 como salida
pinMode(6,OUTPUT);          //declaramos el pin 6 como salida
pinMode(4, INPUT);         //declaramos el pin 4 como entrada
}

void loop() {
pulsador = digitalRead(4); //lee si el botón está pulsado

if((pulsador==HIGH)&&(pulsadorAnt==LOW)){  //si el boton es pulsado y antes no lo estaba
  estado=1-estado;
  delay(40);               //pausa de 40 ms
}
pulsadorAnt=pulsador;      //actualiza el nuevo estado del boton        

if(estado==1) {            //si el estado es 1
  digitalWrite(2, HIGH);   //se enciende el led
  delay(150);
  digitalWrite(6, HIGH);
  encendido = false;
 
}
else{                      //si el estado es 0
  digitalWrite(6, LOW);    //se apaga el led
  delay(150);
  digitalWrite(2, LOW);
  encendido = true;
}
}

asi funciona, aunque no se si esta bien o no..jeje...estoy haciendo pruebas y todavia no termino de entenderlo, pero bueno, se agradece la ayuda!


[quote author=_jose_ date=1451559823 link=msg=2543384]
No lo he probado pero compila bien,aunque puede darte problemas de rebotes en el boton.supongo que usas resistencia pulldown en el pulsador.
[code]
boolean encendido = false;

//** Programa **//

void setup() {
  pinMode(2, OUTPUT);        //declaramos el pin 2 como salida
  pinMode(6,OUTPUT);          //declaramos el pin 6 como salida
  pinMode(4, INPUT);         //declaramos el pin 4 como entrada
}

void loop() {  
  if(digitalRead(4)==HIGH &&  encendido){  //si el boton es pulsado y ya estan encendidos ,los apaga
    digitalWrite(6, LOW);
    delay(500); //pausa de apagado entre uno y otro ,a regular a tu gusto
    digitalWrite(2, LOW);  
    encendido = false;
  }
  else if (digitalRead(4)==HIGH &&  ! encendido) {  //si el boton es pulsado y estan apagados,los enciende
    digitalWrite(2, HIGH); 
    delay(500); //pausa de encendido entre uno y otro ,a regular a tu gusto
    digitalWrite(6, HIGH);
    encendido = true;
  }
}

Hola que tal... bueno parece que todo va bien... el detalle con los pulsadores es que tienen muchos unos y ceros, es decir reflejan estados encendidos ya apagados mientras el resorte los separa, en fin... la solucion mas facil para esto...

usar una peque;a libreria que se encargue de todo...

te recomiendo...

Sencilla pequeña e intuitiva, ademas en e sitio encontraras ejemplos...

No hay boton de descarga, por lo que tendras que descargarla e instalarla tu mismo.

Espero que subas una fotos de tu ligthsaber, es algo que he querido hacer XD

Animo.

-Alex,

Gracias alex, lo voy probar. ahora estoy con el acelerometro y el modulo de mp3..que es un quilombo...gracias por la data!