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) <= 50){
digitalWrite(led, LOW);
} else {
digitalWrite(led, HIGH);
}
}