top of page

Explorando os Pinos Digitais - Arduino Uno

  • Foto do escritor: automatelabonline
    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.

Pinos Digitais Arduino Uno

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.

Projeto com Arduino Uno

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.

#define PIN_LED 6     // Define o pino do LED
#define PIN_BUTTON 7  // Define o pino do botão

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


bottom of page