Esta página também está disponível em outros 1 idiomas.
Mudar idioma 

analogWriteResolution()

[Zero, Due & MKR Family]

Descrição

analogWriteResolution() é uma extensão da API Analog para os Arduinos Due, Zero e MKR.

analogWriteResolution() configura a resolução da função analogWrite(). O padrão é 8 bits (valores entre 0-255) para compatibilidade com placas baseadas em microcontroladores AVR.

O Due possui as seguintes capacidades em seu hardware:

  • 12 pinos com PWM de 8-bit por padrão, como as placas baseadas em AVR. Estes podem ser mudados para resolução 12-bits.

  • 2 pinos com DAC 12-bit (Do Inglês, Digital-to-Analog Converter).

Ao configurar a resolução para 12 bits, você pode usar analogWrite() com valores entre 0 e 4095 para tirar vantagem da resolução completa do DAC ou do sinal PWM.

O Zero possui as seguintes capacidades em seu hardware:

  • 10 pinos com PWM de 8-bit por padrão, como as placas baseadas em AVR. Estes podem ser mudados para resolução 12-bits.

  • 1 pinos com DAC 12-bit (Do Inglês, Digital-to-Analog Converter).

Ao configurar a resolução para 10 bits, você pode usar analogWrite() com valores entre 0 e 1023 para tirar vantagem da resolução completa do DAC.

A família MKR de placas possui as seguintes capacidades em seu hardware:

  • 4 pinos com PWM de 8-bit por padrão, como as placas baseadas em AVR. Estes podem ser mudados para resolução 12-bits.

  • 1 pino com DAC 10-bit (Do Inglês, Digital-to-Analog Converter).

Ao configurar a resolução para 12 bits, você pode usar analogWrite() com valores entre 0 e 4095 para sinais PWM; Use 10 bits no pino do conversor digital-analógico para tira vantagem da resoulção completa de 1024 valores do DAC.

Sintaxe

analogWriteResolution(bits)

Parâmetros

bits: determina a resolução (em bits) dos valores usados na função analogWrite(). Se você escolher uma resolução maior ou menor que a capacidade do hardware da sua placa, o valor usado em analogWrite() será ou truncado se é muito grande ou completo com preenchido com zeros se for muito pequeno. Veja a nota abaixo para detalhes.

Retorna

Nada

Código de Exemplo

O código configura a resolução da saída PWM para diferentes valores.

void setup() {
  // inicia a porta serial
  Serial.begin(9600);
  // configura os pinos digitais 11 a 13 como saída
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}

void loop() {
  // Lê o valor analógico em A0 e mapeia-o para
  // um pino PWM com um LED conectado
  int sensorVal = analogRead(A0);
  Serial.print("Analog Read) : ");
  Serial.print(sensorVal);

  // a resolução PWM padrão
  analogWriteResolution(8);
  analogWrite(11, map(sensorVal, 0, 1023, 0, 255));
  Serial.print(" , 8-bit PWM value : ");
  Serial.print(map(sensorVal, 0, 1023, 0, 255));

  // Muda a reolução PWM para 12 bits
  // A resolução completa de 12 bits é suportada
  // apenas no 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));

  // Muda a reolução PWM para 4 bits
  analogWriteResolution(4);
  analogWrite(13, map(sensorVal, 0, 1023, 0, 15));
  Serial.print(", 4-bit PWM value : ");
  Serial.println(map(sensorVal, 0, 1023, 0, 15));

  delay(5);
}

Notas e Advertências

Se você configurar analogWriteResolution() com um valor maior que a capacidade de sua placa, o Arduino irá descartar os bits extras. Por exemplo: ao configurar o Due com analogWriteResolution(16) em um pino DAC 12-bit, apenas os primeiros 12 bits dos valores passados para analogWrite() serão usados e os outros 4 bits serão descartados.

Se você configurar analogWriteResolution() com um valor menor que a capacidade de sua placa, os bits ausentes serão completos com zeros para preencher o tamanho requerido pelo hardware. Por exemplo: ao configurar o Due com analogWriteResolution(8) em um pino DAC 12-bit, o Arduino irá adicionar 4 bits zero a esquerda do valor 8-bit usado em analogWrite() para obter os 12 bits requeridos.