Explorando os Pinos Digitais - Arduino Uno
- automatelabonline
- 20 de fev.
- 4 min de leitura
Atualizado: 21 de fev.
Pinos Digitais do Arduino Uno
O Arduino Uno é uma das placas mais utilizadas entre os entusiastas de prototipagem e eletrônica. Sua versatilidade, acessibilidade e vasta comunidade de apoio fazem do Arduino uma escolha excelente para quem deseja entender de maneira prática os fundamentos da programação e da eletrônica digital.
Um dos primeiros passos para iniciar na programação dessas placas é entender como funcionam as I/Os digitais. As portas digitais correspondem aos terminais 0 a 13 da placa.

Seu comportamento é simples, cada pino pode ser configurado como saída ou entrada e possui dois estados, ativo (HIGH) e inativo (LOW) .
Quando configuradas como saída (OUTPUT), podem ser configuradas para nível lógico baixo (0V) ou nível lógico alto (5V). Com isso, é possível realizar acionamentos simples, como acender um LED por exemplo. Nas saídas digitais, não é possível ter uma tensão intermediária, como 2V. O Arduino consegue apenas configurar a porta para 0V ou 5V.
Quando os pinos digitais são configurados como entradas, a porta é capaz de ler sinais em nível lógico alto ou baixo. Essas entradas são úteis para leitura de botões por exemplo. Existem dois tipos de configuração das entradas digitais, INPUT e INPUT_PULLUP.
Quando configurada como INPUT, a porta terá nível lógico baixo quando nada estiver conectado. Ou seja, sua tensão padrão é 0V. Já quando for configurada como INPUT_PULLUP, seu nível lógico quando desconectada será alto. Esses dois tipos de entrada só se diferem quando estão vazias. Ao conectar algum sensor que forneça uma tensão digital nesses pinos, o comportamento dos dois tipos de portas é o mesmo.
Funções para os Pinos
Configurando os Pinos
Para configurar inicialmente os pinos, utiliza-se a função:
pinMode(PINO, MODO);
Em PINO, escolhe-se a porta que deseja configurar, podendo ser colocado entre 0 e 13. Já em MODO, é escolhido o modo que o pino irá operar. Sendo eles:
OUTPUT: Funciona como Saída Digital, gerando tensões de 0V ou 5V.
INPUT: Funciona como entrada Digital, lendo tensões de 0V e 5V, sua tensão em vazio é de 0V.
INPUT_PULLUP: Funciona como entrada Digital, lendo tensões de 0V e 5V, sua tensão em vazio é de 5V.
Lendo as Entradas Digitais
A função utilizada para fazer a leitura das entradas digitais é
digitalRead(PINO);
PINO representa o número da porta que se deseja configurar. Essa função retorna um inteiro que especifica o estado da porta. É retornado 0 quando a porta está em nível lógico baixo (0V) e 1 quando está em nível lógico alto (5V). Podem ser utilizadas as definições HIGH e LOW para representar os níveis lógicos. Por padrão, HIGH é definido como 1 e LOW como 0.
Configurando as Saídas Digitais
Para enviar uma tensão para as saídas digitais, a função utilizada é
digitalWrite(PINO, ESTADO);
PINO representa o número da porta e ESTADO o nível lógico que se deseja configurar. O estado da porta pode ser configurado utilizando HIGH (para gerar 5V) e LOW (para gerar 0V).
Projeto - Lendo um Botão e Acendendo um LED
Para botar em prática o conhecimento sobre entradas e saídas digitais, vamos criar um projeto utilizando um Arduino Uno, um LED e um botão.
Nesse projeto, o Arduino irá ler um botão e, ao notar que o botão foi apertado, irá acender um LED. Quando o botão é solto, o LED é desligado.
Abaixo há um esquemático da ligação desse projeto. Ao apertar o botão, a porta 7 do Arduino vai para nível lógico alto. Já ao soltar, é trazida de volta para o nível lógico baixo. O pino 6 está conectado a um LED, ao botar esse pino em 5V, o LED irá acender.

Segue abaixo o código desse projeto.
#define PIN_LED 6 // Define o pino do LED
#define PIN_BUTTON 7 // Define o pino do botão
void setup() {
pinMode(PIN_BUTTON, INPUT); // Configura o pino do botão como entrada
pinMode(PIN_LED, OUTPUT); // Configura o pino do LED como saída
}
void loop() {
if(digitalRead(PIN_BUTTON) == HIGH) {
digitalWrite(PIN_LED, HIGH); // Se pino do botão estiver em nível alto, acende o LED
} else {
digitalWrite(PIN_LED, LOW); // Se não, apaga o LED
}
delay(10);
}
Entendo o Código
Logo no inicio do código, temos a definição de duas variáveis. PÌN_LED representa o pino 6, que está conectado ao LED, e PIN_BUTTON o pino 7, conectado ao botão. É interessante sempre usar definições durante a programação, para facilitar caso seja necessário trocar algum pino no meio do projeto.
Logo em seguida, temos a função setup(), onde os dois pinos são configurados como saída (PIN_LED) e entrada (PIN_BUTTON).
void setup() {
pinMode(PIN_BUTTON, INPUT); // Configura o pino do botão como entrada
pinMode(PIN_LED, OUTPUT); // Configura o pino do LED como saída
}
Na função loop(), temos uma condição. Caso a leitura do botão seja HIGH, ou seja, está com 5V, o pino do LED é configurado com 5V também. Isso faz com que o LED acenda. Já caso a leitura do botão for LOW, ou seja, 0V, o pino de LED é configurado para 0V também. Um delay de 10ms é utilizado, pois não é necessário ter uma leitura tão frequente do botão, poupando um pouco de energia.
void loop() {
if(digitalRead(PIN_BUTTON) == HIGH) {
digitalWrite(PIN_LED, HIGH); // Se pino do botão estiver em nível alto, acende o LED
} else {
digitalWrite(PIN_LED, LOW); // Se não, apaga o LED
}
delay(10);
}
Conclusões
Em conclusão, as entradas e saídas digitais do Arduino Uno são componentes essenciais para a criação de uma ampla gama de projetos eletrônicos, desde os mais simples até os mais complexos. Elas permitem que o microcontrolador interaja diretamente com dispositivos externos, como sensores, LEDs, botões e outros componentes, facilitando a implementação de soluções criativas e práticas.
Essas funcionalidades desempenham um papel crucial no aprendizado e na prática da eletrônica digital, sendo um excelente ponto de partida para quem deseja aprofundar seus conhecimentos na área e expandir suas habilidades em projetos interativos e automatizados.
Comments