analogWriteResolution()

Descripción

analogWriteResolution() es una extensión de Analog API para los Arduino Due y Zero.

analogWriteResolution() configura la resolución de la función analogWrite(). Esta resolución es, por defecto, de 8 bits (valores entre 0 y 255) para compatibilidad con las placas basadas en AVR.

El Due tiene las siguientes capacidades de hardware:

  • 12 pines que, por defecto, son PWM de 8-bit, al igual que las placas basadas en AVR. Esta resolución se puede cambia a 12-bit .
  • 2 pins con DAC (Convertidoa Digital a Analógico) de 12-bit

Cambiando la resolución de escritura a 12, se puede utilizar analogWrite() con valores entre 0 y 4095 para explotar la resolución completa del DAC o para ajustar la señal de PWM sin darse la vuelta (rolling over).

ElZero tiene las siguientes capacidades hardware:

  • 10 pines que, por defecto, son PWM de 8-bit, igual que las placas basadas en AVR. Esta resolución se puede cambiar a 12-bit.
  • 1 pin conDAC (Convertidor Digital a Analógico) de 10-bit .

Cambiando la resolución de escritura a 10, se puede utilizar analogWrite() con valores entre 0 y 1023 para explotar la resolución completa del DAC

Sintaxis

analogWriteResolution(bits)

Parámetros

  • bits: determina la resolución (en bits) de los valores utilizados en la función analogWrite(). El valor puede oscilar entre 1 y 32. Si se selecciona una resolución más alta o más baja que las capacidades del hardware de la placa, el valor utilizado en analogWrite() será truncado si es demasiado alto o rellenado con ceros si es demasiado bajo. Véase la nota a continuación para más detalles.

Retornos

  • Ninguno.

Ejemplo

void setup() { // abre la conexión serie Serial.begin(9600); // configura los pines digitales como salidas pinMode(11, OUTPUT); pinMode(12, OUTPUT); pinMode(13, OUTPUT); } void loop() { // lee la entrada A0 y la mapea al pin PWM // con un LED conectado int sensorVal = analogRead(A0); Serial.print("Analog Read) : "); Serial.print(sensorVal); // la resolución PWM por defecto analogWriteResolution(8); analogWrite(11, map(sensorVal, 0, 1023, 0 , 255)); Serial.print(" , valor PWM de 8-bit: "); Serial.print(map(sensorVal, 0, 1023, 0 , 255)); // cambia la resolución PWM a 12 bits // la resolución de 12 bit solo es soportada // por el Due analogWriteResolution(12); analogWrite(12, map(sensorVal, 0, 1023, 0, 4095)); Serial.print(" , 12-bit PWM value : "); Serial.print(map(sensorVal, 0, 1023, 0, 4095)); // cambia la resolución PWM a 4 bits analogWriteResolution(4); analogWrite(13, map(sensorVal, 0, 1023, 0, 127)); Serial.print(", 4-bit PWM value : "); Serial.println(map(sensorVal, 0, 1023, 0, 127)); delay(5); }

※ Nota:

  • Si se establece el valor analogWriteResolution() a un valor más alto que las capacidades de la placa, el Arduino, descartará los bits adicionales. Por ejemplo: el uso de la Due con analogWriteResolution(16) en un pin DAC de 12 bits, sólo los primeros 12 bits de los valores pasados a analogWrite() se utilizan y se descartarán los últimos 4 bits.
  • Si se establece el valor analogWriteResolution() a un valor inferior a las capacidades de la placa, las partes que faltan serán rellenadas con ceros para completar el tamaño del hardware requerido. Por ejemplo: el uso de la Due con analogWriteResolution(8) en un pin DAC de 12 bits, el Arduino sumará 4 bits cero al valor de 8 bits utilizado en analogWrite() para obtener los 12 bits requeridos.

ARDUINO BUY RECOMMENDATION

Arduino UNO R3
Arduino Starter Kit
Disclosure: Some links in this section are Amazon affiliate links. If you make a purchase through these links, we may earn a commission at no extra cost to you.
Additionally, some links direct to products from our own brand, DIYables.

※ OUR MESSAGES