Estou tendo um incoveniente com o arduino nano e o modulo bluetooth

Basicamente estou programando um pequeno robo semi-humanoide que utiliza de um modulo bluetooth para poder executar comandos pré definidos pelo celular, utilizando de um programa que se chama BlueSPP. Eu fiz uma simples linha que parece não funcionar pelo bluetooth.

if (t250.repeat()) {
      if (som_on_off) {tone(13, notas[random(0, 36)], random(150, 240));}
      AledA = leds[random(0, 3)];
      digitalWrite(AledA, !analogRead(AledA));
    }

Estou tendo problema com esse segundo iff que verifica a variavel som_on_off. O codigo completo até que é grande, tendo por volta de 1100 linhas, que foram separadas em arquivos de cabeçalho .hpp. esta parte do codigo é uma função que se chama fTeatro.hpp que tem por objetivo deixar que o robo "cante", "dance" e pisque os leds de forma simultanea sem utilizar de delays, nem o millis.

#ifndef fTeatro_hpp
#define fTeatro_hpp

#include "var.hpp"

void teatro(coleo movimentos[], uint8_t tamanho, Neotimer timer) {
  uint8_t c{ 0 };

  while (c < tamanho) {
    if (timer.repeat()) {
      if (strcmp(movimentos[c].mov, "cbd") == 0) {
        braco_dir.slowmove(movimentos[c].pos, velocidade);
      }

      else if (strcmp(movimentos[c].mov, "cbe") == 0) {
        braco_esq.slowmove(movimentos[c].pos, velocidade);
      }

      else if (strcmp(movimentos[c].mov, "cod") == 0) {
        ombro_dir.slowmove(movimentos[c].pos, velocidade);
      }

      else if (strcmp(movimentos[c].mov, "coe") == 0) {
        ombro_esq.slowmove(movimentos[c].pos, velocidade);
      }

      else if (strcmp(movimentos[c].mov, "cpd") == 0) {
        perna_dir.slowmove(movimentos[c].pos, velocidade);
      }

      else if (strcmp(movimentos[c].mov, "cpe") == 0) {
        perna_esq.slowmove(movimentos[c].pos, velocidade);
      }

      else if (strcmp(movimentos[c].mov, "ctd") == 0) {
        tornozelo_dir.slowmove(movimentos[c].pos, velocidade);
      }

      else if (strcmp(movimentos[c].mov, "cte") == 0) {
        tornozelo_esq.slowmove(movimentos[c].pos, velocidade);
      }

      
      c++;
    }
    
    if (t250.repeat()) {
      if (som_on_off) {tone(13, notas[random(0, 36)], random(150, 240));}
      AledA = leds[random(0, 3)];
      digitalWrite(AledA, !analogRead(AledA));
    }
  }
}

#endif // fTeatro_hpp

esta é a função completa. Ela funciona perfeitamente quando passo os comandos via linha de comando no serial da ide do arduino (Estou usando a 1.8), porem o codigo não funciona perfeitamente quando passo os comandos via bluetooth. Às vezes tambem, vem por ocorrer de um servo motor em espefico ir para um angulo especifico que não foi programado.

@bolsistakadu , fica muito difícil ajudar só olhando uma parte do código.
Como você está falando que é o BT que não está funcionando, eu sugiro verificar se as chamadas da biblioteca estão ok.
Tente usar outro app para envio de comandos via BT, como o NRFConnect ou NRFToolbox na opção Universal UART ou ainda o Serial Bluetooth Terminal, todos disponíveis para Android.
Se você optar por subir seu código no Git talvez consigamos ajudar mais analisando o código como um todo.
Abraços!