analogWrite()

Descrição

Aciona uma onda PWM (descrição (Em Ingês)) em um pino. Pode ser usada para variar o brilho de um LED ou acionar um motor a diversas velocidades. Após a função analogWrite() ser chamada, no pino haverá uma onda quadrada com o duty cycle (ciclo de trabalho) especificado até a próxima chamada de analogWrite() (ou uma chamada de digitalRead() ou digitalWrite() no mesmo pino). A frequência do sinal PWM na maioria dos pinos é aproximadamente 490 Hz. No Uno e placas similares, pinos 5 e 6 usam uma frequência de aproximadamente 980 Hz.

Na maioria das placas Arduino (as placas com o ATmega168 ou ATmega328), essa função funciona nos pinos 3, 5, 6, 9, 10, e 11. No Arduino Mega, essa funciona nos pinos 2 a 13 e 44 a 46. Placas mais antigas com o ATmega8 suportam analogWrite() apenas nos pinos 9, 10, and 11.

O Arduino DUE suporta analogWrite() nos pinos 2 a 13, mais pinos DAC0 e DAC1. Diferente dos pinos PWM, DAC0 e DAC1 são conversores Digital-Analógicos, e saídas analógicas legítimas.

Você não precisa chamar pinMode() para configurar um pino como saída antes de chamar analogWrite().

A função analogWrite() nada tem a ver com os pinos analógicos ou a função analogRead().

Sintaxe

analogWrite(pino, valor)

Parâmetros

  • pino: o pino escolhido do Arduino. Tipos de dados permitidos: int.
  • valor: o duty cycle: entre 0 (sempre desligado) and 255 (sempre ligado). Tipos de dados permitidos: int

Retorna

Nada

Código de Exemplo

Controla a saída para um LED proporcionalmente a um valor lido de um potenciômetro.

int ledPin = 9; // LED conectado ao pino digital 9 int analogPin = 3; // potenciômetro conectado ao pino analógico 3 int val = 0; // variável para guradar o valor lido void setup() { pinMode(ledPin, OUTPUT); // configura o pino como saída } void loop() { val = analogRead(analogPin); // lê o pino de entrada analógica analogWrite(ledPin, val / 4); // analogRead retorna valores de 0 a 1023, analogWrite recebe de 0 a 255 }

※ Notas e Advertências:

As ondas PWM generadas nos pinos 5 e 6 terão duty cycles maiores que o esperado. Isso acontece porque ocorrem interações com as funções millis() e delay(), as quais compartilham o mesmo timer (temporizador) interno usado para gerar essas saídas PWM. Isso será constatado principalmente em duty-cycle baixos (ex. 0 - 10) e podem resultar em um valor de 0 não desligando completamente a saída nos pinos 5 e 6.

Ver Também

Please note: These are affiliate links. If you buy the components through these links, We may get a commission at no extra cost to you. We appreciate it.