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
- Limpar tela
- Voltar cursor ao topo
- Reescrever informações
- 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:
- https://patorjk.com/software/taag/
- http://www.figlet.org/
- https://textkool.com/en/ascii-art-generator
- 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