Cambio de numero al presionar LOGICTOOGLE en secuencia del 0 al 9

Lo que quiero realizar es que al momento de presionar el LOGICTOGGLE me muestre el 0 en el CATHODE luego lo vuelvo a presionar y me aparece el 1 y así consecutivamente, como podría lograrlo? Hasta ahora solo he podido realizar un conteo del 0 al 9. De antemano, muchas gracias.

void setup() {
  for(int i=2;i<9;i++){
    pinMode(i,OUTPUT);
  }
}

void loop() {
  
  //CERO
  digitalWrite(8,1); //a
  digitalWrite(7,1); //b
  digitalWrite(6,1); //c
  digitalWrite(5,1); //d
  digitalWrite(4,1); //e
  digitalWrite(3,1); //f
  digitalWrite(2,0); //g
  delay(900);
  
  //UNO
  digitalWrite(8,0);
  digitalWrite(7,1);
  digitalWrite(6,1);
  digitalWrite(5,0);
  digitalWrite(4,0);
  digitalWrite(3,0);
  digitalWrite(2,0);
  delay(900);
  
  //DOS
  digitalWrite(8,1);
  digitalWrite(7,1);
  digitalWrite(6,0);
  digitalWrite(5,1);
  digitalWrite(4,1);
  digitalWrite(3,0);
  digitalWrite(2,1);
  delay(900);

  //TRES
  digitalWrite(8,1); 
  digitalWrite(7,1); 
  digitalWrite(6,1);
  digitalWrite(5,1);
  digitalWrite(4,0);
  digitalWrite(3,0);
  digitalWrite(2,1);
  delay(900);

  //CUATRO
  digitalWrite(8,0); 
  digitalWrite(7,1); 
  digitalWrite(6,1);
  digitalWrite(5,0);
  digitalWrite(4,0);
  digitalWrite(3,1);
  digitalWrite(2,1);
  delay(900);

  //CINCO
  digitalWrite(8,1); 
  digitalWrite(7,0); 
  digitalWrite(6,1);
  digitalWrite(5,1);
  digitalWrite(4,0);
  digitalWrite(3,1);
  digitalWrite(2,1);
  delay(900);

  //SEIS
  digitalWrite(8,1); 
  digitalWrite(7,0); 
  digitalWrite(6,1);
  digitalWrite(5,1);
  digitalWrite(4,1);
  digitalWrite(3,1);
  digitalWrite(2,1);
  delay(900);

  //SIETE
  digitalWrite(8,1); 
  digitalWrite(7,1); 
  digitalWrite(6,1);
  digitalWrite(5,0);
  digitalWrite(4,0);
  digitalWrite(3,0);
  digitalWrite(2,0);
  delay(900);

  //OCHO
  digitalWrite(8,1); 
  digitalWrite(7,1); 
  digitalWrite(6,1);
  digitalWrite(5,1);
  digitalWrite(4,1);
  digitalWrite(3,1);
  digitalWrite(2,1);
  delay(900);

  //NUEVE
  digitalWrite(8,1); 
  digitalWrite(7,1); 
  digitalWrite(6,1);
  digitalWrite(5,0);
  digitalWrite(4,0);
  digitalWrite(3,1);
  digitalWrite(2,1);
  delay(900);
}

Hola

No hay LOGICTOOGLE en su código. ¿Has probado a añadirlo tú mismo?
Muestra tus esfuerzo, por favor

Este es tu día de suerte.


uint8_t number = 0;

byte digits[10] = { 0b01111110,    // CERO
                    0b00110000,    // UNO
                    0b01101101,    // DOS
                    0b01111001,    // TRES
                    0b00110011,    // CUATRO
                    0b01011011,    // CINCO
                    0b01011111,    // SEIS
                    0b01110000,    // SIETE
                    0b01111111,    // OCHO
                    0b01110011     // NUEVE
                  };

boolean buttonPressed   = false;
boolean previousPressed = false;


void setup()
{

  pinMode(10, INPUT_PULLUP);  // Button pin

  for (int i = 2; i < 9; i++) {
    pinMode(i, OUTPUT);
  }
}

void loop() 
{
  if (digitalRead(10) == LOW)
    buttonPressed = true;
  else
    buttonPressed = false;

  if (buttonPressed && !previousPressed)
  {
    digitalWrite(8, bitRead(digits[number], 6)); //a
    digitalWrite(7, bitRead(digits[number], 5)); //b
    digitalWrite(6, bitRead(digits[number], 4)); //c
    digitalWrite(5, bitRead(digits[number], 3)); //d
    digitalWrite(4, bitRead(digits[number], 2)); //e
    digitalWrite(3, bitRead(digits[number], 1)); //f
    digitalWrite(2, bitRead(digits[number], 0)); //g
 
    delay(100);

    number = (number + 1) % 10;
  }

  previousPressed = buttonPressed;

}
2 Likes

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