Serie de leds utilizando push bottons

Hola, queria ver su me podrian ayudar a solucionar este error:
Lo que pasa es que tengo una serie de leds, donde si pulso un boton este debe ir prendiendo en serie hacia la izquierda con la configuracion pullup, y con otro boton debe prender la serie hacia la derecha en configuracion pulldown, aqui el error que tengo es que al subir el codigo como se que da señal de presionar el pulldown sin haberlo accionado y eso no deberia hacerlo, este tambien cuando se pulsa primero hace una serie y despues la vuelve a hacer sin haberse accionado, espero haberme dado a entender bien y alguien me pueda ayudar o indicar que podría ser, saludos.



#include "GFButton.h" //añadiendo la liberia

 //crear variables para el manejo de los pines
int pinledArry[]={2,3,4,5,6,7,8,9,10,11};
 int pullup=12;// se usará para encender
 int pulldown=13;// se usara para apagar
 int tiempo=300;// Asignamos un tiempo de retardo
int contador=0; //Declaramos un contador
int contador2=0;
int pinledArry2[]={11,10,9,8,7,6,5,4,3,2};
int estadoSerie;
int estadoSerie2;

 //Crear objeto para el manejo del pin del botón de entrada
GFButton botonOFF(pulldown);
GFButton botonON(pullup); 
 
void setup() {
  for(contador=0;contador<10;contador ++){
  pinMode(pinledArry[contador],OUTPUT); // Asignamos con el ciclo for un contador y los 10 pines del 2 al 11 los asignamos como salida
  }
  
  for(contador2=0;contador2<10;contador2 ++){
  pinMode(pinledArry2[contador2],OUTPUT); // Asignamos con el ciclo for un contador y los 10 pines del 2 al 11 los asignamos como salida
  }
  Serial.begin(9600); //Iniciamos la conexion con el monitor serial
  
}

void loop() {
  
  estadoSerie=digitalRead(pullup);
  estadoSerie2=digitalRead(pulldown);
  
  if (botonON.isPressed()){
    Serial.print("La serie va hacia la izquierda   ");
  Serial.println(estadoSerie);
    delay(300);
    for(contador=0;contador<10;contador ++){
   digitalWrite(pinledArry[contador],HIGH);
    delay(300);
    // Iniciamos la secuencia desde el led 2 (posición 0) hasta el led 11 (posición 9)
    digitalWrite(pinledArry[contador],LOW); // Asignamos el contador para la secuencia
   
    }
  }
  if (not botonOFF.isPressed()){
    Serial.print("La serie va hacia la derecha   ");
  Serial.println(estadoSerie2);
    delay(300);
    for(contador=10;contador>0;contador --){
   digitalWrite(pinledArry[contador],HIGH);
    delay(300);
    // Iniciamos la secuencia desde el led 2 (posición 0) hasta el led 11 (posición 9)
    digitalWrite(pinledArry[contador],LOW); // Asignamos el contador para la secuencia
}
  }
}

Prueba así a ver si resulta

#include "GFButton.h" //añadiendo la liberia

 //crear variables para el manejo de los pines
int pinledArry[]={2,3,4,5,6,7,8,9,10,11};
 int pullup=12;// se usará para encender
 int pulldown=13;// se usara para apagar
 int tiempo=300;// Asignamos un tiempo de retardo
int contador=0; //Declaramos un contador
int contador2=0;
int pinledArry2[]={11,10,9,8,7,6,5,4,3,2};
int estadoSerie;
int estadoSerie2;

 //Crear objeto para el manejo del pin del botón de entrada
GFButton botonOFF(pulldown);
GFButton botonON(pullup); 
 
void setup() {
  for(contador=0;contador<10;contador ++){
  pinMode(pinledArry[contador],OUTPUT); // Asignamos con el ciclo for un contador y los 10 pines del 2 al 11 los asignamos como salida
  }
  
//  for(contador2=0;contador2<10;contador2 ++){
//  pinMode(pinledArry2[contador2],OUTPUT); // Asignamos con el ciclo for un contador y los 10 pines del 2 al 11 los asignamos como salida
//  }
  Serial.begin(9600); //Iniciamos la conexion con el monitor serial
  
}

void loop() {
  
//  estadoSerie=digitalRead(pullup);
//  estadoSerie2=digitalRead(pulldown);
  
  if (botonON.isPressed()){
    Serial.print("La serie va hacia la izquierda   ");
//  Serial.println(estadoSerie);
    delay(300);
    for(contador=0;contador<10;contador ++){
   digitalWrite(pinledArry[contador],HIGH);
    delay(300);
    // Iniciamos la secuencia desde el led 2 (posición 0) hasta el led 11 (posición 9)
    digitalWrite(pinledArry[contador],LOW); // Asignamos el contador para la secuencia
   
    }
  }
  if (botonOFF.isPressed()){
    Serial.print("La serie va hacia la derecha   ");
//  Serial.println(estadoSerie2);
    delay(300);
    for(contador=10;contador>0;contador --){
   digitalWrite(pinledArry[contador],HIGH);
    delay(300);
    // Iniciamos la secuencia desde el led 2 (posición 0) hasta el led 11 (posición 9)
    digitalWrite(pinledArry[contador],LOW); // Asignamos el contador para la secuencia
    }
  }
}

Saludos

Me sigue saliendo el mismo rebote bro, crees que tengo algo que ver con la instalacion en fisico? No se si se pueda mandar una foto de como esta instalada, la mera verdad soy algo nuevo en esto, tampoco te voy a decir que muy nuevo por que ya entiendo algunas cosas xD

Hey, ya pude resolver el error que tuve, si alguien esta haciendo un programa relacionado a este no dude en contactarme

Lo justo es que lo compartas aquí, ¿no te parece?

Saludos

Si lo quiero compartir aqui, pero tengo compañeros que checan esta pagina y si encuentran el codigo me lo van a plagiar
El maestro me va a anular el trabajo, puedo subirlo en un rato

Entiendo, igual yo ya vi lo que modificaste (dejaste de usar...), te aviso que se puede ver. :woozy_face:

Básicamente reescribiste el código haciendo las cosas de otra forma. Bien por eso.

Saludos

1 Like