necesito ayuda con codigo por favor (SOLUCIONADO)

buenos días. soy nuevo en el foro y en arduino. tengo 2 códigos los cuales necesito usar para mi auto de carreras. son contadores de 7 segmentos con dos botones + y - los cuales reforme a mi gusto

voy a usarlos de la siguiente manera

control de tracción variable. y control de largada variable tambien .uno contando de 0 a 10 cada click enciende un led y apaga el anterior. cuando llega al 10 si seguimos presionando + . vuelve al 0 . y bise versa . esto al disminuir el voltaje con resistencias. obtengo diferentes voltajes de 1 a 5 volts para alterar los valores de control de tracción y no usar un potenciometros sino, 2 botones

si alguien tiene una mejor idea. bienvenida sea

y el otro es igual pero de 7 este es para la caja de cambios secuencial seria R N 1 2 3 4 5 . cuenta + y- cuando llega al 7 es su máximo y no supera por mas que sigamos presionando y vise versa

hasta ahí perfecto todo

mi problema es el siguiente el contador de 0 a 7. necesito que cuando el botón este presionado sin soltarlo. no siga contando sino que con un click constante . cuente solo 1 valor

el los códigos son los siguientes

de 0 a 7 . con stop en 0 y 7

MODIFICABLE HASTA 10

int numero = 0; 
int clickBoton1 = 0; 
int clickBoton2 = 0; 
boolean pulsadorON=false;
void setup() {                 

  pinMode(2, INPUT); 
  pinMode(3, INPUT); 
  pinMode(22, OUTPUT); 
  pinMode(23, OUTPUT); 
  pinMode(24, OUTPUT); 
  pinMode(25, OUTPUT); 
  pinMode(26, OUTPUT); 
  pinMode(27, OUTPUT); 
  pinMode(28, OUTPUT); 
  pinMode(29, OUTPUT);   

} 


void loop() { 
   
  clickBoton1 = digitalRead(2); {
   }
  clickBoton2 = digitalRead(3); 


  if (clickBoton1 == HIGH and numero < 6) { 
    numero = numero + 1; 
    delay(100);
 
  } 

  if (clickBoton2 == HIGH and numero > 0) { 
    numero = numero - 1; 
    delay(100);
    
  } 
  
  
  switch (numero) { 
    case 0: 
      limpiar(); 
      cero();    
      break; 
    case 1: 
      limpiar(); 
      uno();  
      break; 
    case 2: 
      limpiar(); 
      dos();  
      break; 
    case 3: 
      limpiar(); 
      tres();  
      break; 
    case 4: 
      limpiar(); 
      cuatro();  
      break; 
    case 5: 
      limpiar(); 
      cinco();  
      break; 
    case 6: 
      limpiar(); 
      seis();  
      break; 
    case 7: 
      limpiar(); 
      siete();  
      break; 
    case 8: 
      limpiar(); 
      ocho();  
      break; 
    case 9: 
      limpiar(); 
      nueve();  
      break; 
     
  } 

  delay(100); 
   


} 

void cero(){ 
  digitalWrite(22,HIGH); 
  digitalWrite(23,LOW); 
  digitalWrite(24,LOW); 
  digitalWrite(25,LOW); 
  digitalWrite(26,LOW); 
  digitalWrite(27,LOW); 
  digitalWrite(28,LOW); 
  digitalWrite(29,LOW); 
} 

