Contador de 0 a 99 y numeros primos

Hola buenas noches como están?

Necesito una ayuda gigante tengo que hacer un proyecto de realizar un contador de 0 a 99 con dos displays 7 segmentos y un deslizador que de un lado sea el contador de 0 a 99 y del otro sea un contador de numero primos, los contadores de numeros normales y los primos funcionan perfecto, el problema el problema es que la unidad osea el display derecho se ve pero esta titilando y eso se supone que no tiene que pasar, ya intente usando delay() tambien use millis() pero sigue sin funcionar y no puedo encontrar el error, dejo aclarado que no puedo usar librerias solo puedo usar lo que esta en el codigo que ahora les voy a dejar

#define A 10
#define B 11
#define C 5
#define D 6
#define E 7
#define F 9
#define G 8

#define INTERRUPTOR 2
#define UNIDAD A4
#define DECENA A5
#define APAGADOS 0
#define TIMEDISPLAYON 10

// VARIABLES
int numeroPrimo = 2;   // Guarda el valor del numero primo
int numero = 0;        // Guarda el valor del contador  
int tiempo = millis();

// FUNCION: SETUP
// La funcion tiene el objetivo configurar y asignar los pines 

void setup() {
    pinMode(2, INPUT_PULLUP); //INTERRUPTOR
    pinMode(5, OUTPUT);
    pinMode(6, OUTPUT);
    pinMode(7, OUTPUT);
    pinMode(8, OUTPUT);
    pinMode(9, OUTPUT);
    pinMode(10, OUTPUT);
    pinMode(11, OUTPUT);
    pinMode(UNIDAD, OUTPUT);
    pinMode(DECENA, OUTPUT);
    digitalWrite(UNIDAD, 0);
    digitalWrite(DECENA, 0);
    verEnDisplay(0);
}

void loop() {
    int posicionSwitch = digitalRead(INTERRUPTOR);

    switch (posicionSwitch) {
        case 0: {
            if (numero < 100) {
                numero++;
            }
            iniciarContadorEntero(numero);
            delay(1000);
            break;
        }
        case 1: {
            numeroPrimo++;
            if (numeroPrimo > 97) {
                numeroPrimo = 0;
            }
            if (esPrimo(numeroPrimo)) {
                iniciarContadorPrimo(numeroPrimo); // Llamada a la función displayNumeroPrimo
                delay(1000); // Ajusta el tiempo según lo que necesites
        }
    }
  }
}
// FUNCION: VER EN DISPLAY
// La funcion tiene como objetivo el manejo de los segmentos del
// display dependiendo del numero del contador (UNIDAD Y DECENA)        
         
         
void verEnDisplay(int numero){
    apagarDisplays();
    switch (numero){
      case 1:
        digitalWrite(B, HIGH);
        digitalWrite(C, HIGH);
        break;
      case 2:
        digitalWrite(A, HIGH);
        digitalWrite(B, HIGH);
        digitalWrite(E, HIGH);
        digitalWrite(D, HIGH);
        digitalWrite(G, HIGH);
        break;
      case 3:
        digitalWrite(A, HIGH);
        digitalWrite(B, HIGH);
        digitalWrite(C, HIGH);
        digitalWrite(D, HIGH);
        digitalWrite(G, HIGH);
        break;
      case 4:
        digitalWrite(B, HIGH);
        digitalWrite(C, HIGH);
        digitalWrite(F, HIGH);
        digitalWrite(G, HIGH);
        break;
      case 5:
        digitalWrite(A, HIGH);
        digitalWrite(C, HIGH);
        digitalWrite(D, HIGH);
        digitalWrite(F, HIGH);
        digitalWrite(G, HIGH);
        break;
      case 6:
        digitalWrite(A, HIGH);
        digitalWrite(C, HIGH);
        digitalWrite(D, HIGH);
        digitalWrite(E, HIGH);
        digitalWrite(F, HIGH);
        digitalWrite(G, HIGH);
        break;
      case 7:
        digitalWrite(A, HIGH);
        digitalWrite(B, HIGH);
        digitalWrite(C, HIGH);
        break;
      case 8:
        digitalWrite(A, HIGH);
        digitalWrite(B, HIGH);
        digitalWrite(C, HIGH);
        digitalWrite(D, HIGH);
        digitalWrite(E, HIGH);
        digitalWrite(F, HIGH);
        digitalWrite(G, HIGH);
        break;
      case 9:
        digitalWrite(A, HIGH);
        digitalWrite(B, HIGH);
        digitalWrite(C, HIGH);
        digitalWrite(D, HIGH);
        digitalWrite(F, HIGH);
        digitalWrite(G, HIGH);
        break;
    }
}

// FUNCION: INICIAR CONTADOR
// La funcion tiene como objetivo pasarle a los display  
// el numero que debe mostrar a traves de los segmentos 

void iniciarContadorEntero(int numero)
{	
    digitoEncendido(APAGADOS);
    verEnDisplay(numero - (numero / 10) * 10);
    digitoEncendido(UNIDAD);

  
    digitoEncendido(APAGADOS);
    verEnDisplay(numero / 10);
    digitoEncendido(DECENA);

  
}

void iniciarContadorPrimo(int numeroPrimo) {

  digitoEncendido(APAGADOS);
  verEnDisplay(numeroPrimo % 10);  //UNIDADES
  digitoEncendido(UNIDAD);

  
  digitoEncendido(APAGADOS);
  verEnDisplay(numeroPrimo / 10);  //DECENAS
  digitoEncendido(DECENA);

}

// FUNCION: DIGITO ENCENDIDO
// La funcion tiene como objetivo controlar la visualizacion de 
// los displays a traves de la UNIDAD y DECENA, apagando y 
// prendiendo los mismos dependiendo el numero a mostrar
         

void digitoEncendido(int numero) 
{
    if (numero == UNIDAD) 
    {
        digitalWrite(UNIDAD, LOW);
        digitalWrite(DECENA, HIGH);
 		delay(TIMEDISPLAYON);
    }
    else if (numero == DECENA) 
    {
        digitalWrite(UNIDAD, HIGH);
        digitalWrite(DECENA, LOW);
		delay(TIMEDISPLAYON);
    } 
    else 
    {
        digitalWrite(UNIDAD, HIGH);
        digitalWrite(DECENA, HIGH);
		delay(TIMEDISPLAYON);
    }
}

  
void apagarDisplays() {
    digitalWrite(A, LOW);
    digitalWrite(B, LOW);
    digitalWrite(C, LOW);
    digitalWrite(D, LOW);
    digitalWrite(E, LOW);
    digitalWrite(F, LOW);
    digitalWrite(G, LOW);
}

         
//FUNCION: ES PRIMO
bool esPrimo(int numero) {
    if (numero <= 1) {
        return false;
    }

    for (int divisor = 2; divisor * divisor <= numero; ++divisor) {
        if (numero % divisor == 0) {
            return false;
        }
    }

    return true;
}

Please post in English in the English forum section.

Fijate si te sirve de ayuda

Moderador
Pero son todos alumnos en la misma clase?
Como es posible que tengan el mismo esquema?
Casi parece doble posteo.
Voy a investigar.
Mismo código, mismo esquema, todo luce como doble posteo.

La verdad que es la primera vez que veo el posteo que mando deadpool recien y es un proyecto basico de arduino que puede dar cualquier profesor jajajaj no se cual es el problema

Gracias Deadpool por la ayuda, vos tendrías que ser el moderador

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