Introdução ao uso de entradas e saídas no Arduino

O Arduino é uma plataforma de desenvolvimento de eletrônica open-source que permite aos usuários criar projetos eletrônicos de forma fácil e acessível. Uma das principais vantagens do Arduino é a capacidade de ler e controlar entradas e saídas digitais e analógicas. Neste artigo, mostraremos como ler e controlar entradas e saídas no Arduino utilizando um LED e um sensor LDR como exemplos.

Controle de saídas digitais: LED

O LED (diodo emissor de luz) é um componente eletrônico que emite luz quando corrente elétrica passa através dele. Para controlar um LED no Arduino, precisamos conectá-lo a um pino digital do microcontrolador. No exemplo a seguir, usaremos o LED incorporado do Arduino, conhecido como LED_BUILTIN, conectado ao pino 13.

#define LED 13              // Define o pino do LED como uma constante

void setup() {
  pinMode(LED, OUTPUT);     // Configura o pino do LED como saída
}

void loop() {
  digitalWrite(LED, HIGH);  // Liga o LED
  delay(1000);              // Aguarda 1 segundo
  digitalWrite(LED, LOW);   // Desliga o LED
  delay(1000);              // Aguarda 1 segundo
}

Esse código faz com que o LED pisque intermitentemente a cada 1 segundo. O comando “pinMode (LED, OUTPUT)” configura o pino do LED como uma saída, permitindo que o Arduino envie sinais para controlá-lo. O comando “digitalWrite (LED, HIGH)” liga o LED e o comando “digitalWrite (LED, LOW)” desliga o LED.

Controle de saídas analógicas: LED com fade

Além de controlar saídas digitais, o Arduino também permite controlar saídas analógicas. Isso é feito através do uso de pinos PWM (pulse width modulation), que permitem modificar a largura do pulso de saída para controlar a intensidade de um LED, por exemplo.

#define LED 11                        // Pino digital 11 é PWM (pulse width modulation)

void setup() {
  pinMode(LED, OUTPUT);               // Configurando o pino do LED como saída
}

void loop() {
  // Fade in
  for(int i = 0; i <= 255; i++) {
    analogWrite(LED, i);              // Define a luminosidade do LED
    delay(10);                        // Aguarda 10 milissegundos
  }
  // Fade out
  for(int i = 255; i >= 0; i--) {
    analogWrite(LED, i);              // Define a luminosidade do LED
    delay(10);                        // Aguarda 10 milissegundos
  }
}

Esse código faz com que o LED aumente e diminua sua intensidade de forma gradativa, criando o efeito “fade”. Isso é possível graças à utilização de uma saída PWM (pulse width modulation) no Arduino, que permite controlar a intensidade do sinal elétrico enviado para o LED.

Pulse Width Modulation (PWM) é um método de controlar a intensidade de um sinal elétrico. Ele é usado para controlar a intensidade de um LED, por exemplo, aumentando ou diminuindo a duração do pulso elétrico que é enviado para ele. Ao usar a PWM, é possível controlar a intensidade de uma saída sem precisar alterar a tensão. Isso é útil quando se deseja controlar a intensidade de uma saída de forma precisa, como é o caso de um LED.

Para ler entradas digitais no Arduino, podemos utilizar a função digitalRead(). Ela lê o valor de um pino específico e retorna se ele está em nível alto (HIGH) ou baixo (LOW). Vamos utilizar um sensor LDR como exemplo. O código abaixo mostra como ler o valor do sensor e armazená-lo em uma variável:

int sensorPin = A0; // pino do sensor LDR
int sensorValue; // variável para armazenar o valor lido

void setup() {
  pinMode(sensorPin, INPUT); // configura o pino como entrada
}

void loop() {
  sensorValue = digitalRead(sensorPin); // lê o valor do sensor
  // código para fazer algo com o valor lido
}

Para controlar saídas digitais no Arduino, podemos utilizar a função digitalWrite(). Ela envia um sinal elétrico para um pino específico, configurando-o como nível alto (HIGH) ou baixo (LOW). No exemplo abaixo, vamos utilizar o LED incorporado do Arduino e fazê-lo piscar de forma intermitente a cada 1 segundo:

int ledPin = LED_BUILTIN;          // pino do LED incorporado
int ledState = LOW;                // estado inicial do LED

void setup() {
  pinMode(ledPin, OUTPUT);         // configura o pino como saída
}

void loop() {
  digitalWrite(ledPin, ledState);  // envia o sinal para o LED
  ledState = !ledState;            // inverte o estado do LED
  delay(1000);                     // aguarda 1 segundo
}

Código utilizado na aula no Youtube:

int led = 13; // Variável
int estado = LOW;
int ldr = A0;

void setup() {
  pinMode(led, OUTPUT);
  pinMode(ldr, INPUT_PULLUP);
  Serial.begin(9600);
  digitalWrite(led, HIGH);
}

void loop() {
  Serial.print("Estado do LED: ");
  Serial.print(digitalRead(led));
  Serial.print(" - Leitura do LDR: ");
  Serial.println(analogRead(ldr));

  // Condição para ligar e desligar o LED com inversão do estado
  if (analogRead(ldr) <= 50){
    estado = !estado;
  } else {
    estado = !estado;
  }
}
int led = 13; // Variável
int estado = LOW;
int ldr = A0;

void setup() {
  pinMode(led, OUTPUT);
  pinMode(ldr, INPUT_PULLUP);
  Serial.begin(9600);
  digitalWrite(led, HIGH);
}

void loop() {
  Serial.print("Estado do LED: ");
  Serial.print(digitalRead(led));
  Serial.print(" - Leitura do LDR: ");
  Serial.println(analogRead(ldr));

  // Condição para ligar e desligar o LED com uso do LDR igual ao poste de rua
  if (analogRead(ldr) &lt;= 50){
    digitalWrite(led, LOW);
  } else {
    digitalWrite(led, HIGH);
  }
}

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *