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