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.
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.
Example
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: ");
// 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);
}
buen dia:
ResponderEliminarque libreria o codigo podria utilizar para simular la misma funcion en un arduino mega?