MÉTRICAS
Valores ao vivo
Distância, leitura dos sensores, erro do PID, velocidade dos motores. Qualquer número do seu código vira um gráfico.
ANX_VALUESeu robô, em tempo real.
Coloque algumas linhas no código do robô, conecte o cabo USB e veja sensores, decisões e tempos de execução enquanto ele roda. Menos achismo, mais evidência para os ajustes da OBR e da FLL.
DISTÂNCIA
24.0cm
LOOP
528/s
MODO
seguindo_linha
/ O QUE O ANATIX MOSTRA
Cada macro responde a uma pergunta diferente sobre o desempenho. Use só as que fizerem sentido para a sua estratégia.
MÉTRICAS
Distância, leitura dos sensores, erro do PID, velocidade dos motores. Qualquer número do seu código vira um gráfico.
ANX_VALUEEVENTOS
Marque na linha do tempo quando o robô perdeu a linha, achou um obstáculo ou entrou na área de resgate.
ANX_EVENTESTADOS
Acompanhe a máquina de estados: seguindo linha, desviando, resgatando. Só é enviado quando muda.
ANX_STATETEMPOS
Cronometre trechos do código e descubra qual leitura ou cálculo está deixando o robô lento.
ANX_SCOPESAÚDE
Loops por segundo, pior tempo de loop e RAM livre, sem escrever nenhuma linha a mais.
automáticoLEVEZA
Nada é enviado até o computador pedir. Se o cabo sair, a telemetria desliga sozinha e o robô segue normal.
ANX_UPDATE/ COMO FUNCIONA
Baixe o repositório e adicione na Arduino IDE ou no PlatformIO.
Inclua o Anatix e coloque as macros ANX_ nos pontos que você quer observar.
Com o robô no USB, o Anatix recebe os dados e mostra o desempenho em tempo real.
/ COMO USAR
As linhas destacadas são as do Anatix. O resto é o código que o seu robô já tem.
#include <Anatix.h> void setup() { Serial.begin(115200); ANX_BEGIN(Serial, "MeuRobo");} void loop() { ANX_UPDATE(); // sempre no início float dist = lerUltrassom(); ANX_VALUE("distancia_cm", dist); if (dist < 10) { ANX_STATE("modo", "desviando"); ANX_EVENT("obstaculo"); } else { ANX_STATE("modo", "seguindo_linha"); }}void loop() { ANX_UPDATE(); { ANX_SCOPE("pid"); // mede o tempo deste bloco float erro = lerErroLinha(); float correcao = kp * erro + kd * (erro - erroAnterior); erroAnterior = erro; moverMotores(BASE + correcao, BASE - correcao); ANX_VALUE("pid_erro", erro); ANX_VALUE("pid_correcao", correcao); } ANX_VALUE_EVERY("bateria_v", lerBateria(), 1000);}// Na versão de competição, uma linha desliga tudo:#define ANATIX_DISABLE#include <Anatix.h> // As macros ANX_ continuam no código,// mas não geram nenhuma instrução na placa.| ANX_BEGIN(porta, nome) | Inicia o Anatix na porta serial |
| ANX_UPDATE() | Obrigatório, uma vez por loop |
| ANX_VALUE(nome, valor) | Envia um número (int, long, float) |
| ANX_VALUE_EVERY(nome, valor, ms) | Idem, com limite de frequência |
| ANX_EVENT(nome) | Marca um evento na linha do tempo |
| ANX_EVENT_DATA(nome, n) | Evento com um número junto |
| ANX_STATE(máquina, estado) | Estado atual; só envia quando muda |
| ANX_SCOPE(nome) | Cronometra o bloco { } onde está |
| ANX_SECTION_BEGIN / END(nome) | Cronometra um trecho manualmente |
| ANX_LOG(texto) | Mensagem de texto livre |
Nomes e estados são textos fixos entre aspas e sem vírgulas. Eles ficam na memória Flash e não gastam RAM.
/ POR DENTRO DO CABO
Dá para ler até no Monitor Serial: envie ANX PING a 115200 baud e as mensagens começam a chegar. O checksum garante que nenhum dado corrompido entre na análise.
/ ONDE PEGAR
git clone https://github.com/ohthias/Anatix_C.git Anatixlib_deps = https://github.com/ohthias/Anatix_C.git/ DÚVIDAS
Sem o cabo conectado, cada macro vira só uma verificação rápida. Conectado, o Anatix nunca espera a serial: se o buffer estiver cheio, o dado é descartado e contado, em vez de travar o loop.
Pode, porque sem cabo nada é transmitido. Se preferir zerar qualquer custo, coloque #define ANATIX_DISABLE antes do #include e todas as macros somem da compilação.
Uno, Nano, Mega, Leonardo, ESP32, ESP8266, RP2040, SAMD e outras placas com Serial. No Uno e no Nano, use ANX_VALUE_EVERY nas métricas que não precisam de todas as amostras.
Sim. Abra o Monitor Serial a 115200 baud, envie ANX PING e as mensagens começam a chegar. Elas param 2 segundos depois do último PING.
Não. As mensagens do Anatix têm um formato próprio e o resto aparece como console. Se você também lê comandos pela Serial, use Anatix.setLineHandler para receber as linhas que não são do Anatix.
Baixe a biblioteca, marque o código e leve evidências para cada ajuste. Combine com o LabTest para registrar e comparar as execuções.