void uno(){ 
  digitalWrite(22,LOW); 
  digitalWrite(23,HIGH); 
  digitalWrite(24,LOW); 
  digitalWrite(25,LOW); 
  digitalWrite(26,LOW); 
  digitalWrite(27,LOW); 
  digitalWrite(28,LOW); 
  digitalWrite(29,LOW); 
} 
void dos(){ 
  digitalWrite(22,LOW); 
  digitalWrite(23,LOW); 
  digitalWrite(24,HIGH); 
  digitalWrite(25,LOW); 
  digitalWrite(26,LOW); 
  digitalWrite(27,LOW); 
  digitalWrite(28,LOW); 
  digitalWrite(29,LOW); 
} 
void tres(){ 
  digitalWrite(22,LOW); 
  digitalWrite(23,LOW); 
  digitalWrite(24,LOW); 
  digitalWrite(25,HIGH); 
  digitalWrite(26,LOW); 
  digitalWrite(27,LOW); 
  digitalWrite(28,LOW); 
  digitalWrite(29,LOW); 
} 
void cuatro(){ 
  digitalWrite(22,LOW); 
  digitalWrite(23,LOW); 
  digitalWrite(24,LOW); 
  digitalWrite(25,LOW); 
  digitalWrite(26,HIGH); 
  digitalWrite(27,LOW); 
  digitalWrite(28,LOW); 
  digitalWrite(29,LOW); 
} 
void cinco(){ 
  digitalWrite(22,LOW); 
  digitalWrite(23,LOW); 
  digitalWrite(24,LOW); 
  digitalWrite(25,LOW); 
  digitalWrite(26,LOW); 
  digitalWrite(27,HIGH); 
  digitalWrite(28,LOW); 
  digitalWrite(29,LOW);  
} 
void seis(){ 
  digitalWrite(22,LOW); 
  digitalWrite(23,LOW); 
  digitalWrite(24,LOW); 
  digitalWrite(25,LOW); 
  digitalWrite(26,LOW); 
  digitalWrite(27,LOW); 
  digitalWrite(28,HIGH); 
  digitalWrite(29,LOW); 

} 
void siete(){ 
  digitalWrite(22,LOW); 
  digitalWrite(23,LOW); 
  digitalWrite(24,LOW); 
  digitalWrite(25,LOW); 
  digitalWrite(26,LOW); 
  digitalWrite(27,LOW); 
  digitalWrite(28,LOW); 
  digitalWrite(29,HIGH); 

} 
void ocho(){ 

  digitalWrite(22,LOW); 
  digitalWrite(23,LOW); 
  digitalWrite(24,LOW); 
  digitalWrite(25,LOW); 
  digitalWrite(26,LOW); 
  digitalWrite(27,LOW); 
  digitalWrite(28,LOW); 
  digitalWrite(29,LOW);  
} 
void nueve(){ 

  digitalWrite(22,LOW); 
  digitalWrite(23,LOW); 
  digitalWrite(24,LOW); 
  digitalWrite(25,LOW); 
  digitalWrite(26,LOW); 
  digitalWrite(27,LOW); 
  digitalWrite(28,LOW); 
  digitalWrite(29,LOW); 
} 

void limpiar(){ 
  digitalWrite(22,LOW); 
  digitalWrite(23,LOW); 
  digitalWrite(24,LOW); 
  digitalWrite(25,LOW); 
  digitalWrite(26,LOW); 
  digitalWrite(27,LOW); 
  digitalWrite(28,LOW); 
  digitalWrite(29,LOW); 
}

de 0 a 10 con loop .

int A = 22;
int B = 23;
int C = 24;
int D = 25;
int E = 26;
int F = 27;
int G = 28;
int H = 29;
int I = 30;
int J = 31;
int switchUpPin = 2;
int switchDownPin = 3;
int counter = 0;
int buttonUpState = 0;
int lastButtonUpState = 0;
int buttonDownState = 0;
int lastButtonDownState = 0;
long downTime = -1;         // time the button was pressed down
long upTime = -1;           // time the button was released
boolean ignoreUp = false;   // whether to ignore the button release because the click+hold was triggered
boolean waitForUp = false;        // when held, whether to wait for the up event
boolean holdEventPast = false;    // whether or not the hold event happened already
boolean longHoldEventPast = false;// whether or not the long hold event happened already
int checkButton() {    
   int event = 0;
boolean longPressActive = false;
   }
void setup() 
{
  Serial.begin(9600);
  
  pinMode(A, OUTPUT);
  pinMode(B, OUTPUT);
  pinMode(C, OUTPUT);
  pinMode(D, OUTPUT);
  pinMode(E, OUTPUT);
  pinMode(F, OUTPUT);
  pinMode(G, OUTPUT);
  pinMode(J, OUTPUT);
  pinMode(H, OUTPUT);
  pinMode(I, OUTPUT);
  

}

