Problema activando protector pantalla oled

Hola, estoy programando un protector de pantalla que se activa al no mover dos potenciometros por x tiempo, el problema es que al hacer tres lecturas iguales en determinados 3 x tiempos se activa, luego al moverlos y cambiar las lecturas se desactiva pero si mientras esta desactivado muevo los potenciometros al mismo valor que los datos archivados se activa el protector de forma indeceada. No se me ocurre como solucionar el problema, espero que alguien pueda ayedarme, muchas gracias.

// PROTECTOR PANTALLA



    uint8_t  val_1 = potentiometer_1.getValue ();  //Lee potenciometro 1
    uint8_t  val_2 = potentiometer_2.getValue ();  //Lee potenciometro 2
    uint8_t  suma = val_1 + val_2;

    uint8_t compara1;    // Para guardar la suma de Potenciometro 1 + 2 en timer2
    uint8_t compara2;    // Para guardar la suma de Potenciometro 1 + 2 en timer3
    bool active = false;    //Para que no se active antes de los 30 seg de encender el aparato.
   
    if (millis() > 30000) {
      active = true;              // Para que no se active el protector antes de 30 seg.
    }


    if (timer2) {
      compara1 = suma;   // Guarda suma pot 1 + 2 a los 10 seg
    }

    if ( timer3) {

      compara2 = suma;   // Guarda suma pot 1 + 2 a los 20 seg
    }

    if (compara1 == compara2 && compara1 == suma && active == true) {                                //  compara la suma de A + B tomadas a los 10 y 20 seg con la suma de A + B a tiempo real que esta en la variable "suma"
      
   // Protector pantalla activo. 
            
    }

Y ademas si la suma de los potenciometros da igual a la suma guardada pero sumando cualquiera dos otros numeros tambien se activa de forma indeceada.
por ejempplo si esta guardado un 8 que se formo de las lecturas 4 + 4 y el protector de pantalla ya se desactivo pero luego pongo un potenciometro en 6 y otro en 2 trambian se activa.

Para comenzar el manejo que haces de millils() es erróneo.

 if (millis() > 30000) {
      active = true;              // Para que no se active el protector antes de 30 seg.
    }

Esto ocurre cuando han pasado 30 segundos de energizado el arduino no cuando dejas de mover un potenciometro.
EDITO: Veo que eso lo pensaste correctamente. Olvida mi comentario
Para hacerlo con el potenciómetro deberías hacer algo asi
primero esto

 uint8_t  val_1 = potentiometer_1.getValue ();  //Lee potenciometro 1

Es decir en tu clase agrega esto que te indico.
Debe tener asociado un ajuste del tiempo en el que el potenciometro 1 fue movido
Lo mismo con pot2
digamos que tienes dos variables del tipo unsigned long llamadas

usigned long timePot1;
usigned long timePot2;

Esas variables cuando tu actualizas el valor del potenciometro 1 y 2 se ajustan con ell valor de millis().
Entonces ahora si...

cuando consultes

if (millis() - timePot1 > 30000) {
      active1 = true;              // Para que no se active el protector antes de 30 seg.
    }
if (millis() - timePot2 > 30000) {
      active2 = true;              // Para que no se active el protector antes de 30 seg.
    }

Ahora si los dos potes sin en 30 segundos no han sufrido cambios tienes tus condicones para resolver qué hacer

EDITO 2: reviendo mi respuesta me doy cuenta que o esta bien lo que te he sugerido o necesito mas información porque veo como faltantes en el código como para entender toda la idea.
timer2 y timer3 no se de donde salen, etc, etc.

Hola, gracias por responder. Timer uno y dos salen de la biblioteca Control Surface que trabaja con midi. Tiene una funcion timer para que algo ocurra cada tanto tiempo. Cree dos timers pero como se accionan por primera vez en tiempo 0 cree la condicion de posponer 30 segundos para que no ocurra nada por ese tiempo. Los dos timers para la prueba estan puestos a 10 y 20 segundos. esto funciona bien, despues de ese tiempo se activa la comparacion if y teniendo como iguales la lectura en el timer de 10 segundos, en el de 20 y el la lectura constante de 2 potenciometros en valor desde 0-127, el protector se activa. Quiero decir que se comparan tres valores, dos almacenados y uno constante. Si los tres son iguales el protector se activa y lo hace correctamente. El problema empieza al desactivarse ya que como tengo dos valores iguales almacenados (es condicion que sean iguales para activar) y uno constante que ya no es igual porque lo movi para desactivar con uno de los potenciometros, pero asi como lo movi para desactivar si lo muevo a la pocicion que activo anteriormente se vuelve a activar.
Digamos se activo con 5 , 5 y 5, y se desactiva por ej con 5, 5, 4 pero si antes de una nueva lectura de los timers muevo el 4 a 5 con el potenciometro, el protector se vuelve a activar.
Creo que me hace falta algo que le diga que no se vuelva a activar con el mismo valor asta tanto no tener una nueva lectura de los timers.
Espero que se entienda, gracias de nuevo.

Entiendo lo que explicas pero no lo veo en el contexto del código.

Siguiendo tu ejemplo, si pasas de 5, 5, 5 a 5, 5, 4 tu valor para la próxima comparación ya no debería ser 5, 5, 5 sino 5, 5, 4 por lo tanto al volver a 5, 5, 5 no se activaría el protector. ¿Me explico?

Saludos