O Que Acontece Por Trás do Loop?

Muitos conhecem o setup() e o loop(), mas o verdadeiro poder do Arduino reside no seu "backend": a arquitetura do microcontrolador AVR, o gerenciamento de memória, a manipulação direta de registradores e o processo de compilação.

⚙️

void main() {
  init();
  setup();
  for(;;) loop();
}

O código real escondido pela IDE

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.

UART (Serial)

I2C (TWI)

SPI

Selecione um protocolo à esquerda para visualizar o diagrama de tempo.