Como conectar un boton de start/pause/continue

Hola a todos, soy nuevo en el mundo del arduino. Estoy tratando de desarrollar un programa en el cuál mediante dos pulsadores: Start y pause pueda dar inicio a una secuencia de leds que se encienden uno por uno. Ya sé como se conectar el boton de "Start" para que inicie la secuencia. Pero tengo un problema a la hora de configurar el "pause". No se como pausar los leds en una determinada posición y que se mantenga en esa posición, y luego presionar nuevamente start para que siga con la secuencia. No se si me explique bien pero pongo un ejemplo:

1- Aprieto start y comienza la secuencia
2- Se enciende el led 1, luego el 1 y 2, luego el 1,2 y 3 ...... hasta el led 50.
3- Aprieto el boton pausa y queda en una posición determinada por ejemplo 1,2 y 3.
4- Presiono nuevamente el boton de "start" y continua desde esa posición.

este sería el código, perdón porque lo hice muy simple o incompleto, es que soy nuevo y estoy aprendiendo.. :]


int START = 2; // Asigna al pin 2 el nombre START
int STOP = 3; // Asigna al pin 3 el nombre STOP
int ROJO = 5; // define al pin 5 el nombre ROJO
int AMARILLO1 = 6; // define al pin 6 el nombre de AMARILLO1
int AMARILLO2 = 7; // define al pin 7 el nombre de AMARILLO2
int VERDE = 8; // define al pin 8 el nombre de VERDE


void setup (){
  pinMode(START, INPUT); // El pin 2 lo defino como entrada, start
  pinMode(STOP, INPUT); // El pin 3 lo defino como entrada, stop
  pinMode (ROJO, OUTPUT); // El pin 5 lo defino como salida, ROJO
  pinMode (AMARILLO1, OUTPUT); // El pin 6 lo defino como salida, AMARILLO1
  pinMode (AMARILLO2, OUTPUT); // El pin 7 lo defino como salida, AMARILLO2
  pinMode (VERDE, OUTPUT); // El pin 8 lo defino como salida, ROJO

}
void loop(){
  if (digitalRead(START) == HIGH){ // compara el valor de entrada si esta en estado alto o bajo
    digitalWrite(ROJO,HIGH);
    digitalWrite(AMARILLO1,LOW);
    digitalWrite(AMARILLO2,LOW);
    digitalWrite(VERDE,LOW);
    delay(1000);
    digitalWrite(ROJO,HIGH);
    digitalWrite(AMARILLO1,HIGH);
    digitalWrite(AMARILLO2,LOW);
    digitalWrite(VERDE,LOW);
    delay(150);
    digitalWrite(ROJO,HIGH);
    digitalWrite(AMARILLO1,HIGH);
    digitalWrite(AMARILLO2,HIGH);
    digitalWrite(VERDE,LOW);
    delay(150);
    digitalWrite(ROJO,HIGH);
    digitalWrite(AMARILLO1,HIGH);
    digitalWrite(AMARILLO2,HIGH);
    digitalWrite(VERDE,HIGH);
    delay(30000);
    digitalWrite(ROJO,LOW);
    digitalWrite(AMARILLO1,LOW);
    digitalWrite(AMARILLO2,LOW);
    digitalWrite(VERDE,LOW);
      }
  else{
    digitalWrite(ROJO,LOW);
    digitalWrite(AMARILLO1,LOW);
    digitalWrite(AMARILLO2,LOW);
    digitalWrite(VERDE,LOW);
    
  }
````Texto preformateado`

Desde ya muchas gracias, saludos a todos.

Sostenga los LED en una matriz, cuando presione "PAUSE", escriba esa matriz en sus pines LED, luego regrese para esperar otro botón.

Puedes usar una variable bool que indique en que estado está, por ejemplo, enPausa.
Cuando pulsas start la pones en false, cuando pulsas pause la pones en true.
Entonces ejecutas la secuencia solo cuando enPausa es false.

Sube tu código (algo que deberías haber hecho ya) y vemos si hay que modificar algo más

Saludos

gracias por responder, si me pueden ayudar a modificarlo o agregarle la pausa se los agradecería muchísimo. este sería el código es muy básico ya que soy muy novato.

int START = 2; // Asigna al pin 2 el nombre START
int STOP = 3; // Asigna al pin 3 el nombre STOP
int ROJO = 5; // define al pin 5 el nombre ROJO
int AMARILLO1 = 6; // define al pin 6 el nombre de AMARILLO1
int AMARILLO2 = 7; // define al pin 7 el nombre de AMARILLO2
int VERDE = 8; // define al pin 8 el nombre de VERDE


void setup (){
  pinMode(START, INPUT); // El pin 2 lo defino como entrada, start
  pinMode(STOP, INPUT); // El pin 3 lo defino como entrada, stop
  pinMode (ROJO, OUTPUT); // El pin 5 lo defino como salida, ROJO
  pinMode (AMARILLO1, OUTPUT); // El pin 6 lo defino como salida, AMARILLO1
  pinMode (AMARILLO2, OUTPUT); // El pin 7 lo defino como salida, AMARILLO2
  pinMode (VERDE, OUTPUT); // El pin 8 lo defino como salida, ROJO

}
void loop(){
  if (digitalRead(START) == HIGH){ // compara el valor de entrada si esta en estado alto o bajo
    digitalWrite(ROJO,HIGH);
    digitalWrite(AMARILLO1,LOW);
    digitalWrite(AMARILLO2,LOW);
    digitalWrite(VERDE,LOW);
    delay(1000);
    digitalWrite(ROJO,HIGH);
    digitalWrite(AMARILLO1,HIGH);
    digitalWrite(AMARILLO2,LOW);
    digitalWrite(VERDE,LOW);
    delay(150);
    digitalWrite(ROJO,HIGH);
    digitalWrite(AMARILLO1,HIGH);
    digitalWrite(AMARILLO2,HIGH);
    digitalWrite(VERDE,LOW);
    delay(150);
    digitalWrite(ROJO,HIGH);
    digitalWrite(AMARILLO1,HIGH);
    digitalWrite(AMARILLO2,HIGH);
    digitalWrite(VERDE,HIGH);
    delay(30000);
    digitalWrite(ROJO,LOW);
    digitalWrite(AMARILLO1,LOW);
    digitalWrite(AMARILLO2,LOW);
    digitalWrite(VERDE,LOW);
      }
  else{
    digitalWrite(ROJO,LOW);
    digitalWrite(AMARILLO1,LOW);
    digitalWrite(AMARILLO2,LOW);
    digitalWrite(VERDE,LOW);
    
  }

Ese código no es tan fácil de modificar por causa de los delays, en su lugar tienes que usar millis(), te recomiendo que leas el excelente tutorial que encontrarás en la sección Documentación.
Modificalo usando millis() y luego lo vemos.

Saludos

gracias amigo!! Lo leo y después le escribo otra vez!! muchas gracias! buen comienzo de semana.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.