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.