MCU & FPGA microcontroladores Tabela ASCII e VT100: Como Criar Logs Coloridos, Dashboards e ASCII Art no Terminal

Tabela ASCII e VT100: Como Criar Logs Coloridos, Dashboards e ASCII Art no Terminal



Unicode, Box Drawing, Painéis Avançados e Conclusão

Até aqui trabalhamos com ASCII puro (7 bits).
Agora vamos elevar o nível visual utilizando Unicode, mantendo compatibilidade com terminais modernos VT100/ANSI.


1. ASCII vs Unicode no Terminal

ASCII original possui apenas 128 caracteres.
Unicode amplia isso para milhares de símbolos.

Terminais modernos (Linux, macOS, Windows Terminal, PuTTY configurado corretamente) suportam UTF-8 por padrão.

Isso permite usar:

  • Caracteres de caixa (box drawing)
  • Blocos preenchidos
  • Símbolos gráficos
  • Indicadores visuais avançados

Exemplos Unicode úteis:

SímboloCódigoUso
┌ ┐ └ ┘Box cornersMolduras
─ │LinhasEstruturas
Bloco cheioBarras
░ ▒ ▓IntensidadeIndicadores
Check
Erro
Alerta

2. Box Drawing — Criando Tabelas Profissionais

Vamos montar um painel estruturado.

Exemplo em C

#include <stdio.h>

int main() {

    printf("┌──────────────────────────────┐\n");
    printf("│        MONITOR SISTEMA       │\n");
    printf("├──────────────────────────────┤\n");
    printf("│ CPU:         42%%             │\n");
    printf("│ Temperatura: 65°C            │\n");
    printf("│ Status:      ✓ OK            │\n");
    printf("└──────────────────────────────┘\n");

    return 0;
}

Isso já cria uma interface de nível muito superior.


3. Barra de Progresso com Blocos Unicode

ASCII usa = e >.
Unicode permite algo mais elegante.

void progress_bar(int percent) {

    int width = 30;
    int filled = (percent * width) / 100;

    printf("[");

    for (int i = 0; i < width; i++) {
        if (i < filled)
            printf("");
        else
            printf(" ");
    }

    printf("] %d%%\n", percent);
}

Resultado visual muito mais limpo.


4. Painel Dinâmico Estilo Monitor Industrial

Combinando tudo:

#define CLEAR "\x1B[2J"
#define HOME  "\x1B[H"
#define GREEN "\x1B[32m"
#define RED "\x1B[31m"
#define YELLOW "\x1B[33m"
#define RESET "\x1B[0m"

void draw_dashboard(int cpu, int temp) {

    printf(CLEAR);
    printf(HOME);

    printf("┌──────────────────────────────┐\n");
    printf("│        SISTEMA EMBARCADO     │\n");
    printf("├──────────────────────────────┤\n");

    printf("│ CPU: ");
    if (cpu < 60)
        printf(GREEN "%3d%%" RESET, cpu);
    else if (cpu < 85)
        printf(YELLOW "%3d%%" RESET, cpu);
    else
        printf(RED "%3d%%" RESET, cpu);

    printf("\n");

    printf("│ TEMP: %3d°C                 │\n", temp);
    printf("└──────────────────────────────┘\n");
}

Esse tipo de técnica é extremamente útil quando você está:

  • Monitorando um STM32 via UART
  • Debugando um ESP32
  • Criando CLI em Node.js
  • Construindo ferramentas industriais

Você transforma o terminal em uma HMI textual leve.


5. Boas Práticas Profissionais

Sempre use RESET após cores.
Evite cores excessivas.
Não quebre compatibilidade com logs gravados em arquivos.
Permita modo “no color” via flag.
Garanta que o terminal esteja em UTF-8 se usar Unicode.

Em firmware, considere que alguns terminais seriais simples não suportam UTF-8.
Nesses casos, mantenha fallback ASCII.


Conclusão

A tabela ASCII não é apenas uma curiosidade histórica. Ela é a base de toda comunicação textual digital. Quando combinada com os códigos de escape ANSI/VT100, ela transforma o console em uma interface altamente expressiva e funcional.

Logs ricos não são estética: são produtividade.
Cores bem aplicadas aceleram diagnóstico.
Estrutura visual reduz erros de leitura.
Dashboards textuais são leves e portáveis.
ASCII art pode reforçar identidade de ferramentas.

Se você trabalha com sistemas embarcados, CLI, servidores ou automação industrial, dominar esses recursos é um diferencial técnico importante.

O terminal pode ser simples — ou pode ser poderoso.
A diferença está em como você o utiliza.


Referências

Tabela ASCII completa
https://www.asciitable.com/

Documentação ANSI Escape Codes
https://en.wikipedia.org/wiki/ANSI_escape_code

Referência VT100
https://vt100.net/

Gerador de ASCII Art (TAAG)
https://patorjk.com/software/taag/

Projeto FIGlet
http://www.figlet.org/

Unicode Box Drawing
https://unicode-table.com/en/blocks/box-drawing/


Related Post