0. A Verdade: O `main()` Invisível
Ao contrário do C++ padrão em desktops, o Arduino esconde a função main() do desenvolvedor para simplificar o aprendizado. No entanto, ela existe e é o ponto de entrada real de todo o backend.
O que a IDE não te mostra:
Antes de executar seu código, o backend do Arduino chama a função init() para configurar temporizadores, contadores de PWM e o ADC. Só então ele executa o setup() uma única vez.
O loop() nada mais é do que uma chamada de função dentro de um laço infinito for(;;) ou while(1), que continua rodando até o hardware ser desligado.
// Arquivo real: main.cpp int main(void) { init(); // Configura o Hardware setup(); // Roda seu código inicial for (;;) { loop(); // Repete para sempre if (serialEventRun) serialEventRun(); } return 0; }
1. Anatomia do Hardware
O "backend" físico. Aqui comparamos como diferentes placas gerenciam seus bancos de memória e velocidade.
Comparador de Arquitetura
2. O Pipeline de Compilação
O processo que transforma C++ em sinais elétricos.
3. A Verdade sobre `digitalWrite`
Manipular registradores diretamente é drasticamente mais rápido e eficiente.
DDRB vs PORTB
// Manipulação de Porta (Rápido)
PORTB |= (1 << 0); // Seta bit 0 (Pino 8)
Simulador PORTB
00000000
0x00
4. Protocolos de Comunicação
Formas de onda dos protocolos seriais mais comuns.