Variable Static no funciona [SOLUCIONADO]

Buenos días a todos, ¿como están?

Verán, estoy haciendo un temporizador (librería "Time Alarm" del arduino IDE) que cada cierto tiempo debe de escribirme un mensaje en el monitor serial. Necesito que el mensaje cambie cada vez que se llame la función, por lo que estoy utilizando una variable estática que cambiara su valor y varios If para que el mensaje cambie según el valor de dicha variable.

void Repeats(){
  static int X = 0;
  X + 10;
  
  if(X = 10){Serial.println("Hola");}
  
  else if(X = 20){Serial.println("como");}
  
  else if(X = 30){Serial.println("estas?");}
  
  Serial.println(X);
  return;   
  }

Según tengo entendido, una variable estática se declara solo la primera vez que se ejecuta la función y a partir de ese punto empieza a guardar su valor y los cambios hechos al mismo durante el resto del programa, sin embargo, esto no esta pasando, puesto que cada vez que la función se ejecuta la variable vuelve a tomar su valor inicial. Esto provoca que solo se cumpla el primer "if" y que se imprima el primer mensaje una y otra vez.

Les agradecería muchísimo su ayuda, he buscando por internet pero solo consigo información sobre como usar variables estáticas, he estado corrigiendo según esta información pero no logró hacer que funcione y ya no se que hacer. Mi arduino es un Mega 2560.

Un saludo para todos, y de antemano muchas gracias por su ayuda.

Gracias ardumyth, trataré de hacerlo de esa forma a ver que tal me va.

Lo que pasa es que según he leído la variable asume el valor declarado una sola vez, incluso la documentación (na cual ya había leído antes) lo menciona cuando dice "Variables declared as static will only be created and initialized the first time a function is called." (Las variables declaradas como "static" solo son creadas e inicializadas la primera vez que una función es llamada)

De hecho para hacer mi código me basé en este (Disponible en :El ámbito de las variables en Arduino | Tienda y Tutoriales Arduino)

void loop()
   {  if ( control)
         {   Funcion1 (); // muestra 0
             Funcion1 (); // muestra 1
             Funcion1 (); // muestra 2
         }
      control = false ; 
   }
void Funcion1 ()
   {  static int x = 0;          // Declaramos x como static
      Serial.println(x);
      x = x + 1;
   }

Teniendo (al menos en teoría), este resultado:

Arsaeus el problema no es el uso que haces del static. Funciona como crees que lo ha de hacer. Esa parte la tenes bien. El problema es el = que pones en las condiciones de los if. Has de poner == (doble igual).

if (x == 10) {

Muchas gracias Absoluto (que de ignorante no tienes nada xd), en cuanto pueda probaré cambiando los if como dices a ver si me funciona. Saludos, gracias de nuevo.

@ArduMyth Igualmente tu respuesta me resulto útil, no te preocupes, seguro la tome como referencia para otra cosa que necesite hacer c: Igualmente todos estamos acá para aprender.

Probaré de las 2 formas, si funciona (o no) pondré aquí mis resultados.

Edito:

Ya me funcionó, el doble igual era el priblema. Muchas gracias a los 2 por su ayuda.