void loop() 
{
  buttonUpState = digitalRead(switchUpPin);
  buttonDownState = digitalRead(switchDownPin);
    // Button pressed down

       downTime = millis();
       ignoreUp = false;
       waitForUp = false;
    
       holdEventPast = false;
       longHoldEventPast = false;
       


  if (buttonUpState != lastButtonUpState) 
  {
    if (buttonUpState == HIGH) 
  
   
    {
      if(counter == 9)
      {
        counter = -1;
        
      }
      counter++;
      Serial.println(counter);
      changeNumber(counter);
      delay(100);
      
    }
    else
    {
        Serial.println("OFF");
    }
   delay(50);
  }


  if (buttonDownState != lastButtonDownState) 
  {
    if (buttonDownState == HIGH) 
    {
      if(counter == 0)
      {
        counter = 10;
      }
      counter--;
      Serial.println(counter);
      changeNumber(counter);
      delay(100);
    }
    else
    {
        Serial.println("OFF");
    }
   delay(50);
  }
  changeNumber(counter);
}





void changeNumber(int buttonPress)
{
  switch (buttonPress)
  {
    //number 0
    case 0:
      digitalWrite(A, HIGH);
      digitalWrite(B, LOW);
      digitalWrite(C, LOW);
      digitalWrite(D, LOW);
      digitalWrite(E, LOW);
      digitalWrite(F, LOW);
      digitalWrite(G, LOW);
            digitalWrite(H, LOW);
      digitalWrite(I, LOW);
            digitalWrite(J, LOW);
      break;
    //number 1
    case 1:
      digitalWrite(A, LOW);
      digitalWrite(B, HIGH);
      digitalWrite(C, LOW);
      digitalWrite(D, LOW);
      digitalWrite(E, LOW);
      digitalWrite(F, LOW);
      digitalWrite(G, LOW);
            digitalWrite(H, LOW);
      digitalWrite(I, LOW);
       digitalWrite(J, LOW);
      break;
    //number 2
    case 2:
      digitalWrite(A, LOW);
      digitalWrite(B, LOW);
      digitalWrite(C, HIGH);
      digitalWrite(D, LOW);
      digitalWrite(E, LOW);
      digitalWrite(F, LOW);
      digitalWrite(G, LOW);
            digitalWrite(H, LOW);
      digitalWrite(I, LOW);
       digitalWrite(J, LOW);
      break;
    //number 3
    case 3:
      digitalWrite(A, LOW);
      digitalWrite(B, LOW);
      digitalWrite(C, LOW);
      digitalWrite(D, HIGH);
      digitalWrite(E, LOW);
      digitalWrite(F, LOW);
      digitalWrite(G, LOW);
            digitalWrite(H, LOW);
      digitalWrite(I, LOW);
       digitalWrite(J, LOW);
      break;
    //number 4
    case 4:
      digitalWrite(A, LOW);
      digitalWrite(B, LOW);
      digitalWrite(C, LOW);
      digitalWrite(D, LOW);
      digitalWrite(E, HIGH);
      digitalWrite(F, LOW);
      digitalWrite(G, LOW);
            digitalWrite(H, LOW);
      digitalWrite(I, LOW);
       digitalWrite(J, LOW);
      break;
    //number 5
    case 5:
      digitalWrite(A, LOW);
      digitalWrite(B, LOW);
      digitalWrite(C, LOW);
      digitalWrite(D, LOW);
      digitalWrite(E, LOW);
      digitalWrite(F, HIGH);
      digitalWrite(G, LOW);
            digitalWrite(H, LOW);
      digitalWrite(I, LOW);
       digitalWrite(J, LOW);
      break;
    //number 6
    case 6:
      digitalWrite(A, LOW);
      digitalWrite(B, LOW);
      digitalWrite(C, LOW);
      digitalWrite(D, LOW);
      digitalWrite(E, LOW);
      digitalWrite(F, LOW);
      digitalWrite(G, HIGH);
            digitalWrite(H, LOW);
      digitalWrite(I, LOW);
       digitalWrite(J, LOW);
      break;
    //number 7
    case 7:
      digitalWrite(A, LOW);
      digitalWrite(B, LOW);
      digitalWrite(C, LOW);
      digitalWrite(D, LOW);
      digitalWrite(E, LOW);
      digitalWrite(F, LOW);
      digitalWrite(G, LOW);
            digitalWrite(H, HIGH);
      digitalWrite(I, LOW);
       digitalWrite(J, LOW);
      break;
          //number 8
    case 8:
      digitalWrite(A, LOW);
      digitalWrite(B, LOW);
      digitalWrite(C, LOW);
      digitalWrite(D, LOW);
      digitalWrite(E, LOW);
      digitalWrite(F, LOW);
      digitalWrite(G, LOW);
      digitalWrite(H, LOW);
      digitalWrite(I, HIGH);
       digitalWrite(J, LOW);
      break;
        //number 9
          case 9:
      digitalWrite(A, LOW);
      digitalWrite(B, LOW);
      digitalWrite(C, LOW);
      digitalWrite(D, LOW);
      digitalWrite(E, LOW);
      digitalWrite(F, LOW);
      digitalWrite(G, LOW);
      digitalWrite(H, LOW);
      digitalWrite(I, LOW);
       digitalWrite(J, HIGH);

  }
}

Los pulsadores en pin 2 y 3 tienen cada uno una resistencia pull-down y entan conectador entre el pin 2 o 3 y +5V ?

Kike_GL:
Los pulsadores en pin 2 y 3 tienen cada uno una resistencia pull-down y entan conectador entre el pin 2 o 3 y +5V ?

exacto . seria algo asi

SOLUCIONADO .

//Declaracion de pines
int A = 22;
int B = 23;
int C = 24;
int D = 25;
int E = 26;
int F = 27;
int G = 28;
int H = 29;
int I = 30;
int J = 31;
int pulsadorAvanzar = 2;
int pulsadorRetroceder = 3;
int presionado1 = 0; //Variable usada para el antirrebote del pulsador avanzar
int presionado2 = 0; //Variable usada para el antirrebote del pulsador disminuir
int contador;   //Variable asociada a un contador

void setup() {

  //Declaracion de entradas/salidas digitales
  pinMode(A, OUTPUT);
  pinMode(B, OUTPUT);
  pinMode(C, OUTPUT);
  pinMode(D, OUTPUT);
  pinMode(E, OUTPUT);
  pinMode(F, OUTPUT);
  pinMode(G, OUTPUT);
  pinMode(J, OUTPUT);
  pinMode(H, OUTPUT);
  pinMode(I, OUTPUT);
  pinMode(pulsadorAvanzar, INPUT);
  pinMode(pulsadorRetroceder, INPUT);

}

