Perguntas frequentes sobre ESP32

Erros de código do ESP32: conversões e compilação

// code errors · faq

Arquivado em: ESP32 · Erros de código · Atualizado em agosto de 2026

Erros de conversão, mensagens de pânico e sketches que compilam mas mentem — o texto de erro do ESP32 é seco, mas cada mensagem aponta para uma correção específica. O que os erros comuns significam e o que mudar primeiro.

Não consigo converter bytearray para int no ESP32?

No MicroPython, int.from_bytes(bytes, ‘little’) é a função que você procura — um bytearray é um iterável de bytes, não um número. Em C, o mesmo formato de erro significa que você está atribuindo um array uint8_t a um int; copie o valor para fora em vez disso. Pesquise “can’t convert bytearray to int esp32” e metade dos tópicos é parsing UART em MicroPython, a outra metade é leitura de struct em C. Cole o sketch que falha no MCP do simulador e ele roda o erro para você.

O que significa “Guru Meditation Error”?

É o cabeçalho de pânico — o chip bateu numa exceção e imprimiu um backtrace antes de resetar. O texto depois dele, como “core 1 panic” mais um endereço, diz onde. As linhas do backtrace são as funções que estavam rodando; leia de baixo para cima, porque o pânico dispara na função chamada por último.

Como decodificar um backtrace?

Cole os endereços no addr2line, ou deixe a ferramenta fazer — o idf.py monitor decodifica sozinho, e o PlatformIO faz o mesmo. Uma linha resolvida como 0x400d1234: loop() at sketch.ino:42 nomeia o ponto exato. Na Arduino IDE você decodifica na mão.

Por que meu ESP32 reinicia em loop?

Leia a última saída serial — o chip imprime por que morreu, toda vez. Um loop de reboot é um pânico, um brownout ou um reset de watchdog, e a mensagem diz qual. Brownout quer uma fonte melhor; watchdog quer uma tarefa que libere a CPU. O FAQ de debug separa os três casos por sintoma.

O que é “exit status 1”?

É o invólucro genérico de falha de build do Arduino — o erro real fica algumas linhas acima, normalmente a primeira linha “error:”. Corrija o primeiro erro e a cascata costuma se dissolver. “Exit status 1” sozinho nunca é o problema; é o resumo. Se o erro aponta para um header que você nunca tocou, atualize a biblioteca.

Por que meu inteiro fica sempre zero depois de ler um sensor?

Três causas clássicas: divisão de inteiros (5/2 é 2 em C), ler o ADC antes de ele estabilizar, e texto serial chegando como “42n” que o atoi() interpreta errado. Imprima o valor cru primeiro — ele responde qual é em dez segundos. Eu queimei uma hora com isso num DHT22 mês passado.

Por que toInt() retorna 0 numa entrada válida?

toInt() falha em silêncio — lixo entra, zero sai, sem erro nenhum. Verifique a string com isDigit() ou apare primeiro; um newline no final quebra mais vezes do que acerta. O mesmo vale para atoi() em C: valide a string antes de confiar no número.

O que é um stack overflow no ESP32?

É o canário — o chip detecta corrupção de stack e entra em pânico com “stack canary” no trace. Recursão profunda e arrays locais grandes são a origem usual; mova buffers para static ou heap, e aumente o tamanho da stack no xTaskCreate. O FAQ por baixo do capô mapeia o layout de memória que explica o porquê.

Erro de compilação vs erro de linker — qual é a diferença?

Erros de compilação vivem dentro de um arquivo: sintaxe, tipos, nomes não declarados. Erros de linker são peças faltando: “undefined reference to” significa que a função não existe em lugar nenhum ou a biblioteca não está linkada. A primeira palavra da linha de erro diz a fase, e a fase diz onde procurar.

Por que o erro aponta para uma linha que parece certa?

Compiladores reportam onde notaram, não onde o problema começou — normalmente uma chave ou ponto e vírgula faltando algumas linhas acima. Volte de trás para frente a partir da linha marcada, e ligue a saída verbose da IDE para ver a cadeia completa.

Os projetos deste tópico rodam direto no simulador gratuito do sensbench: circuito pré-montado, firmware incluído, sem conta e sem instalação.

Leave a Reply

Your email address will not be published. Required fields are marked *