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.

Hardware Required

1×Arduino UNO or Genuino UNO
1×Potentiometer
1×LED
1×220 ohm resistor
1×Breadboard
5×Jumper Wires
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.

Wiring Diagram

Arduino Rotary Potentiometer LED Wiring Diagram

Image is developed using Fritzing. Click to enlarge image

Arduino Code

int ledPin = 3; // LED conectado ao pino digital 3 int analogPin = A0; // potenciômetro conectado ao pino analógico A0 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 }

For more detailed instruction, see Arduino - Potentiometer fade LED

※ 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.
  • The analogRead() and analogWrite() functions do NOT read and write the same thing. analogRead() function reads the analog value which is converted from the voltage. analogWrite() function writes PWM signal. If you use the analogWrite() function first, and then use analogRead() function to read the value on the same pin, the read value is diferent from the wrote value. In other word, analogRead() function uses ADC (Analog to Digital) converter, but analogWrite() function does NOT use DAC (Digital to Analog) converter.
  • The analog input pins can be used as digital pins, referred to as A0, A1, etc. The exception is the Arduino Nano, Pro Mini, and Mini's A6 and A7 pins, which can only be used as analog inputs.
void setup() { pinMode(A5, OUTPUT); // sets the pin as output } void loop() { for(int i = 0; i < 255; i++) { analogWrite(A5, i); delay(50); } }

Ver Também

※ OUR MESSAGES

  • We are AVAILABLE for HIRE. See how to hire us to build your project
  • Any suggestion, correction, and translation? please email us at ArduinoGetStarted@gmail.com, We appreciate it
  • We mainly keep improving the references in English. See English version of this page for the latest update.