Utilizando a função PWM dos pinos digitais do Arduino

Olá a todos,

nesse post demonstraremos como utilizar a funcionalidade de PWM presente em algum dos pinos digitais do Arduino. Note que não existe na linguagem de programação do Arduino uma função para escrevermos valores nos pinos analógicos. Conseguimos um efeito semelhante  através de uma técnica chamada PWM (pulse modulation width – modulação de comprimento de pulso).

Essa técnica consiste em criar pulsos em um pino digital que durem um determinado período de tempo. Em diversos circuitos a proporção de tempo em que o pino digital possui o estado LOW ou HIGH funciona como um sinal analógico. Utilizamos essa técnica para controlar a velocidade de motores ou a posição de um servo motor, por exemplo.

Ao contrário dos pinos analógicos, os pinos digitais de PWM possuem resolução de 256 níveis. Portanto o valor 0 significa que o pino ficará sempre em LOW, como um pino desligado. A medida que aumentamos o valor que passamos para a função aumentamos a quantidade de tempo que o pino ficará em HIGH, resultando no efeito de maior tensão no circuito e maior intensidade de luz do LED.

Para demonstrar o uso da técnica de PWM vamos variar a intensidade da luz de um led, mas dessa vez utilizaremos o led de alto brilho. Monte o circuito semelhante ao post Utilizando pinos digitais do Arduino para enviar sinais, porém tome cuidado para conectar o led em um pino digital que possua uma barra ao lado do seu nome. Essa barra indica que o pino possui a função PWM.

Circuito com led de alto brilho.
Circuito com led de alto brilho.

Abaixo temos o esquema elétrico e o desenho elaborado no simulador:

Esquema elétrico do projeto
Esquema elétrico do projeto
Modelo do circuito do projeto
Modelo do circuito do projeto

O primeiro passo no desenvolvimento do programa é a declaração da constante que indica em qual pino o resistor está ligado. Em seguida configure o pino para que ele envie sinais, utilizando a função pinMode.

Código inicial
Código inicial

O último passo é escrever a função loop para variar a intensidade de luz do led através da quantidade de tempo que o pino fica no estado HIGH. Controlamos essa quantidade de tempo pela função analogWrite que recebe como parâmetros o número do pino e o valor proporcional ao tempo que a pino ficará em HIGH.

Código função loop
Código função loop

Para variar o valor que passamos para a função digitalWrite utilizamos um laço do tipo for. Essa instrução incrementa ou decrementa o valor de uma variável automaticamente e executa um código passando esse valor até que um valor limite seja atingido. Nesse ponto é encerrada a execução desse trecho de código. Note que utilizamos duas vezes essa instrução: uma para acender o led e outra para apagá-lo.

Ligue o a placa na energia e em seguida no computador com o cabo USB. Execute o programa e veja a intensidade do led variar.

Onde encontrar alguns dos componentes:

Obrigado pela atenção e até o próximo post!

Um comentário em “Utilizando a função PWM dos pinos digitais do Arduino”

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *