analogWrite()
Escribe un valor analógico (onda PWM) en un pin[1]. Se puede usar para encender un LED a diferentes niveles de brillo o para conducir un motor a varias velocidades.
Después de una llamada a analogWrite(), el pin generará una onda cuadrada constante del ciclo de trabajo especificado hasta la próxima 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 los tableros Uno y similares, los pines 5 y 6 tienen una frecuencia de aproximadamente 980 Hz.
En la mayoría de las placas Arduino (aquellas con el ATmega168 o ATmega328P), esta función funciona en los pines 3, 5, 6, 9, 10 y 11. En el Arduino Mega, funciona en los pines 2 - 13 y 44 - 46. Arduino más antiguo Las placas con un soporte ATmega8 solo analogWrite()en los pines 9, 10 y 11.
El Arduino DUE es compatible analogWrite() con los pines 2 a 13, más los pines DAC0 y DAC1. A diferencia de los pines PWM, DAC0 y DAC1 son convertidores de digital a analógico, y actúan como verdaderas salidas analógicas.
No es necesario llamar pinMode() para establecer el pin como una 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
Los parámetros que necesita la función son:
- pin El pin a escribir, tiene que se uno tipo PWM que se identifica con (~). Valor del pin debe ser
int. - value El ciclo de trabajo: entre 0 (siempre desactivado) y 255 (siempre activado). Tipos de datos permitidos: int
Retorna
Esta función retorna un parámetro.
Código ejemplo
// Paso 1
int ledPin = 9;
int analogPin = 3;
int val = 0;
// Paso 2
void setup() {
pinMode(ledPin, OUTPUT);
}
// Paso 3
void loop() {
val = analogRead(analogPin);
analogWrite(ledPin, val / 4);
}
- Declaramos las variables para el led y el pin análogo que vamos a usar.
- Declaramos como salida el pin del led.
- Leemos el valor del pin analógico, en la variable
val, lo dividimos sobre 4 ya que el valor que retornaanalogRead()es de 0 a 1024, y lo que necesitamos es de 0 a 255. Usamos la instrucciónanalogWrite()para escribir el valor.
Ver también
Referencias
[1] Arduino , https://www.arduino.cc/reference/en/language/functions/analog-io/analogwrite/ Consultado febrero 2019