Introduction: Arduino Tutorial - Digital Vs PWM Output

Neste tutorial iremos demonstrar quais as principais diferenças entre as saídas de sinal digital e as saídas PWM (Pulse With Modelation). Para realçar essas diferenças, iremos mostrar-vos apenas uma montagem com três LED onde serão carregados dois códigos diferentes, pois podemos utilizar estes mesmo pinos do Arduino para funções diferentes.

Em ambos os códigos são utilizados os pinos 9, 10 e 11, mas estes com primeiro código têm a função de saídas digitais, ou seja, tipo ON/OFF, fazendo piscar alternadamente os LED da montagem, no segundo código os mesmos pinos têm a função de PWM, alterando a luminosidade dos LED alternadamente.

Caso queiram saber mais sobre estas e outras funções do Arduíno UNO, vejam as especificações detalhadas na página oficial do Arduíno "https://store.arduino.cc/arduino-uno-rev3".

Também vos deixamos os LINKS dos tutoriais anteriores, onde são explicados estes dois tipos de saídas mais pormenorizadamente:

Arduino Tutorial - Digital Output - LED

https://www.instructables.com/id/Arduino-Tutorial-Digital-Output-LED/

Arduino Tutorial - PWM Output - LED - Monitor Serial

https://www.instructables.com/id/Ardu%C3%ADno-Tutorial-PWM-Output-LED-Monitor-Serial/

Step 1: Montagem

Esta é uma montagem simples, onde são utilizados LED de cores diferentes para podermos verificar e identificar mais facilmente os possíveis erros na montagem, também utilizamos uma Breadboard, de forma a organizar melhor as ligações entre os componentes electrónicos.

Material necessário:

  • 1x Arduíno UNO;
  • 1x Cabo USB;
  • 1x BreadBoard;
  • 3x LED (Vermelho / Verde / Azul);
  • 3x Resistência 1KΩ.

Relembro que os LED só funcionam se directamente polarizados, ficando assim o pino positivo ligado aos pinos escolhidos e o pino negativo ligado ao pino GND do Arduíno (Ver imagens acima). Alem a sua polarização não esquecer também de ligar o LED em serie com uma resistência eléctrica de 1KΩ, evitando assim que estes se danifiquem quando os ligarmos.

Step 2: Código

Com a montagem terminada, carregamos o código na placa do Arduino, no entanto vou realçar a utilização das função "AnalogWrite" e "DigitalWrite", que têm a finalidade de configurar os pinos, como saídas PWM ou digitais (tipo ON/OFF).

Alem destas duas funções é utilizada também a função "For", sendo esta responsável pela selecção do pino a ligar ou desligar.

//O Valor da variável Pino é "X"; 
//Enquanto for menor que 12, executa o código abaixo;
//Depois incrementa 1 ao valor da variável Pino.
for (Pino; Pino < 12; Pino ++) {

	//Colocar aqui o restante código.

}

ou

//O Valor da variável Pino é "X"; 
//Enquanto for menor ou igual que 9, executa o código abaixo; //Depois Subtrai 1 ao valor da variável Pino. for (Pino; Pino >= 9; Pino --) { //Colocar aqui o restante código. }

Código para a função com pinos em sinal digital (tipo ON/OFF):

int Tempo = 100;          //Variável para o tempo de atraso.
int Pino; //Variável para selecção do pino. //Correr a função SETUP apenas uma vez após ser pressionado Reset: void setup() { //Coloca na variável. Pino = 9; //Enquanto a variável Pino, que e igual a 9, for menor que 12, executa o código e depois incrementa +1 ao valor da variavel Pino: for (Pino; Pino < 12; Pino ++) { //Definição do tipo de pino (Saída ou entrada): pinMode(Pino, OUTPUT); } } //Correr a função LOOP repetidamente: void loop() { //Coloca na variável. Pino = 9; //Enquanto a variável Pino, que e igual a 9, for menor que 12, executa o código e depois incrementa +1 ao valor da variável Pino: for (Pino; Pino < 12; Pino ++) { //Liga o LED (HIGH é nível alto): digitalWrite(Pino, HIGH); //Atraso para o próximo passo: delay(Tempo); } //Enquanto a variável Pino, que é igual a 11, for maior ou igual a 9, executa o código e depois subtrai -1 ao valor da variável Pino: for (Pino; Pino >= 9; Pino --) { //Desliga o LED (LOW é nível baixo): digitalWrite(Pino, LOW); //Atraso para o próximo passo: delay(Tempo); } }

A função "While" é responsável pela alteração do valor de brilho dos LED, variando esse valor entre 0 e 255. isto significa em PWM (Ver gráfico acima):

  • 255 = 100%
  • 204 = 80%
  • ≈128 = 50%
  • 51 = 20%
  • 0 = 0%
//Enquanto a variável Brilho for maior que 0, executa o código baixo:
while (Brilho > 0) { //Colocar aqui o restante código. }

Código para a função com os pinos em PWM, alterando o brilho dos LED:

int Tempo = 100;       //Variável para o tempo de atraso.
int Pino; //Variável para selecção do pino. int Brilho; //Variável para a definição do brilho dos LED. //Correr a função SETUP apenas uma vez após ser pressionado Reset: void setup() { //Coloca na variável. Pino = 9; //Enquanto a variável Pino, que e igual a 9, for menor que 12, executa o código e depois incrementa +1 ao valor da variável Pino: for (Pino; Pino < 12; Pino ++) { //Definição do tipo de pino (Saída ou entrada): pinMode(Pino, OUTPUT); } } //Correr a função LOOP repetidamente: void loop() { //Coloca na variável. Pino = 9; //Enquanto a variável Pino, que é igual a 9, for menor que 12, executa o código e depois incrementa +1 ao valor da variavel Pino: for (Pino; Pino < 12; Pino ++) { //Coloca na variável. Brilho = 0; //Enquanto a variável Brilho for menor que 255 executa o código abaixo: while (Brilho < 255 ) { //Coloca no LED o brilho igual à variável: analogWrite(Pino, Brilho); //Atraso para o próximo passo: delay(Tempo); //Incrementa +1 ao valor da variável. Brilho ++; } } //Enquanto a variável Pino, que é igual a 11, for maior ou igual a 9, executa o código e depois subtrai -1 ao valor da variável Pino: for (Pino; Pino >= 9; Pino --) { // Coloca na variável. Brilho = 255; //Enquanto a variável Brilho for maior que 0, executa o código abaixo: while (Brilho > 0) { //Liga o LED com o brilho igual a variável: analogWrite (Pino, Brilho); //Atraso para o próximo passo: delay(Tempo); //Subtrai -1 ao valor da variável. Brilho --; } } }

Caso queiram saber mais ou tenham dúvidas sobre estas e outras referências do código, vejam a sua explicação detalhada no site oficial do Arduíno, através deste Link "https://www.arduino.cc/en/Reference/HomePage".

Procurem os nossos tutoriais acerca do Arduíno, onde explicamos diversas montagens e o funcionamento dos seus componentes, já agora visitem o nosso canal no Youtube, Facebook ou Twitter.

Abraço e bons projectos.

Comments

About This Instructable

133views

8favorites

License:

Bio: Este é um canal para homemakers e DIY onde vai encontrar tutoriais úteis acerca de Electrónica, Arduíno, Robótica e Impressão 3D. Estes têm explicações simples ... More »
More by Crazy Taz Projects:Arduino Tutorial - Digital vs PWM OutputArduíno Tutorial - PWM Output - LED - Monitor SerialArduíno Tutorial - Digital Output – LED
Add instructable to: