Saída Digital - Digital Output
Uma saída digital é o recurso que permite ao microcontrolador interagir com o mundo externo, enviando sinais que possuem apenas dois estados possíveis: ligado ou desligado. No ecossistema Arduino, isso significa que a tensão em um pino configurado como saída será alternada entre o nível lógico alto (HIGH), correspondente a 5V (ou 3,3V dependendo do modelo), e o nível lógico baixo (LOW), correspondente a 0V ou terra (GND).
Para configurar e usar uma saída digital, segue-se o procedimento abaixo:
1. Configuração (Função setup)
Antes de utilizar um pino, você deve configurá-lo, para que ele funcione como uma saída. Isso é feito através da função pinMode(pin, mode).
- Parâmetros
- pin: Pino do arduino a ser configurado, no Uno de 0 a 13;
- mode:
INPUT,OUTPUTouINPUT_PULLUP;
- Sintaxe:
pinMode(pino, OUTPUT); - Exemplo:
pinMode(13, OUTPUT);define o pino 13 como saída. - Nota técnica: Internamente, esse comando escreve o valor '1' no bit correspondente do registrador de direção de dados (DDRx) do microcontrolador.
2. Uso (Função loop)
Após a configuração, você controla o estado do pino usando a função digitalWrite(), que define se o dispositivo conectado receberá ou não energia.
- Sintaxe:
digitalWrite(pino, HIGH);para aplicar tensão (5V) e ligar o componente. - Sintaxe:
digitalWrite(pino, LOW);para aplicar a tensão (0V) e desligar o componente.
No lugar das definições HIGH e LOW podem ser usados os valores 1 e 0, respectivamente.
- Sintaxe:
digitalWrite(pino, 1);para aplicar tensão (5V) e ligar o componente. - Sintaxe:
digitalWrite(pino, 0);para aplicar a tensão (0V) e desligar o componente.
Considerações Práticas e Elétricas
- Pinos Disponíveis: O Arduino Uno possui 14 pinos digitais (0 a 13). Recomenda-se evitar o uso dos pinos 0 e 1, pois são utilizados para a comunicação serial com o computador.
- Capacidade de Corrente: Cada pino pode fornecer ou drenar uma corrente de até 40 mA (sendo recomendado manter-se em 20 mA para segurança), o que é suficiente para acender um LED diretamente, desde que se utilize um resistor limitador para não queimar o componente.
- Atividade Blink: O exemplo mais comum de uso é o programa "Blink", que alterna o estado de um LED entre HIGH e LOW em intervalos de tempo definidos pela função
delay(ms).
Ao conectar cargas que exijam correntes maiores, como motores ou lâmpadas de corrente alternada, a saída digital deve ser conectada a um circuito de interface, como um transistor, relé ou driver de corrente.
Blink ou Pisca LED
A atividade Pisca LED ou Blink é considerada o "Hello World!" dos sistemas embarcados e microcontroladores. Ela consiste em um programa básico cujo único objetivo é fazer um LED piscar em uma frequência determinada, servindo como a primeira prova de conceito para verificar se o hardware, o compilador e o processo de gravação estão funcionando corretamente.
A lógica fundamental dessa atividade segue um ciclo de quatro passos executados dentro de um laço infinito:
- Ligar o LED, aplicando o nível lógico alto no pino em que o LED está ligado.
- Aguardar um tempo, geralmente 1 segundo ou 500 ms.
- Desligar o LED, aplicar nível lógico baixo no pino do LED.
- Aguardar novamente o tempo antes de reiniciar o ciclo.
Formas de Implementação
Dependendo da plataforma e linguagem utilizada, a implementação varia:
- No Arduino (Linguagem Wiring/C++): É o exemplo mais popular, disponível nativamente na IDE. Utiliza as funções
pinMode()para configurar o pino como saída,digitalWrite()para alterar o estado edelay()para as pausas. - Em Linguagem C (AVR-GCC): O programador utiliza macros para manipulação direta de bits nos registradores (como
set_biteclr_bit) e bibliotecas de utilitários de tempo, como a<util/delay.h>. - Em Assembly: É a forma mais complexa e próxima do hardware, onde o programador utiliza instruções de baixo nível (como
SBIpara ativar eCBIpara limpar bits) e cria sub-rotinas de atraso decrementando valores em registradores de trabalho.
A implementação do Blink como código introduz um conceito vital nos sistemas embarcados: o loop infinito. Diferente de programas de computador de uso geral que têm um fim, o software de um sistema embarcado deve rodar continuamente enquanto o dispositivo estiver ligado ou até que sofra um reset. Sem esse laço de repetição, o LED mudaria de estado apenas uma vez e o hardware permaneceria inútil.
Seguem algumas montagens de circuito pisca LED em simuladores:
| Figura: Montagem de pisca LED no TinkerCad |
|---|
![]() |
| Fonte: Autor |
| Pisca LED em ligação do pino como fonte (Source) | Pisca LED em ligação do pino como dreno (Sink) |
|---|---|
![]() |
![]() |
Código Fonte
void setup()
{
pinMode(LED_BUILTIN, OUTPUT);
}
void loop()
{
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}


