analogWrite

Descripción

Escribe un valor en un pin analógico (onda PWM). Se puede utilizar para encender un LED con luminosidad variable o accionar un motor a diferentes velocidades. Después de llamar a analogWrite (), el pin va a generar una onda cuadrada constante del ciclo de trabajo especificado hasta la siguiente llamada a analogWrite () (o una llamada a digitalRead () o digitalWrite () en el mismo pin). La frecuencia de la señal PWM en la mayoría de los pines es de aproximadamente 490 Hz. En las placas Uno y similares, los pines 5 y 6 tienen una frecuencia de aproximadamente 980 Hz. Los pines 3 y 11 en el Leonardo también se ejecutan a 980 Hz.
En la mayoría de las placas Arduino (aquellos con los ATmega168 o ATmega328), esta función se puede utilizar en los pines 3, 5, 6, 9, 10, y 11. En el Arduino Mega, funciona en los pines 2 a 13 y 44 a 46. Las placas Arduino más antiguas con un ATmega8 sólo admiten analogWrite () en los pines 9, 10 y 11.
En el Arduino Due analogWrite ()  funciona en los pines 2 a 13, más en los pines DAC0 y DAC1. A diferencia de los pines PWM, DAC0 y DAC1 son convertidores Digitales a Analógicos, y actúan como verdaderas salidas analógicas.
No es necesario llamar a pinMode () para configurar el pin como salida antes de llamar analogWrite ().
La función analogWrite no tiene nada que ver con los pines analógicos o la función analogRead.

Sintaxis

analogWrite(pin, value)

Parámetros

pin: el pin a escribir.
value: el ciclo de trabajo: entre 0 (siemprea apagado) y255 (siempre encendido).

Retornos

Ninguno

Notas y Problemas conocidos

Las salidas PWM generadas en los pines 5 y 6 tendrán ciclos de trabajo más altos de lo esperado. Esto es debido a las interacciones con las funciones  millis () y delay (), que comparten el mismo temporizador interno utilizado para generar dichas salidas PWM. Esto se notará sobre todo en entornos de pequeño ciclo de trabajo (por ejemplo 0 - 10) y puede dar lugar a que un valor de 0 apague completamente la salida en los pines 5 y 6.

Ejemplo

Establece la salida de un LED para que sea proporcional al valor leido de un potenciómetro.

int ledPin = 9;      // LED conectado al pin 9

int analogPin = 3;   // potenciómetro conectado al pin analógico 3

int val = 0;         // variable para almacenar el valor leido

void setup()

{ pinMode(ledPin, OUTPUT);   // configura el pin como salida}

void loop(){val = analogRead(analogPin);   // lee el pin de entradaanalogWrite(ledPin, val / 4);  // analogRead valores desde 0 a1023, analogWrite valores desde 0 a 255}

1 comentario: