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



ASCII Art e Dashboards em Console

Agora vamos combinar tudo: tabela ASCII + códigos VT100 + organização visual.
Aqui começa o nível profissional de uso de console.

Não estamos mais falando de printf() simples, mas de transformar o terminal em uma interface rica, extremamente útil para:

  • Sistemas embarcados via UART
  • Aplicações CLI
  • Ferramentas DevOps
  • Testes automatizados
  • Monitoramento em tempo real

1. Construindo um Mini Dashboard em Console

Vamos criar um painel dinâmico que atualiza sem “rolar a tela”.

Conceito

  1. Limpar tela
  2. Voltar cursor ao topo
  3. Reescrever informações
  4. Repetir

Isso evita poluição visual.


Exemplo em C

#include <stdio.h>
#include <unistd.h>

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

int main() {

    int cpu = 0;
    int temp = 30;

    while (1) {

        printf(CLEAR);
        printf(HOME);

        printf("=== MONITOR DO SISTEMA ===\n\n");

        printf("CPU Usage: ");
        if (cpu < 50)
            printf(GREEN "%d%%\n" RESET, cpu);
        else if (cpu < 80)
            printf(YELLOW "%d%%\n" RESET, cpu);
        else
            printf(RED "%d%%\n" RESET, cpu);

        printf("Temperatura: %d C\n", temp);

        cpu += 10;
        temp += 2;

        if (cpu > 100) cpu = 0;
        if (temp > 80) temp = 30;

        sleep(1);
    }

    return 0;
}

Esse padrão é extremamente útil em firmware que envia dados para um terminal serial.


2. Barra de Progresso Dinâmica

Aqui usamos apenas ASCII imprimível.

Conceito

  • Usar \r (Carriage Return)
  • Reescrever a mesma linha

Exemplo

#include <stdio.h>
#include <unistd.h>

int main() {

    for (int i = 0; i <= 100; i++) {

        printf("\r[");
        int barWidth = 50;

        int pos = (i * barWidth) / 100;

        for (int j = 0; j < barWidth; j++) {
            if (j < pos)
                printf("=");
            else if (j == pos)
                printf(">");
            else
                printf(" ");
        }

        printf("] %d%%", i);
        fflush(stdout);

        usleep(50000);
    }

    printf("\n");
    return 0;
}

Resultado:

[===================>                 ] 45%

Aqui estamos usando:

  • \r (ASCII 13)
  • Caracteres =, >, espaço
  • Atualização sem quebrar linha

3. ASCII Art

ASCII Art é a construção de imagens usando caracteres.

Exemplo simples

  ____  ____  ____ 
 |  _ \|  _ \|  _ \
 | |_) | |_) | |_) |
 |  __/|  __/|  __/
 |_|   |_|   |_|

Esse tipo de arte é útil para:

  • Tela inicial de firmware
  • Assinatura de ferramenta CLI
  • Banner de sistema

4. Criando ASCII Art via Código

Você pode armazenar como string:

const char *banner =
"  ____  ____  ____ \n"
" |  _ \\|  _ \\|  _ \\\n"
" | |_) | |_) | |_) |\n"
" |  __/|  __/|  __/\n"
" |_|   |_|   |_|   \n";

Ou carregar de arquivo.


5. ASCII Art com Cores

Podemos combinar:

printf("\x1B[36m%s\x1B[0m", banner);

Ou usar cores diferentes por linha.

Isso cria um impacto visual forte.


6. Sites para Gerar ASCII Art

Algumas ferramentas excelentes:

  1. https://patorjk.com/software/taag/
  2. http://www.figlet.org/
  3. https://textkool.com/en/ascii-art-generator
  4. https://manytools.org/hacker-tools/convert-images-to-ascii-art/

Para firmware embarcado, o mais usado é o estilo FIGlet.


7. Dicas Profissionais para Logs Ricos

Use padrões visuais consistentes.
Use cores para semântica (verde=ok, amarelo=alerta, vermelho=erro).
Sempre resete a cor após imprimir.
Evite excesso de cores.
Mantenha legibilidade.

Em sistemas críticos, logs precisam ser:

  • Informativos
  • Sintéticos
  • Visualmente organizados
  • Não poluídos
0 0 votos
Classificação do artigo
Inscrever-se
Notificar de
guest
0 Comentários
mais antigos
mais recentes Mais votado
Feedbacks embutidos
Ver todos os comentários

Related Post

0
Adoraria saber sua opinião, comente.x