void loop() {

  //Secuencia para aumentar o avanzar

  if (digitalRead(pulsadorAvanzar) == LOW)
  {
    presionado1 = 1; //Cambia de estado si se presiona el pulsador
  }
  if (digitalRead(pulsadorAvanzar) == HIGH && presionado1 == 1)
  {
    presionado1 = 0; //Se reinicia la variable del antirrebote
    contador++;     //El contador aumenta en una unidad

    if (contador < 6)       //modificar aca para arrancar de 0 1 2 3 o el led q se desee esdte valor debe ser igual q el de abajo
    {
      contador = 6;       //modificar aca para arrancar de 0 1 2 3 o el led q se desee esdte valor debe ser igual q el de arriba
      delay(100);
    }
  }
 delay(50);
  //Secuencia para disminuir o retroceder

  if (digitalRead(pulsadorRetroceder) == LOW)
  {
    presionado2 = 1;          //Cambia de estado si se presiona el pulsador
  }
  if (digitalRead(pulsadorRetroceder) == HIGH && presionado2 == 1)
  {
    presionado2 = 0;         //Se reinicia la variable del antirrebote
    contador--;             //El contador disminuye en una unidad

    if (contador < 0)       //modificar aca para arrancar de 0 1 2 3 o el led q se desee esdte valor debe ser igual q el de abajo
    {
      contador = 0;       //modificar aca para arrancar de 0 1 2 3 o el led q se desee esdte valor debe ser igual q el de arriba
      delay(100);
    }
  }


  switch (contador)
  {
    //Enciende los LEDs de acuerdo al contador

       //number 0
    case 0:
      digitalWrite(A, HIGH);
      digitalWrite(B, LOW);
      digitalWrite(C, LOW);
      digitalWrite(D, LOW);
      digitalWrite(E, LOW);
      digitalWrite(F, LOW);
      digitalWrite(G, LOW);
            digitalWrite(H, LOW);
      digitalWrite(I, LOW);
            digitalWrite(J, LOW);
      break;
    //number 1
    case 1:
      digitalWrite(A, LOW);
      digitalWrite(B, HIGH);
      digitalWrite(C, LOW);
      digitalWrite(D, LOW);
      digitalWrite(E, LOW);
      digitalWrite(F, LOW);
      digitalWrite(G, LOW);
            digitalWrite(H, LOW);
      digitalWrite(I, LOW);
       digitalWrite(J, LOW);
      break;
    //number 2
    case 2:
      digitalWrite(A, LOW);
      digitalWrite(B, LOW);
      digitalWrite(C, HIGH);
      digitalWrite(D, LOW);
      digitalWrite(E, LOW);
      digitalWrite(F, LOW);
      digitalWrite(G, LOW);
            digitalWrite(H, LOW);
      digitalWrite(I, LOW);
       digitalWrite(J, LOW);
      break;
    //number 3
    case 3:
      digitalWrite(A, LOW);
      digitalWrite(B, LOW);
      digitalWrite(C, LOW);
      digitalWrite(D, HIGH);
      digitalWrite(E, LOW);
      digitalWrite(F, LOW);
      digitalWrite(G, LOW);
            digitalWrite(H, LOW);
      digitalWrite(I, LOW);
       digitalWrite(J, LOW);
      break;
    //number 4
    case 4:
      digitalWrite(A, LOW);
      digitalWrite(B, LOW);
      digitalWrite(C, LOW);
      digitalWrite(D, LOW);
      digitalWrite(E, HIGH);
      digitalWrite(F, LOW);
      digitalWrite(G, LOW);
            digitalWrite(H, LOW);
      digitalWrite(I, LOW);
       digitalWrite(J, LOW);
      break;
    //number 5
    case 5:
      digitalWrite(A, LOW);
      digitalWrite(B, LOW);
      digitalWrite(C, LOW);
      digitalWrite(D, LOW);
      digitalWrite(E, LOW);
      digitalWrite(F, HIGH);
      digitalWrite(G, LOW);
            digitalWrite(H, LOW);
      digitalWrite(I, LOW);
       digitalWrite(J, LOW);
      break;
    //number 6
    case 6:
      digitalWrite(A, LOW);
      digitalWrite(B, LOW);
      digitalWrite(C, LOW);
      digitalWrite(D, LOW);
      digitalWrite(E, LOW);
      digitalWrite(F, LOW);
      digitalWrite(G, HIGH);
            digitalWrite(H, LOW);
      digitalWrite(I, LOW);
       digitalWrite(J, LOW);
      break;
    //number 7
    case 7:
      digitalWrite(A, LOW);
      digitalWrite(B, LOW);
      digitalWrite(C, LOW);
      digitalWrite(D, LOW);
      digitalWrite(E, LOW);
      digitalWrite(F, LOW);
      digitalWrite(G, LOW);
            digitalWrite(H, HIGH);
      digitalWrite(I, LOW);
       digitalWrite(J, LOW);
      break;
          //number 8
    case 8:
      digitalWrite(A, LOW);
      digitalWrite(B, LOW);
      digitalWrite(C, LOW);
      digitalWrite(D, LOW);
      digitalWrite(E, LOW);
      digitalWrite(F, LOW);
      digitalWrite(G, LOW);
      digitalWrite(H, LOW);
      digitalWrite(I, HIGH);
       digitalWrite(J, LOW);
      break;
        //number 9
          case 9:
      digitalWrite(A, LOW);
      digitalWrite(B, LOW);
      digitalWrite(C, LOW);
      digitalWrite(D, LOW);
      digitalWrite(E, LOW);
      digitalWrite(F, LOW);
      digitalWrite(G, LOW);
      digitalWrite(H, LOW);
      digitalWrite(I, LOW);
       digitalWrite(J, HIGH);

  }
}

eh encontrado otro codigo el cual hice unos cambios simples para poder solucionar el problem…

muchas gracias y perdon por la molestia